spiegel-keyman/ios/samples/build_common.sh
2019-09-05 09:33:30 +07:00

130 lines
3.4 KiB
Bash
Executable file

#!/bin/sh
# Please note that this build script (understandably) assumes that it is running on Mac OS X.
if [[ "${OSTYPE}" == *"darwin" ]]; then
echo "This build script will only run in a Mac environment."
exit 1
fi
if [ -z "$TARGET" ]; then
exit 1
fi
display_usage ( ) {
echo "build.sh [-no-update] | [-lib-build] | [-lib-ignore] | [-clean]"
echo
echo " -clean Removes all previously-existing build products for this project before building."
echo " -no-update If an in-place copy of KeymanEngine.framework exists, does not seek out an updated copy."
echo " -lib-build Actively rebuilds KMEI before copying its build products to project resources."
echo " -lib-nobuild Prevents the build script from building KeymanEngine under any circumstances."
echo " -no-codesign Performs the build without code signing."
echo " -debug Sets the configuration to debug mode instead of release."
echo
echo " If no settings are specified this script will grab a copy of the most recent build of KeymanEngine,"
echo " performing an initial build of it if necessary."
exit 1
}
assert ( ) {
if ! [ -f $1 ]; then
echo "Build failed: missing $1"
exit 1
fi
}
verify_KMEI ( ) {
KMEI_BUILD_EXISTS=true
[ -d "$KEYMAN_ENGINE_FRAMEWORK_SRC" ] || KMEI_BUILD_EXISTS=false
}
KMEI_BUILD_DIR="../../"
BUILD_FOLDER=build
do_clean ( ) {
rm -rf $BUILD_FOLDER
}
### START OF THE BUILD ###
DO_UPDATE=true
FORCE_KMEI_BUILD=false
ALLOW_KMEI_BUILD=true
CODE_SIGN=true
CONFIG=Release
KMEI_FLAGS=
while [[ $# -gt 0 ]] ; do
key="$1"
case $key in
-no-update)
DO_UPDATE=false
ALLOW_KMEI_BUILD=false
;;
-lib-build)
FORCE_KMEI_BUILD=true
;;
-lib-nobuild)
ALLOW_KMEI_BUILD=false
;;
-no-codesign)
CODE_SIGN=false
KMEI_FLAGS="$KMEI_FLAGS -no-codesign"
;;
-h|-?)
display_usage
;;
-clean)
do_clean
KMEI_FLAGS="$KMEI_FLAGS -clean"
FORCE_KMEI_BUILD=true
;;
-debug)
CONFIG=Debug
KMEI_FLAGS="$KMEI_FLAGS -debug"
;;
esac
shift
done
KEYMAN_ENGINE_FRAMEWORK_SRC="../../build/Build/Products/$CONFIG-universal/KeymanEngine.framework"
KEYMAN_ENGINE_FRAMEWORK_DST=./
if [ $DO_UPDATE = true ]; then
# Does a prior build of KMEI exist?
verify_KMEI
if [ $ALLOW_KMEI_BUILD = true ] && [ $FORCE_KMEI_BUILD = false ] && [ $KMEI_BUILD_EXISTS = false ]; then
echo "Previous KeymanEngine build information is unavailable."
FORCE_KMEI_BUILD=true
fi
if [ $FORCE_KMEI_BUILD = true ]; then
echo "Building KeymanEngine..."
base_dir="$(pwd)"
cd $KMEI_BUILD_DIR
./kmbuild.sh -only-framework $KMEI_FLAGS
cd $base_dir
fi
verify_KMEI
if ! [ $KMEI_BUILD_EXISTS ]; then
echo "Build failed: could not build required KeymanEngine resources."
exit 1
fi
# Copy resources.
cp -Rf "$KEYMAN_ENGINE_FRAMEWORK_SRC" "$KEYMAN_ENGINE_FRAMEWORK_DST"
fi
if [ $CODE_SIGN = true ]; then
xcodebuild -quiet -target "$TARGET" -config "$CONFIG"
else
xcodebuild -quiet CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED="NO" CODE_SIGNING_ENTITLEMENTS="" -target "$TARGET" -config "$CONFIG"
fi
if [ $? = 0 ]; then
echo "Build complete."
fi