mirror of
				https://gitlab.com/veilid/veilid.git
				synced 2025-10-31 03:19:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| set -e
 | |
| echo Running veilid-flutter rust iOS build script
 | |
| 
 | |
| # Setup varaiables
 | |
| SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
 | |
| FLUTTER_DIR=$(dirname `which flutter`)
 | |
| HOMEBREW_DIR=$(dirname `which brew`)
 | |
| CARGO_DIR=$(dirname `which cargo`)
 | |
| CARGO_MANIFEST_PATH=$(python3 -c "import os; print(os.path.realpath(\"$SCRIPTDIR/Cargo.toml\"))")
 | |
| TARGET_DIR=$(dirname `cargo locate-project --message-format plain`)/target
 | |
| 
 | |
| # Configure outputs
 | |
| OUTPUT_FILENAME=libveilid_flutter.a
 | |
| OUTPUT_DIR=$TARGET_DIR/ios_lib
 | |
| 
 | |
| # Get Rust configurations from xcode configurations
 | |
| if [ "$CONFIGURATION" == "Debug" ]; then 
 | |
|     EXTRA_CARGO_OPTIONS="$@"
 | |
|     RUST_CONFIGURATION="debug"
 | |
| else
 | |
|     EXTRA_CARGO_OPTIONS="$@ --release"
 | |
|     RUST_CONFIGURATION="release"
 | |
| fi
 | |
| 
 | |
| # Build all the matching architectures for the xcode configurations
 | |
| ARCHS=${ARCHS:=arm64}
 | |
| echo ARCHS: $ARCHS
 | |
| LIPO_LIST=""
 | |
| for arch in $ARCHS
 | |
| do
 | |
|     if [ "$arch" == "arm64" ]; then
 | |
|         echo arm64
 | |
|         CARGO_TARGET=aarch64-apple-ios
 | |
|         #CARGO_TOOLCHAIN=+ios-arm64-1.57.0
 | |
|         CARGO_TOOLCHAIN=
 | |
|     elif [ "$arch" == "x86_64" ]; then
 | |
|         echo x86_64
 | |
|         CARGO_TARGET=x86_64-apple-ios
 | |
|         CARGO_TOOLCHAIN=
 | |
|     else
 | |
|         echo Unsupported ARCH: $arch
 | |
|         continue
 | |
|     fi
 | |
| 
 | |
|     # Cargo build
 | |
|     env -i PATH=/usr/bin:/bin:/usr/local/bin:$HOMEBREW_DIR:$FLUTTER_DIR:$CARGO_DIR HOME="$HOME" USER="$USER" cargo $CARGO_TOOLCHAIN build $EXTRA_CARGO_OPTIONS --target $CARGO_TARGET --manifest-path $CARGO_MANIFEST_PATH
 | |
| 
 | |
|     # Add output to lipo list
 | |
|     LIPO_LIST="$LIPO_LIST $TARGET_DIR/$CARGO_TARGET/$RUST_CONFIGURATION/$OUTPUT_FILENAME"
 | |
| done
 | |
| 
 | |
| # Lipo the architectures together
 | |
| mkdir -p $OUTPUT_DIR
 | |
| lipo -output "$OUTPUT_DIR/$OUTPUT_FILENAME" -create $LIPO_LIST
 | 
