veilid/scripts/ios_build.sh

77 lines
2.2 KiB
Bash
Raw Normal View History

2022-11-26 20:37:23 -06:00
#!/bin/bash
2022-11-29 11:32:05 -06:00
CARGO=`which cargo`
CARGO=${CARGO:=~/.cargo/bin/cargo}
CARGO_DIR=$(dirname $CARGO)
2022-12-01 19:38:57 -06:00
# WORKING_DIR=$1
# shift
# echo $WORKING_DIR
# pushd $WORKING_DIR >/dev/null
2022-11-29 11:32:05 -06:00
echo PWD: `pwd`
CARGO_MANIFEST_PATH=$(python3 -c "import os; import json; print(json.loads(os.popen('$CARGO locate-project').read())['root'])")
CARGO_WORKSPACE_PATH=$(python3 -c "import os; import json; print(json.loads(os.popen('$CARGO locate-project --workspace').read())['root'])")
2022-11-29 11:16:28 -06:00
TARGET_PATH=$(python3 -c "import os; print(os.path.realpath(\"$CARGO_WORKSPACE_PATH/../target\"))")
2022-11-27 21:33:41 -06:00
PACKAGE_NAME=$1
shift
2022-11-26 20:37:23 -06:00
if [ "$CONFIGURATION" == "Debug" ]; then
EXTRA_CARGO_OPTIONS="$@"
2022-11-27 21:33:41 -06:00
BUILD_MODE="debug"
2022-11-26 20:37:23 -06:00
else
EXTRA_CARGO_OPTIONS="$@ --release"
2022-11-27 21:33:41 -06:00
BUILD_MODE="release"
2022-11-26 20:37:23 -06:00
fi
ARCHS=${ARCHS:=arm64}
2022-11-27 21:33:41 -06:00
if [ "$PLATFORM_NAME" == "iphonesimulator" ]; then
LIPO_OUT_NAME="lipo-ios-sim"
else
LIPO_OUT_NAME="lipo-ios"
fi
2022-11-26 20:37:23 -06:00
for arch in $ARCHS
do
if [ "$arch" == "arm64" ]; then
echo arm64
2022-11-27 21:33:41 -06:00
if [ "$PLATFORM_NAME" == "iphonesimulator" ]; then
CARGO_TARGET=aarch64-apple-ios-sim
else
CARGO_TARGET=aarch64-apple-ios
fi
2022-11-26 20:37:23 -06:00
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
2022-11-29 11:32:05 -06:00
2022-11-26 20:37:23 -06:00
# Choose arm64 brew for unit tests by default if we are on M1
if [ -f /opt/homebrew/bin/brew ]; then
HOMEBREW_DIR=/opt/homebrew/bin
elif [ -f /usr/local/bin/brew ]; then
HOMEBREW_DIR=/usr/local/bin
else
HOMEBREW_DIR=$(dirname `which brew`)
fi
env -i PATH=/usr/bin:/bin:$HOMEBREW_DIR:$CARGO_DIR HOME="$HOME" USER="$USER" cargo $CARGO_TOOLCHAIN build $EXTRA_CARGO_OPTIONS --target $CARGO_TARGET --manifest-path $CARGO_MANIFEST_PATH
2022-11-27 21:33:41 -06:00
LIPOS="$LIPOS $TARGET_PATH/$CARGO_TARGET/$BUILD_MODE/lib$PACKAGE_NAME.a"
2022-11-26 20:37:23 -06:00
done
2022-12-03 11:36:06 -06:00
# Make lipo build
2022-11-27 21:33:41 -06:00
mkdir -p "$TARGET_PATH/$LIPO_OUT_NAME/$BUILD_MODE/"
lipo $LIPOS -create -output "$TARGET_PATH/$LIPO_OUT_NAME/$BUILD_MODE/lib$PACKAGE_NAME.a"
2022-12-03 11:36:06 -06:00
# Make most recent dylib available without build mode for flutter
cp "$TARGET_PATH/$LIPO_OUT_NAME/$BUILD_MODE/lib$PACKAGE_NAME.a" "$TARGET_PATH/$LIPO_OUT_NAME/lib$PACKAGE_NAME.a"