GRKOpenSSLFramework/scripts/create-frameworks.sh
2022-11-20 08:10:07 -06:00

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}"