#! /bin/bash # a hacky script to make all the various ios targets. # once we have something consistently working we'll streamline all of this. BUILD_DIR=./build DIST_PACKAGE_DIR=./dist function createXcframework() { plist=$(cat << EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> <string>crsqlite</string> <key>CFBundleIdentifier</key> <string>io.vlcn.crsqlite</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleSignature</key> <string>????</string> </dict> </plist> EOF ) printf "\n\n\t\t===================== create ios device framework =====================\n\n" mkdir -p "${BUILD_DIR}/ios-arm64/crsqlite.framework" echo "${plist}" > "${BUILD_DIR}/ios-arm64/crsqlite.framework/Info.plist" cp -f "./dist-ios/crsqlite-aarch64-apple-ios.dylib" "${BUILD_DIR}/ios-arm64/crsqlite.framework/crsqlite" install_name_tool -id "@rpath/crsqlite.framework/crsqlite" "${BUILD_DIR}/ios-arm64/crsqlite.framework/crsqlite" printf "\n\n\t\t===================== create ios simulator framework =====================\n\n" mkdir -p "${BUILD_DIR}/ios-arm64_x86_64-simulator/crsqlite.framework" echo "${plist}" > "${BUILD_DIR}/ios-arm64_x86_64-simulator/crsqlite.framework/Info.plist" cp -p "./dist-ios-sim/crsqlite-universal-ios-sim.dylib" "${BUILD_DIR}/ios-arm64_x86_64-simulator/crsqlite.framework/crsqlite" install_name_tool -id "@rpath/crsqlite.framework/crsqlite" "${BUILD_DIR}/ios-arm64_x86_64-simulator/crsqlite.framework/crsqlite" printf "\n\n\t\t===================== create ios xcframework =====================\n\n" rm -rf "${BUILD_DIR}/crsqlite.xcframework" xcodebuild -create-xcframework -framework "${BUILD_DIR}/ios-arm64/crsqlite.framework" -framework "${BUILD_DIR}/ios-arm64_x86_64-simulator/crsqlite.framework" -output "${BUILD_DIR}/crsqlite.xcframework" mkdir -p ${DIST_PACKAGE_DIR} cp -Rf "${BUILD_DIR}/crsqlite.xcframework" "${DIST_PACKAGE_DIR}/crsqlite.xcframework" cd ${DIST_PACKAGE_DIR} tar -czvf crsqlite-ios-dylib.xcframework.tar.gz crsqlite.xcframework rm -rf ${BUILD_DIR} } # Make all the non-simulator libs # Package into a universal ios lib mkdir -p ./dist-ios # TODO: fix things up to not require a clean before each target. make clean export IOS_TARGET=aarch64-apple-ios; make loadable cp ./dist/crsqlite.dylib ./dist-ios/crsqlite-aarch64-apple-ios.dylib mkdir -p ./dist-ios-sim make clean export IOS_TARGET=aarch64-apple-ios-sim; make loadable cp ./dist/crsqlite.dylib ./dist-ios-sim/crsqlite-aarch64-apple-ios-sim.dylib make clean export IOS_TARGET=x86_64-apple-ios; make loadable cp ./dist/crsqlite.dylib ./dist-ios-sim/crsqlite-x86_64-apple-ios-sim.dylib cd ./dist-ios-sim lipo crsqlite-aarch64-apple-ios-sim.dylib crsqlite-x86_64-apple-ios-sim.dylib -create -output crsqlite-universal-ios-sim.dylib cd .. createXcframework