| #!/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 |