91 lines
2.8 KiB
Bash
91 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# This source code is licensed under the MIT license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
|
|
if [ "$CI" ]; then
|
|
set -x
|
|
fi
|
|
set -e
|
|
|
|
# Given a specific target, retrieve the right architecture for it
|
|
# $1 the target you want to build. Allowed values: iphoneos, iphonesimulator, catalyst, xros, xrsimulator
|
|
function get_architecture {
|
|
if [[ $1 == "iphoneos" || $1 == "xros" ]]; then
|
|
echo "arm64"
|
|
elif [[ $1 == "iphonesimulator" || $1 == "xrsimulator" ]]; then
|
|
echo "x86_64;arm64"
|
|
elif [[ $1 == "appletvos" ]]; then
|
|
echo "arm64"
|
|
elif [[ $1 == "appletvsimulator" ]]; then
|
|
echo "x86_64;arm64"
|
|
elif [[ $1 == "catalyst" ]]; then
|
|
echo "x86_64;arm64"
|
|
else
|
|
echo "Error: unknown architecture passed $1"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function get_deployment_target {
|
|
if [[ $1 == "xros" || $1 == "xrsimulator" ]]; then
|
|
echo "$(get_visionos_deployment_target)"
|
|
else # tvOS and iOS use the same deployment target
|
|
echo "$(get_ios_deployment_target)"
|
|
fi
|
|
}
|
|
|
|
# build a single framework
|
|
# $1 is the target to build
|
|
function build_framework {
|
|
if [ ! -d destroot/Library/Frameworks/universal/hermes.xcframework ]; then
|
|
deployment_target=$(get_deployment_target "$1")
|
|
|
|
architecture=$(get_architecture "$1")
|
|
|
|
build_apple_framework "$1" "$architecture" "$deployment_target"
|
|
else
|
|
echo "Skipping; Clean \"destroot\" to rebuild".
|
|
fi
|
|
}
|
|
|
|
# group the frameworks together to create a universal framework
|
|
function build_universal_framework {
|
|
if [ ! -d destroot/Library/Frameworks/universal/hermes.xcframework ]; then
|
|
create_universal_framework "iphoneos" "iphonesimulator" "catalyst" "xros" "xrsimulator" "appletvos" "appletvsimulator"
|
|
else
|
|
echo "Skipping; Clean \"destroot\" to rebuild".
|
|
fi
|
|
}
|
|
|
|
# single function that builds sequentially iphoneos, iphonesimulator and catalyst
|
|
# this is used to preserve backward compatibility
|
|
function create_framework {
|
|
if [ ! -d destroot/Library/Frameworks/universal/hermes.xcframework ]; then
|
|
build_framework "iphoneos"
|
|
build_framework "iphonesimulator"
|
|
build_framework "appletvos"
|
|
build_framework "appletvsimulator"
|
|
build_framework "catalyst"
|
|
build_framework "xros"
|
|
build_framework "xrsimulator"
|
|
build_universal_framework
|
|
else
|
|
echo "Skipping; Clean \"destroot\" to rebuild".
|
|
fi
|
|
}
|
|
|
|
|
|
CURR_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
# shellcheck source=xplat/js/react-native-github/sdks/hermes-engine/utils/build-apple-framework.sh
|
|
. "${CURR_SCRIPT_DIR}/build-apple-framework.sh"
|
|
|
|
if [[ -z $1 ]]; then
|
|
create_framework
|
|
elif [[ $1 == "build_framework" ]]; then
|
|
build_universal_framework
|
|
else
|
|
build_framework "$1"
|
|
fi
|