mirror of
https://github.com/rive-app/rive-ios.git
synced 2026-01-18 17:11:28 +01:00
660 lines
30 KiB
Bash
Executable File
660 lines
30 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
path=$(readlink -f "${BASH_SOURCE:-$0}")
|
|
DEV_SCRIPT_DIR=$(dirname $path)
|
|
|
|
if [ -d "$DEV_SCRIPT_DIR/../submodules/rive-runtime" ]; then
|
|
export RIVE_RUNTIME_DIR="$DEV_SCRIPT_DIR/../submodules/rive-runtime"
|
|
else
|
|
export RIVE_RUNTIME_DIR="$DEV_SCRIPT_DIR/../../runtime"
|
|
fi
|
|
|
|
export RIVE_PLS_DIR="$RIVE_RUNTIME_DIR/renderer"
|
|
|
|
if [ -z "${RIVE_PREMAKE_ARGS+null_detector_string}" ]; then
|
|
RIVE_PREMAKE_ARGS="--with_rive_layout"
|
|
fi
|
|
|
|
NO_AUDIO=false
|
|
NO_TEXT=false
|
|
NO_SCRIPTING=false
|
|
PLATFORM=""
|
|
CONFIG=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--no-audio)
|
|
NO_AUDIO=true
|
|
shift
|
|
;;
|
|
--no-text)
|
|
NO_TEXT=true
|
|
shift
|
|
;;
|
|
--no-scripting)
|
|
NO_SCRIPTING=true
|
|
shift
|
|
;;
|
|
all|macosx|ios|ios_sim|xros|xrsimulator|appletvos|appletvsimulator|maccatalyst)
|
|
PLATFORM="$1"
|
|
shift
|
|
;;
|
|
debug|release)
|
|
CONFIG="$1"
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Add audio flag to RIVE_PREMAKE_ARGS if --no-audio is not passed
|
|
if [ "$NO_AUDIO" = false ]; then
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS --with_rive_audio=system"
|
|
fi
|
|
|
|
# Add text flag to RIVE_PREMAKE_ARGS if --no-text is not passed
|
|
if [ "$NO_TEXT" = false ]; then
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS --with_rive_text"
|
|
fi
|
|
|
|
# Add scripting flag to RIVE_PREMAKE_ARGS if --no-scripting is not passed
|
|
if [ "$NO_SCRIPTING" = false ]; then
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS --with_rive_scripting"
|
|
fi
|
|
|
|
# Handle preprocessor definitions for audio, text, and scripting
|
|
# Build the definitions string
|
|
DEFINITIONS=""
|
|
if [ "$NO_AUDIO" = false ]; then
|
|
DEFINITIONS="$DEFINITIONS WITH_RIVE_AUDIO"
|
|
fi
|
|
if [ "$NO_TEXT" = false ]; then
|
|
DEFINITIONS="$DEFINITIONS WITH_RIVE_TEXT"
|
|
fi
|
|
if [ "$NO_SCRIPTING" = false ]; then
|
|
DEFINITIONS="$DEFINITIONS WITH_RIVE_SCRIPTING"
|
|
fi
|
|
|
|
# Set the preprocessor definitions line
|
|
if [ -n "$DEFINITIONS" ]; then
|
|
# Remove leading space
|
|
DEFINITIONS=$(echo "$DEFINITIONS" | sed 's/^ //')
|
|
# Update the active GCC_PREPROCESSOR_DEFINITIONS line (not commented ones)
|
|
sed -i '' "/^GCC_PREPROCESSOR_DEFINITIONS = /s/= .*/= \$(inherited) $DEFINITIONS/" $DEV_SCRIPT_DIR/../Config/Base.xcconfig
|
|
# Update the active SWIFT_ACTIVE_COMPILATION_CONDITIONS line (not commented ones)
|
|
sed -i '' "/^SWIFT_ACTIVE_COMPILATION_CONDITIONS = /s/= .*/= \$(inherited) $DEFINITIONS/" $DEV_SCRIPT_DIR/../Config/Base.xcconfig
|
|
# Update Catalyst.xcconfig SWIFT_ACTIVE_COMPILATION_CONDITIONS to include the definitions
|
|
sed -i '' "/^SWIFT_ACTIVE_COMPILATION_CONDITIONS = /s/= .*/= \$(inherited) $DEFINITIONS RIVE_MAC_CATALYST/" $DEV_SCRIPT_DIR/../Config/Catalyst.xcconfig
|
|
else
|
|
# Update the active GCC_PREPROCESSOR_DEFINITIONS line (not commented ones)
|
|
sed -i '' '/^GCC_PREPROCESSOR_DEFINITIONS = /s/= .*/= $(inherited)/' $DEV_SCRIPT_DIR/../Config/Base.xcconfig
|
|
# Update the active SWIFT_ACTIVE_COMPILATION_CONDITIONS line (not commented ones)
|
|
sed -i '' '/^SWIFT_ACTIVE_COMPILATION_CONDITIONS = /s/= .*/= $(inherited)/' $DEV_SCRIPT_DIR/../Config/Base.xcconfig
|
|
# Reset Catalyst.xcconfig SWIFT_ACTIVE_COMPILATION_CONDITIONS to just inherited + RIVE_MAC_CATALYST
|
|
sed -i '' '/^SWIFT_ACTIVE_COMPILATION_CONDITIONS = /s/= .*/= $(inherited) RIVE_MAC_CATALYST/' $DEV_SCRIPT_DIR/../Config/Catalyst.xcconfig
|
|
fi
|
|
|
|
|
|
make_dependency_directories() {
|
|
rm -fr $DEV_SCRIPT_DIR/../dependencies
|
|
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/debug
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/release
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/includes
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
mkdir -p $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
}
|
|
|
|
build_runtime() {
|
|
# Build the rive runtime.
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua ios $1 $AUDIO_FLAG universal clean
|
|
|
|
cp -r out/ios_universal_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz.a
|
|
cp -r out/ios_universal_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga.a
|
|
cp -r out/ios_universal_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi.a
|
|
cp -r out/ios_universal_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio.a
|
|
cp -r out/ios_universal_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive.a
|
|
cp -r out/ios_universal_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/iphoneos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios gmake2
|
|
make -C out/iphoneos_$1 clean
|
|
make -C out/iphoneos_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/iphoneos_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/iphoneos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios gmake2
|
|
make -C out/iphoneos_$1 clean
|
|
make -C out/iphoneos_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/iphoneos_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer.a
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/iphoneos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --no_rive_jpeg --no_rive_png --no_rive_webp gmake2
|
|
make -C out/iphoneos_$1 clean
|
|
make -C out/iphoneos_$1 -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/iphoneos_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders.a
|
|
}
|
|
|
|
build_runtime_sim() {
|
|
# Build the rive runtime.
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua iossim $1 $AUDIO_FLAG clean
|
|
|
|
cp -r out/iossim_universal_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_sim.a
|
|
cp -r out/iossim_universal_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_sim.a
|
|
cp -r out/iossim_universal_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_sim.a
|
|
cp -r out/iossim_universal_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_sim.a
|
|
cp -r out/iossim_universal_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sim.a
|
|
cp -r out/iossim_universal_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_sim.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/iphonesimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=emulator gmake2
|
|
|
|
make -C out/iphonesimulator_$1 clean
|
|
make -C out/iphonesimulator_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/iphonesimulator_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_sim.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/iphonesimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios --variant=emulator gmake2
|
|
make -C out/iphonesimulator_$1 clean
|
|
make -C out/iphonesimulator_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/iphonesimulator_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_sim.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib_fat.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_sim.a arm64 x86_64
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/iphonesimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=emulator --no_rive_jpeg --no_rive_png --no_rive_webp gmake2
|
|
make -C out/iphonesimulator_$1 clean
|
|
make -C out/iphonesimulator_$1 -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/iphonesimulator_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_sim.a
|
|
}
|
|
|
|
build_runtime_macosx() {
|
|
# Build the rive runtime.
|
|
RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua $1 universal $AUDIO_FLAG clean
|
|
|
|
cp -r out/universal_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_macos.a
|
|
cp -r out/universal_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_macos.a
|
|
cp -r out/universal_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_macos.a
|
|
cp -r out/universal_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_macos.a
|
|
cp -r out/universal_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_macos.a
|
|
cp -r out/universal_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_macos.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=macosx gmake2
|
|
make -C out/$1 clean
|
|
make -C out/$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_macos.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=macosx gmake2
|
|
make -C out/$1 clean
|
|
make -C out/$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_macos.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib_fat.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_macos.a arm64 x86_64
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=macosx --no_rive_jpeg --no_rive_png --no_rive_webp gmake2
|
|
make -C out/$1 clean
|
|
make -C out/$1 -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_macos.a
|
|
}
|
|
|
|
build_runtime_xros() {
|
|
# Build the rive runtime.
|
|
RIVE_OUT=out/xros_$1 RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua xros $1 $AUDIO_FLAG clean
|
|
|
|
cp -r out/xros_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_xros.a
|
|
cp -r out/xros_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_xros.a
|
|
cp -r out/xros_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_xros.a
|
|
cp -r out/xros_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_xros.a
|
|
cp -r out/xros_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_xros.a
|
|
cp -r out/xros_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_xros.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/xros_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=xros gmake2
|
|
make -C out/xros_$1 clean
|
|
make -C out/xros_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/xros_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_xros.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/xros_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios --variant=xros gmake2
|
|
make -C out/xros_$1 clean
|
|
make -C out/xros_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/xros_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_xros.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_xros.a
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/xros_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=xros --no_rive_jpeg --no_rive_png --no_rive_webp gmake2
|
|
make -C out/xros_$1 clean
|
|
make -C out/xros_$1 -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/xros_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_xros.a
|
|
}
|
|
|
|
build_runtime_xrsimulator() {
|
|
# Build the rive runtime.
|
|
RIVE_OUT=out/xrsimulator_universal_$1 RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua xrsimulator $1 $AUDIO_FLAG clean
|
|
|
|
cp -r out/xrsimulator_universal_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_xrsimulator.a
|
|
cp -r out/xrsimulator_universal_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_xrsimulator.a
|
|
cp -r out/xrsimulator_universal_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_xrsimulator.a
|
|
cp -r out/xrsimulator_universal_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_xrsimulator.a
|
|
cp -r out/xrsimulator_universal_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_xrsimulator.a
|
|
cp -r out/xrsimulator_universal_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_xrsimulator.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/xrsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=xrsimulator gmake2
|
|
|
|
make -C out/xrsimulator_$1 clean
|
|
make -C out/xrsimulator_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/xrsimulator_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_xrsimulator.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/xrsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios --variant=xrsimulator gmake2
|
|
make -C out/xrsimulator_$1 clean
|
|
make -C out/xrsimulator_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/xrsimulator_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_xrsimulator.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib_fat.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_xrsimulator.a arm64 x86_64
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/xrsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=xrsimulator --no_rive_jpeg --no_rive_png --no_rive_webp gmake2
|
|
make -C out/xrsimulator_$1 clean
|
|
make -C out/xrsimulator_$1 -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/xrsimulator_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_xrsimulator.a
|
|
}
|
|
|
|
build_runtime_appletvos() {
|
|
RIVE_OUT=out/appletvos_$1 RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua appletvos $1 $AUDIO_FLAG clean
|
|
|
|
cp -r out/appletvos_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_appletvos.a
|
|
cp -r out/appletvos_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_appletvos.a
|
|
cp -r out/appletvos_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_appletvos.a
|
|
cp -r out/appletvos_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_appletvos.a
|
|
cp -r out/appletvos_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_appletvos.a
|
|
cp -r out/appletvos_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_appletvos.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/appletvos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=appletvos gmake2
|
|
make -C out/appletvos_$1 clean
|
|
make -C out/appletvos_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/appletvos_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_appletvos.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/appletvos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios --variant=appletvos gmake2
|
|
make -C out/appletvos_$1 clean
|
|
make -C out/appletvos_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/appletvos_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_appletvos.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_appletvos.a
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/appletvos_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=appletvos --no_rive_jpeg --no_rive_png gmake2
|
|
make -C out/appletvos_$1 clean
|
|
make -C out/appletvos_$1 -j12 rive_decoders
|
|
make -C out/appletvos_$1 -j12 libwebp
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/appletvos_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_appletvos.a
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/appletvos_$1/liblibwebp.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_webp_appletvos.a
|
|
}
|
|
|
|
build_runtime_appletvsimulator() {
|
|
RIVE_OUT=out/appletvsimulator_universal_$1 RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua appletvsimulator $1 $AUDIO_FLAG clean
|
|
|
|
cp -r out/appletvsimulator_universal_$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_appletvsimulator.a
|
|
cp -r out/appletvsimulator_universal_$1/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_yoga_appletvsimulator.a
|
|
cp -r out/appletvsimulator_universal_$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_appletvsimulator.a
|
|
cp -r out/appletvsimulator_universal_$1/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/$1/libminiaudio_appletvsimulator.a
|
|
cp -r out/appletvsimulator_universal_$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_appletvsimulator.a
|
|
cp -r out/appletvsimulator_universal_$1/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/$1/libluau_vm_appletvsimulator.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=$1 --out=out/appletvsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=appletvsimulator gmake2
|
|
|
|
make -C out/appletvsimulator_$1 clean
|
|
make -C out/appletvsimulator_$1 -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/appletvsimulator_$1/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_cg_renderer_appletvsimulator.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=$1 --out=out/appletvsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=ios --variant=appletvsimulator gmake2
|
|
make -C out/appletvsimulator_$1 clean
|
|
make -C out/appletvsimulator_$1 -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/appletvsimulator_$1/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_appletvsimulator.a
|
|
$DEV_SCRIPT_DIR/strip_static_lib_fat.sh $DEV_SCRIPT_DIR/../dependencies/$1/librive_pls_renderer_appletvsimulator.a arm64 x86_64
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=$1 --out=out/appletvsimulator_$1 --arch=universal --scripts=$RIVE_RUNTIME_DIR/build --os=ios --variant=appletvsimulator --no_rive_jpeg --no_rive_png gmake2
|
|
make -C out/appletvsimulator_$1 clean
|
|
make -C out/appletvsimulator_$1 -j12 rive_decoders
|
|
make -C out/appletvsimulator_$1 -j12 libwebp
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/appletvsimulator_$1/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_decoders_appletvsimulator.a
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/appletvsimulator_$1/liblibwebp.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_webp_appletvsimulator.a
|
|
}
|
|
|
|
build_runtime_maccatalyst() {
|
|
_build_runtime_maccatalyst() {
|
|
local config=$1
|
|
local arch=$2
|
|
|
|
# Build the rive runtime.
|
|
RIVE_OUT=out/maccatalyst_${arch}_${config} RIVE_PREMAKE_ARGS="$RIVE_PREMAKE_ARGS" build_rive.sh --file=$RIVE_RUNTIME_DIR/premake5_v2.lua ${config} ${arch} $AUDIO_FLAG --variant=maccatalyst clean
|
|
|
|
cp -r out/maccatalyst_${arch}_${config}/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_harfbuzz_maccatalyst_${arch}.a
|
|
cp -r out/maccatalyst_${arch}_${config}/librive_yoga.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_yoga_maccatalyst_${arch}.a
|
|
cp -r out/maccatalyst_${arch}_${config}/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_sheenbidi_maccatalyst_${arch}.a
|
|
cp -r out/maccatalyst_${arch}_${config}/libminiaudio.a $DEV_SCRIPT_DIR/../dependencies/${config}/libminiaudio_maccatalyst_${arch}.a
|
|
cp -r out/maccatalyst_${arch}_${config}/librive.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_maccatalyst_${arch}.a
|
|
cp -r out/maccatalyst_${arch}_${config}/libluau_vm.a $DEV_SCRIPT_DIR/../dependencies/${config}/libluau_vm_maccatalyst_${arch}.a
|
|
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
|
|
|
|
# Build rive_cg_renderer.
|
|
pushd $RIVE_RUNTIME_DIR/cg_renderer
|
|
premake5 --config=${config} --out=out/maccatalyst_${arch}_${config} --arch=${arch} --scripts=$RIVE_RUNTIME_DIR/build --os=macosx --variant=maccatalyst gmake2
|
|
make -C out/maccatalyst_${arch}_${config} clean
|
|
make -C out/maccatalyst_${arch}_${config} -j12 rive_cg_renderer
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/out/maccatalyst_${arch}_${config}/librive_cg_renderer.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_cg_renderer_maccatalyst_${arch}.a
|
|
cp -r $RIVE_RUNTIME_DIR/cg_renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/cg_renderer
|
|
|
|
# Build rive_pls_renderer.
|
|
pushd $RIVE_PLS_DIR
|
|
premake5 --config=${config} --out=out/maccatalyst_${arch}_${config} --arch=${arch} --scripts=$RIVE_RUNTIME_DIR/build --file=premake5_pls_renderer.lua --os=macosx --variant=maccatalyst gmake2
|
|
make -C out/maccatalyst_${arch}_${config} clean
|
|
make -C out/maccatalyst_${arch}_${config} -j12 rive_pls_renderer
|
|
popd
|
|
cp -r $RIVE_PLS_DIR/out/maccatalyst_${arch}_${config}/librive_pls_renderer.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_pls_renderer_maccatalyst_${arch}.a
|
|
cp -r $RIVE_PLS_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
|
|
|
|
# Build rive_decoders.
|
|
pushd $RIVE_RUNTIME_DIR/decoders
|
|
premake5 --file=premake5_v2.lua --config=${config} --out=out/maccatalyst_${arch}_${config} --arch=${arch} --scripts=$RIVE_RUNTIME_DIR/build --os=macosx --no_rive_jpeg --no_rive_png --no_rive_webp --variant=maccatalyst gmake2
|
|
make -C out/maccatalyst_${arch}_${config} clean
|
|
make -C out/maccatalyst_${arch}_${config} -j12 rive_decoders
|
|
popd
|
|
cp -r $RIVE_RUNTIME_DIR/decoders/out/maccatalyst_${arch}_${config}/librive_decoders.a $DEV_SCRIPT_DIR/../dependencies/${config}/librive_decoders_maccatalyst_${arch}.a
|
|
}
|
|
|
|
_create_universal_libraries() {
|
|
local config=$1
|
|
local deps_dir="$DEV_SCRIPT_DIR/../dependencies/${config}"
|
|
|
|
# List of libraries to merge
|
|
local libs=(
|
|
"librive_harfbuzz_maccatalyst"
|
|
"librive_yoga_maccatalyst"
|
|
"librive_sheenbidi_maccatalyst"
|
|
"libminiaudio_maccatalyst"
|
|
"librive_maccatalyst"
|
|
"librive_cg_renderer_maccatalyst"
|
|
"librive_pls_renderer_maccatalyst"
|
|
"librive_decoders_maccatalyst"
|
|
"libluau_vm_maccatalyst"
|
|
)
|
|
|
|
# Create universal binaries for each library
|
|
for lib in "${libs[@]}"; do
|
|
lipo -create \
|
|
"${deps_dir}/${lib}_arm64.a" \
|
|
"${deps_dir}/${lib}_x64.a" \
|
|
-output "${deps_dir}/${lib}.a"
|
|
|
|
# Clean up architecture-specific files
|
|
rm "${deps_dir}/${lib}_arm64.a" "${deps_dir}/${lib}_x64.a"
|
|
done
|
|
}
|
|
|
|
_build_runtime_maccatalyst "$1" "arm64"
|
|
_build_runtime_maccatalyst "$1" "x64"
|
|
_create_universal_libraries "$1"
|
|
}
|
|
|
|
usage() {
|
|
echo "USAGE: $0 [--no-audio] <all|ios|ios_sim|xros|xrsimulator|appletvos|appletvsimulator|macosx|maccatalyst> <debug|release>"
|
|
exit 1
|
|
}
|
|
|
|
if [ -z "$PLATFORM" ]; then
|
|
usage
|
|
fi
|
|
|
|
build_all() {
|
|
if [ "$1" != "debug" ] && [ "$1" != "release" ]; then
|
|
usage
|
|
fi
|
|
|
|
build_runtime $1
|
|
build_runtime_sim $1
|
|
build_runtime_macosx $1
|
|
build_runtime_xros $1
|
|
build_runtime_xrsimulator $1
|
|
build_runtime_appletvos $1
|
|
build_runtime_appletvsimulator $1
|
|
build_runtime_maccatalyst $1
|
|
}
|
|
|
|
case $PLATFORM in
|
|
all)
|
|
case $CONFIG in
|
|
"debug")
|
|
echo "Building all Apple runtimes in debug..."
|
|
make_dependency_directories
|
|
build_all debug
|
|
;;
|
|
"release")
|
|
echo "Building all Apple runtimes in release..."
|
|
make_dependency_directories
|
|
build_all release
|
|
;;
|
|
"")
|
|
echo "Building all Apple runtimes in debug and release..."
|
|
make_dependency_directories
|
|
build_all debug
|
|
build_all release
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
macosx)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_macosx $CONFIG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
ios)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime $CONFIG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
ios_sim)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_sim $CONFIG
|
|
# TODO:
|
|
# to build for the example you need debug, but to profile you need release.
|
|
# each time you build, both version are removed. to imnprove this only remove
|
|
# the version being built, or add a "both" option.
|
|
# build_runtime_sim debug
|
|
# build_runtime_sim release
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
xros)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_xros $CONFIG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
xrsimulator)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_xrsimulator $CONFIG
|
|
# TODO:
|
|
# to build for the example you need debug, but to profile you need release.
|
|
# each time you build, both version are removed. to imnprove this only remove
|
|
# the version being built, or add a "both" option.
|
|
# build_runtime_sim debug
|
|
# build_runtime_sim release
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
appletvos)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_appletvos $CONFIG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
appletvsimulator)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_appletvsimulator $CONFIG
|
|
# TODO:
|
|
# to build for the example you need debug, but to profile you need release.
|
|
# each time you build, both version are removed. to imnprove this only remove
|
|
# the version being built, or add a "both" option.
|
|
# build_runtime_sim debug
|
|
# build_runtime_sim release
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
maccatalyst)
|
|
if [ -z "$CONFIG" ]; then
|
|
usage
|
|
fi
|
|
case $CONFIG in
|
|
release | debug)
|
|
make_dependency_directories
|
|
build_runtime_maccatalyst $CONFIG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|