another.im-ios/rust/build-rust.sh

68 lines
2.2 KiB
Bash
Raw Normal View History

2024-11-18 14:53:52 +00:00
#!/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