+TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S`
+
+vg_command(){
+ case "$1" in
+ release)
+ _linux_options=$_options_release
+ _windows_options=$_options_release
+ ;;
+ debug)
+ _linux_options="$_linux_asan $_options_debugmode"
+ _windows_options="$_windows_asan $_options_debugmode"
+ ;;
+ game)
+ titleit "Creating Linux build"
+ mkdir -p $_linux_folder/cfg
+
+ # Dependencies
+ cp vg/dep/steam/libsteam_api.so $_linux_folder
+ link_content $_linux_folder
+
+ _compiler=$_linux_compiler
+ _options=$_linux_options
+
+ compile_miniaudio linux
+
+ # Game tools
+ _folder=$_linux_folder
+ _ext=""
+ vg_compile_tools
+
+ # Main build
+ _link="$_linux_linkgraphics $_linux_linksteam"
+ _src="main.c vg/dep/glad/glad.c vg/dep/dr_soft/miniaudio_linux.o"
+ _dst="skaterift"
+ compile_x
+ ;;
+ game_win)
+ titleit "Creating Windows build"
+ mkdir -p $_windows_folder/cfg
+
+ # Dependencies
+ cp vg/dep/steam/steam_api.dll $_windows_folder
+ link_content $_windows_folder
+
+ _compiler=$_windows_compiler
+ _options=$_windows_options
+
+ compile_miniaudio windows
+
+ # Game tools
+ _ext=".exe"
+ _folder=$_windows_folder
+ vg_compile_tools
+
+ # Main build
+ _link="$_windows_linkgraphics $_windows_linksteam"
+ _src="main.c vg/dep/glad/glad.c vg/dep/dr_soft/miniaudio_windows.o"
+ _dst="skaterift"
+ compile_x
+ ;;
+ server)
+ titleit "Creating Server build"
+ mkdir -p $_linux_server_folder/cfg
+
+ # Dependencies
+ cp vg/dep/steam/steamclient.so bin/linux_server/
+ cp vg/dep/steam/libsteam_api.so bin/linux_server/
+ cp vg/dep/steam/libsdkencryptedappticket.so bin/linux_server/
+
+ _compiler=$_linux_compiler
+ _options=$_linux_options
+ _link="-lm -lsdkencryptedappticket $_linux_linksteam"
+ _src="server.c"
+ _folder=$_linux_server_folder
+ _dst="skaterift_server"
+ _ext=""
+
+ compile_x
+ ;;
+ testaa)
+ titleit "Dev"
+ mkdir -p bin/aatest/cfg
+
+ _compiler=$_linux_compiler
+ _options=$_linux_options
+ _link="-lm"
+ _src="testaa.c"
+ _folder=bin/aatest
+ _dst="testaa"
+ _ext=""
+
+ compile_x
+ ;;
+
+ #TODO: These are not cross platform in the build script, a full build
+ # from source is therefore not possible on windows, only a linux
+ # host can do that.
+ textures)
+ titleit "Compiling textures"
+ mkdir -p ./bin/content/textures
+ for f in ./textures_src/*.png;
+ do logit " qoiconv: $f";
+ dest=./bin/content/textures/"$(basename "$f" .png).qoi"
+ ./bin/linux/tools/qoiconv $f $dest
+ done
+ ;;
+ content)
+ logit "Copying content"
+ mkdir -p ./bin/content/models
+ mkdir -p ./bin/content/sound
+
+ cp ./models_src/* ./bin/content/models/
+ cp ./sound_src/* ./bin/content/sound/
+ ;;
+
+ all)
+ run_command tools
+ run_command game
+ run_command server
+ ;;
+ distribution)
+ mkdir -p ./dist
+ run_command release
+ run_command tools
+ run_command game
+ run_command game_win
+ run_command content
+ run_command textures
+ run_command server
+
+ titleit "Compressing distributions"
+ logit "Linux"
+ tar -chzvf dist/skaterift_linux__$TIMESTAMP.tar.gz bin/linux/
+ logit "Server"
+ tar -chzvf dist/skaterift_server__$TIMESTAMP.tar.gz bin/linux_server
+ logit "Windows"
+ tar -chzvf dist/skaterift_win32__$TIMESTAMP.tar.gz bin/win32/
+ ;;
+ # Runners
+ # ========================================================================
+ test)
+ run_game
+ ;;
+ testserver)
+ run_server
+ ;;
+ testnet)
+ delay_run_game &
+ run_server
+ wait
+ ;;
+ aa)
+ run_command testaa
+ cd bin/aatest
+ ./testaa
+ cd ./../
+ ;;
+ *)
+ echo "Unrecognised command $1"
+ esac