| #!/bin/bash | |
| set -e | |
| unameOut="$(uname -s)" | |
| case "${unameOut}" in | |
| Linux*) machine=linux ;; | |
| Darwin*) machine=macosx ;; | |
| MINGW*) machine=windows ;; | |
| *) machine="unhandled:${unameOut}" ;; | |
| esac | |
| CONFIG=debug | |
| for var in "$@"; do | |
| if [[ $var = "release" ]]; then | |
| CONFIG=release | |
| elif [ "$var" = "memory" ]; then | |
| echo Will perform memory checks... | |
| UTILITY='leaks --atExit --' | |
| shift | |
| elif [ "$var" = "lldb" ]; then | |
| echo Starting debugger... | |
| UTILITY='lldb' | |
| shift | |
| fi | |
| done | |
| if [[ ! -f "dependencies/bin/premake5" ]]; then | |
| mkdir -p dependencies/bin | |
| pushd dependencies | |
| if [[ $machine = "macosx" ]]; then | |
| # v5.0.0-beta2 doesn't support apple silicon properly, update the branch | |
| # once a stable one is avaialble that supports it | |
| git clone --depth 1 --branch master https://github.com/premake/premake-core.git | |
| pushd premake-core | |
| if [[ $LOCAL_ARCH == "arm64" ]]; then | |
| PREMAKE_MAKE_ARCH=ARM | |
| else | |
| PREMAKE_MAKE_ARCH=x86 | |
| fi | |
| make -f Bootstrap.mak osx PLATFORM=$PREMAKE_MAKE_ARCH | |
| cp bin/release/* ../bin | |
| popd | |
| elif [[ $machine = "windows" ]]; then | |
| pushd bin | |
| curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta2/premake-5.0.0-beta2-windows.zip -L -o premake_windows.zip | |
| unzip premake_windows.zip | |
| rm premake_windows.zip | |
| popd | |
| fi | |
| popd | |
| fi | |
| export PREMAKE=$PWD/dependencies/bin/premake5 | |
| pushd test | |
| for var in "$@"; do | |
| if [[ $var = "clean" ]]; then | |
| echo 'Cleaning...' | |
| rm -fR out | |
| fi | |
| done | |
| mkdir -p out | |
| if [[ $machine = "macosx" ]]; then | |
| TARGET=gmake2 | |
| elif [[ $machine = "windows" ]]; then | |
| TARGET=vs2022 | |
| fi | |
| pushd ../../ | |
| RUNTIME=$PWD | |
| popd | |
| export PREMAKE_PATH="$RUNTIME/dependencies/export-compile-commands":"$RUNTIME/build":"$PREMAKE_PATH" | |
| PREMAKE_COMMANDS="--with_rive_text --with_rive_audio=external --with_rive_layout --config=$CONFIG" | |
| out_dir() { | |
| echo "out/$CONFIG" | |
| } | |
| if [[ $machine = "macosx" ]]; then | |
| OUT_DIR="$(out_dir)" | |
| $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR | |
| pushd $OUT_DIR | |
| make -j$(($(sysctl -n hw.physicalcpu) + 1)) | |
| popd | |
| $UTILITY $OUT_DIR/tests | |
| elif [[ $machine = "windows" ]]; then | |
| if [[ -f "$PROGRAMFILES/Microsoft Visual Studio/2022/Enterprise/Msbuild/Current/Bin/MSBuild.exe" ]]; then | |
| export MSBUILD="$PROGRAMFILES/Microsoft Visual Studio/2022/Enterprise/Msbuild/Current/Bin/MSBuild.exe" | |
| elif [[ -f "$PROGRAMFILES/Microsoft Visual Studio/2022/Community/Msbuild/Current/Bin/MSBuild.exe" ]]; then | |
| export MSBUILD="$PROGRAMFILES/Microsoft Visual Studio/2022/Community/Msbuild/Current/Bin/MSBuild.exe" | |
| fi | |
| OUT_DIR="$(out_dir)" | |
| echo $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR | |
| ls -l | |
| $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR | |
| pushd $OUT_DIR | |
| "$MSBUILD" rive.sln -m:$NUMBER_OF_PROCESSORS | |
| popd | |
| $OUT_DIR/tests.exe | |
| fi | |
| popd |