Created
November 13, 2017 12:46
-
-
Save mkeremkeskin/3889354f73ec80763827fb593c40a738 to your computer and use it in GitHub Desktop.
external build script for building framework for all architectures and devices
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set -e | |
set +u | |
# Avoid recursively calling this script. | |
if [[ $SF_MASTER_SCRIPT_RUNNING ]] | |
then | |
exit 0 | |
fi | |
set -u | |
export SF_MASTER_SCRIPT_RUNNING=1 | |
# Constants | |
SF_TARGET_NAME=${PROJECT_NAME} | |
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal | |
# Take build target | |
if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]] | |
then | |
SF_SDK_PLATFORM=${BASH_REMATCH[1]} | |
else | |
echo "Could not find platform name from SDK_NAME: $SDK_NAME" | |
exit 1 | |
fi | |
if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] | |
then | |
echo "Please choose iPhone simulator as the build target." | |
exit 1 | |
fi | |
IPHONE_DEVICE_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos | |
# Build the other (non-simulator) platform | |
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION | |
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION | |
# Copy the framework structure to the universal folder (clean it first) | |
rm -rf "${UNIVERSAL_OUTPUTFOLDER}" | |
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" | |
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" | |
# Smash them together to combine all architectures | |
lipo -create "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/arm64/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/armv7/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment