107 lines
3.6 KiB
Bash
Executable File
107 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
# set -x
|
|
|
|
XC_USER_DEFINED_VARS=""
|
|
|
|
while getopts ":s" option; do
|
|
case $option in
|
|
s) # Build XCFramework as static instead of dynamic
|
|
XC_USER_DEFINED_VARS="MACH_O_TYPE=staticlib"
|
|
esac
|
|
done
|
|
|
|
BASE_PWD="$PWD"
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
FWNAME="OpenSSL"
|
|
OUTPUT_DIR=$( mktemp -d )
|
|
COMMON_SETUP=" -project ${SCRIPT_DIR}/../${FWNAME}.xcodeproj -configuration Release -quiet BUILD_LIBRARY_FOR_DISTRIBUTION=YES $XC_USER_DEFINED_VARS"
|
|
|
|
# macOS
|
|
DERIVED_DATA_PATH=$( mktemp -d )
|
|
xcrun xcodebuild build \
|
|
$COMMON_SETUP \
|
|
-scheme "${FWNAME} (macOS)" \
|
|
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
|
-destination 'generic/platform=macOS'
|
|
|
|
mkdir -p "${OUTPUT_DIR}/macosx"
|
|
rm -rf "${OUTPUT_DIR}/macosx/${FWNAME}.framework"
|
|
ditto "${DERIVED_DATA_PATH}/Build/Products/Release/${FWNAME}.framework" "${OUTPUT_DIR}/macosx/${FWNAME}.framework"
|
|
rm -rf "${DERIVED_DATA_PATH}"
|
|
|
|
# macOS Catalyst
|
|
DERIVED_DATA_PATH=$( mktemp -d )
|
|
xcrun xcodebuild build \
|
|
$COMMON_SETUP \
|
|
-scheme "${FWNAME} (Catalyst)" \
|
|
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
|
-destination 'generic/platform=macOS,variant=Mac Catalyst'
|
|
|
|
mkdir -p "${OUTPUT_DIR}/macosx_catalyst"
|
|
rm -rf "${OUTPUT_DIR}/macosx_catalyst/${FWNAME}.framework"
|
|
ditto "${DERIVED_DATA_PATH}/Build/Products/Release-maccatalyst/${FWNAME}.framework" "${OUTPUT_DIR}/macosx_catalyst/${FWNAME}.framework"
|
|
rm -rf "${DERIVED_DATA_PATH}"
|
|
|
|
# iOS
|
|
DERIVED_DATA_PATH=$( mktemp -d )
|
|
xcrun xcodebuild build \
|
|
$COMMON_SETUP \
|
|
-scheme "${FWNAME} (iOS)" \
|
|
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
|
-destination 'generic/platform=iOS'
|
|
|
|
rm -rf "${OUTPUT_DIR}/iphoneos"
|
|
mkdir -p "${OUTPUT_DIR}/iphoneos"
|
|
ditto "${DERIVED_DATA_PATH}/Build/Products/Release-iphoneos/${FWNAME}.framework" "${OUTPUT_DIR}/iphoneos/${FWNAME}.framework"
|
|
rm -rf "${DERIVED_DATA_PATH}"
|
|
|
|
# iOS Simulator
|
|
DERIVED_DATA_PATH=$( mktemp -d )
|
|
xcrun xcodebuild build \
|
|
$COMMON_SETUP \
|
|
-scheme "${FWNAME} (iOS Simulator)" \
|
|
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
|
-destination 'generic/platform=iOS Simulator'
|
|
|
|
rm -rf "${OUTPUT_DIR}/iphonesimulator"
|
|
mkdir -p "${OUTPUT_DIR}/iphonesimulator"
|
|
ditto "${DERIVED_DATA_PATH}/Build/Products/Release-iphonesimulator/${FWNAME}.framework" "${OUTPUT_DIR}/iphonesimulator/${FWNAME}.framework"
|
|
rm -rf "${DERIVED_DATA_PATH}"
|
|
|
|
#
|
|
|
|
rm -rf "${BASE_PWD}/Frameworks/iphoneos"
|
|
mkdir -p "${BASE_PWD}/Frameworks/iphoneos"
|
|
ditto "${OUTPUT_DIR}/iphoneos/${FWNAME}.framework" "${BASE_PWD}/Frameworks/iphoneos/${FWNAME}.framework"
|
|
|
|
rm -rf "${BASE_PWD}/Frameworks/iphonesimulator"
|
|
mkdir -p "${BASE_PWD}/Frameworks/iphonesimulator"
|
|
ditto "${OUTPUT_DIR}/iphonesimulator/${FWNAME}.framework" "${BASE_PWD}/Frameworks/iphonesimulator/${FWNAME}.framework"
|
|
|
|
rm -rf "${BASE_PWD}/Frameworks/macosx"
|
|
mkdir -p "${BASE_PWD}/Frameworks/macosx"
|
|
ditto "${OUTPUT_DIR}/macosx/${FWNAME}.framework" "${BASE_PWD}/Frameworks/macosx/${FWNAME}.framework"
|
|
|
|
rm -rf "${BASE_PWD}/Frameworks/macosx_catalyst"
|
|
mkdir -p "${BASE_PWD}/Frameworks/macosx_catalyst"
|
|
ditto "${OUTPUT_DIR}/macosx_catalyst/${FWNAME}.framework" "${BASE_PWD}/Frameworks/macosx_catalyst/${FWNAME}.framework"
|
|
|
|
# XCFramework
|
|
rm -rf "${BASE_PWD}/Frameworks/${FWNAME}.xcframework"
|
|
|
|
xcrun xcodebuild -quiet -create-xcframework \
|
|
-framework "${OUTPUT_DIR}/iphoneos/${FWNAME}.framework" \
|
|
-framework "${OUTPUT_DIR}/iphonesimulator/${FWNAME}.framework" \
|
|
-framework "${OUTPUT_DIR}/macosx/${FWNAME}.framework" \
|
|
-framework "${OUTPUT_DIR}/macosx_catalyst/${FWNAME}.framework" \
|
|
-output "${BASE_PWD}/Frameworks/${FWNAME}.xcframework"
|
|
|
|
# Zip archive
|
|
pushd "${BASE_PWD}/Frameworks"
|
|
zip --symlinks -r "./${FWNAME}.xcframework.zip" "./${FWNAME}.xcframework"
|
|
popd
|
|
|
|
rm -rf "${OUTPUT_DIR}"
|