| #!/bin/bash | |
| set -e | |
| pushd build &>/dev/null | |
| while getopts p: flag; do | |
| case "${flag}" in | |
| p) | |
| shift 2 | |
| platform=${OPTARG} | |
| ;; | |
| \?) help ;; | |
| esac | |
| done | |
| help() { | |
| echo build.sh - build debug library | |
| echo build.sh clean - clean the build | |
| echo build.sh release - build release library | |
| echo build.sh -p ios release - build release ios library | |
| echo build.sh -p android release - build release android library | |
| exit 1 | |
| } | |
| # make sure argument is lowercase | |
| OPTION="$(echo "$1" | tr '[A-Z]' '[a-z]')" | |
| if [ "$OPTION" = 'help' ]; then | |
| help | |
| else | |
| build() { | |
| echo "Building Rive for platform=$platform option=$OPTION" | |
| echo premake5 gmake2 "$1" | |
| PREMAKE="premake5 gmake2 $1" | |
| eval "$PREMAKE" | |
| if [ "$OPTION" = "clean" ]; then | |
| make clean | |
| make clean config=release | |
| elif [ "$OPTION" = "release" ]; then | |
| make config=release -j7 | |
| else | |
| make -j7 | |
| fi | |
| } | |
| case $platform in | |
| ios) | |
| echo "Building for iOS" | |
| export IOS_SYSROOT=$(xcrun --sdk iphoneos --show-sdk-path) | |
| build "--os=ios" | |
| export IOS_SYSROOT=$(xcrun --sdk iphonesimulator --show-sdk-path) | |
| build "--os=ios --variant=emulator" | |
| if [ "$OPTION" = "clean" ]; then | |
| exit | |
| fi | |
| ;; | |
| # Android supports ABIs via a custom platform format: | |
| # e.g. 'android.x86', 'android.x64', etc. | |
| android*) | |
| echo "Building for ${platform}" | |
| # Extract ABI from this opt by splitting on '.' character | |
| # e.g. android.x86 | |
| IFS="." read -ra strarr <<<"$platform" | |
| ARCH=${strarr[1]} | |
| build "--os=android --arch=${ARCH}" | |
| ;; | |
| *) | |
| build | |
| ;; | |
| esac | |
| fi | |
| popd &>/dev/null |