Support for creating .xcframework

* `make macOS` builds a universal framework
* `make xcframework` builds an .xcframework containing frameworks for macOS (universal), iOS, and iOS Simulator
* Addresses a compiler warning
This commit is contained in:
Evan Olcott
2020-11-29 17:49:18 -06:00
parent 2eed94a90b
commit abbe7957c7
4 changed files with 45 additions and 9 deletions

38
dist.sh
View File

@@ -181,18 +181,44 @@ macos()
cd $XCODE_MACOS_PROJ_DIR
# Framework
xcodebuild -target zt -configuration "$UPPERCASE_CONFIG" -sdk "macosx"
# NOTE: We build the static and dynamic editions in host()
# Static library (libzt.a)
#xcodebuild -target zt-static -configuration "$UPPERCASE_CONFIG" -sdk "macosx"
# Dynamic library (libzt.dylib)
#xcodebuild -target zt-shared -configuration "$UPPERCASE_CONFIG" -sdk "macosx"
cd -
OUTPUT_DIR=$(pwd)/lib/$1/macos-$(uname -m)
OUTPUT_DIR=$(pwd)/lib/$1/macos-universal
mkdir -p $OUTPUT_DIR
rm -rf $OUTPUT_DIR/zt.framework # Remove prior to move to prevent error
mv $XCODE_MACOS_PROJ_DIR/$UPPERCASE_CONFIG/* $OUTPUT_DIR
}
# Build xcframework
xcframework()
{
if [[ ! $OSNAME = *"darwin"* ]]; then
exit 0
fi
generate_projects # if needed
echo "Executing task: " ${FUNCNAME[ 0 ]} "(" $1 ")"
UPPERCASE_CONFIG="$(tr '[:lower:]' '[:upper:]' <<< ${1:0:1})${1:1}"
OUTPUT_DIR=$(pwd)/lib/$1
cd $XCODE_MACOS_PROJ_DIR
xcodebuild -target zt -configuration "$UPPERCASE_CONFIG" -sdk "macosx"
cd $XCODE_IOS_PROJ_DIR
xcodebuild -arch arm64 -target zt -configuration "$UPPERCASE_CONFIG" -sdk "iphoneos"
cd $XCODE_IOS_SIMULATOR_PROJ_DIR
xcodebuild -target zt -configuration "$UPPERCASE_CONFIG" -sdk "iphonesimulator"
mkdir -p $OUTPUT_DIR
rm -rf $OUTPUT_DIR/zt.xcframework # Remove prior to move to prevent error
xcodebuild -create-xcframework \
-framework $XCODE_MACOS_PROJ_DIR/$UPPERCASE_CONFIG/zt.framework \
-framework $XCODE_IOS_PROJ_DIR/$UPPERCASE_CONFIG-iphoneos/zt.framework \
-framework $XCODE_IOS_SIMULATOR_PROJ_DIR/$UPPERCASE_CONFIG-iphonesimulator/zt.framework \
-output $OUTPUT_DIR/zt.xcframework
}
# Build Java JAR for current host (uses JNI)
host_jar()
{