Single test script for windows and mac.

Diffs=
a35883508 Single test script for windows and mac. (#6642)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index e20119e..f469380 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -49,7 +49,7 @@
         shell: powershell
         run: |
           cd build
-          C:\premake5.exe vs2022
+          C:\premake5.exe vs2022 --with_rive_text --with_rive_audio=external
           MSBuild rive.sln /property:Configuration=Debug /property:Platform=x64
           cd ..
 
@@ -57,7 +57,7 @@
         shell: powershell
         run: |
           cd dev/test
-          C:\premake5.exe --scripts=..\..\build vs2022
+          C:\premake5.exe --scripts=..\..\build vs2022 --with_rive_text --with_rive_audio=external
           cd out/debug
           MSBuild rive.sln
           tests.exe
diff --git a/.rive_head b/.rive_head
index e2c6c35..cfed0fa 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-37ce9aaea0cac79be8be140a3b9d13e3f2a4aa98
+a358835081a47fba704a5ff13f2dd1c71ef1ffa6
diff --git a/dev/test.sh b/dev/test.sh
index 8ce23a6..c82a792 100755
--- a/dev/test.sh
+++ b/dev/test.sh
@@ -1,43 +1,107 @@
 #!/bin/bash
 set -e
 
-source ../dependencies/config_directories.sh
-source setup_premake.sh
+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 &>/dev/null
 
-OPTION=$1
-UTILITY=
+for var in "$@"; do
+    if [[ $var = "clean" ]]; then
+        echo 'Cleaning...'
+        rm -fR out
+    fi
+done
 
-if [ "$OPTION" = "help" ]; then
-  echo test.sh - run the tests
-  echo test.sh clean - clean and run the tests
-  exit
-elif [ "$OPTION" = "clean" ]; then
-  echo Cleaning project ...
-  rm -fR out
-  shift
-elif [ "$OPTION" = "memory" ]; then
-  echo Will perform memory checks...
-  UTILITY='leaks --atExit --'
-  shift
-elif [ "$OPTION" = "debug" ]; then
-  echo Starting debugger...
-  UTILITY='lldb'
-  shift
+mkdir -p out
+
+if [[ $machine = "macosx" ]]; then
+    TARGET=gmake2
+elif [[ $machine = "windows" ]]; then
+    TARGET=vs2022
 fi
 
-unameOut="$(uname -s)"
-case "${unameOut}" in
-Linux*) NUM_CORES=$(grep -c processor /proc/cpuinfo) ;;
-Darwin*) NUM_CORES=$(($(sysctl -n hw.physicalcpu) + 1)) ;;
-MINGW*) NUM_CORES=$NUMBER_OF_PROCESSORS ;;
-*) NUM_CORES=4 ;;
-esac
+pushd ../../../
+PACKAGES=$PWD
+popd
 
-$PREMAKE --scripts=../../build gmake2 --with_rive_tools --with_rive_text --with_rive_audio=external --config=debug --out=out/debug
-make -C out/debug -j$NUM_CORES
+export PREMAKE_PATH="$PACKAGES/runtime/dependencies/export-compile-commands":"$PACKAGES/runtime/build":"$PREMAKE_PATH"
 
-$UTILITY out/debug/tests "$1"
+PREMAKE_COMMANDS="--with_rive_text --with_rive_audio=external --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 &>/dev/null