|  | #!/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 config=debug -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 |