#!/bin/bash
set -e

source dependencies/config_directories.sh
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 ios_sim release - build release ios simulator 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 --with_rive_text --with_rive_audio=system --with_rive_layout "$1"
        PREMAKE="premake5 gmake2 --with_rive_text --with_rive_audio=system --with_rive_layout $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"
        if [ "$OPTION" = "clean" ]; then
            exit
        fi
        ;;
    ios_sim)
        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}"
        ;;
    macosx)
        echo "Building for macos"
        export MACOS_SYSROOT=$(xcrun --sdk macosx --show-sdk-path)
        build "--os=macosx --variant=runtime"
        if [ "$OPTION" = "clean" ]; then
            exit
        fi
        ;;
    *)
        build
        ;;
    esac
fi

popd &>/dev/null
