68 lines
2.2 KiB
Bash
68 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# based on https://github.com/chinedufn/swift-bridge/tree/master/book/src/building/swift-packages
|
|
|
|
set -e
|
|
|
|
THISDIR=$(dirname $0)
|
|
cd $THISDIR
|
|
|
|
if [[ -f ~/.cargo/env ]];
|
|
then
|
|
source ~/.cargo/env
|
|
fi
|
|
|
|
echo "Installing required components"
|
|
|
|
rustup +nightly component add rust-src
|
|
cargo install swift-bridge-cli
|
|
#rustup component add rust-src --toolchain x86_64-apple-ios-macabi
|
|
#rustup component add rust-src --toolchain darwin-apple-ios-macabi
|
|
|
|
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
|
|
|
|
echo "Building stdlib for the desired platforms..."
|
|
#cargo build --target x86_64-apple-darwin
|
|
#cargo build --target aarch64-apple-darwin
|
|
cargo +nightly build --verbose -Z build-std --target x86_64-apple-ios-macabi
|
|
cargo +nightly build --verbose -Z build-std --target aarch64-apple-ios-macabi
|
|
|
|
BRIDGE_NAME=libmonal_rust_swift_bridge.a
|
|
|
|
echo "Creating catalyst target universal lib..."
|
|
mkdir -p ./target/catalyst-macos/debug
|
|
lipo \
|
|
./target/x86_64-apple-ios-macabi/debug/$BRIDGE_NAME \
|
|
./target/aarch64-apple-ios-macabi/debug/$BRIDGE_NAME \
|
|
-create -output \
|
|
./target/catalyst-macos/debug/$BRIDGE_NAME
|
|
|
|
echo "Building rust code for all targets..."
|
|
cargo build --target aarch64-apple-ios
|
|
cargo build --target x86_64-apple-ios
|
|
cargo build --target aarch64-apple-ios-sim
|
|
|
|
echo "Creating ios target universal lib..."
|
|
mkdir -p ./target/universal-ios/debug
|
|
lipo \
|
|
./target/aarch64-apple-ios-sim/debug/$BRIDGE_NAME \
|
|
./target/x86_64-apple-ios/debug/$BRIDGE_NAME \
|
|
-create -output \
|
|
./target/universal-ios/debug/$BRIDGE_NAME
|
|
|
|
echo "Creating swift package..."
|
|
swift-bridge-cli create-package \
|
|
--bridges-dir ./monal-rust-swift-bridge/generated \
|
|
--out-dir LibMonalRustSwiftBridge \
|
|
--ios target/aarch64-apple-ios/debug/$BRIDGE_NAME \
|
|
--simulator target/universal-ios/debug/$BRIDGE_NAME \
|
|
--mac-catalyst target/catalyst-macos/debug/$BRIDGE_NAME \
|
|
--name LibMonalRustSwiftBridge
|
|
|
|
# copy over our own swift files
|
|
cp -av ./monal-rust-swift-bridge/swift/* LibMonalRustSwiftBridge/Sources/LibMonalRustSwiftBridge/
|
|
|
|
# make sure all autogenerated swift to rust wrapper functions are public
|
|
# TODO: maybe fix upstream?
|
|
sed -i '' 's/^func/public func/g' LibMonalRustSwiftBridge/Sources/LibMonalRustSwiftBridge/*.swift
|