#!/bin/bash
-# Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved
+#
+# Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
#
# Main cross-compiling build script for Skate Rift
# Supports Linux and Windows building from a Linux Host
# Compiler Presets
# ==============================================================================
-_linux_compiler="gcc -std=c99 -D_REENTRANT"
+_linux_compiler="clang -std=c99 -D_REENTRANT"
_linux_linkgraphics="-lGL -lglfw3 -lX11 -lXxf86vm -lXrandr -lm -pthread -lXi -ldl"
_linux_asan="-fsanitize=address"
_linux_linksteam="-lsteam_api"
_linux_server_folder="bin/linux_server"
_windows_compiler="i686-w64-mingw32-gcc"
-_windows_linkgraphics="-lglfw3dll -lopengl32 -lm -mwindows"
+_windows_linkgraphics="-lglfw3dll -lopengl32 -lm -pthread -static -mwindows"
_windows_asan=""
_windows_linksteam="vg/dep/steam/steam_api.dll"
_windows_folder="bin/win32"
-_options_debugmode="-O0 -ggdb3 -fno-omit-frame-pointer"
+_options_debugmode="-O0 -ggdb3 -fno-omit-frame-pointer -rdynamic"
_options_release="-O3 -DVG_RELEASE"
# Compiler lines
# ==============================================================================
-_warnings="-Wall -Wno-unused-function -Wno-unused-variable"
+_warnings="-Wall -Wno-unused-function -Wno-unused-variable -Wno-unused-command-line-argument -Wno-unused-but-set-variable"
_include="-I. -I./vg/dep -I./vg/src"
_library="-L. -L./vg/dep/glfw -L./vg/dep/steam"
_epilogue="-Wl,-rpath=./"
# TODO
run_game(){
cd $_linux_folder
- ./skaterift
+ ./skaterift --samples=4
cd ./../
}
}
link_content(){
- ln -sr bin/content/textures/ $1/textures
- ln -sr bin/content/models/ $1/models
- ln -sr bin/content/sound/ $1/sound
+ unlink $1/textures
+ unlink $1/models
+ unlink $1/sound
+
+ ln -srf bin/content/textures $1/textures
+ ln -srf bin/content/models $1/models
+ ln -srf bin/content/sound $1/sound
}
TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S`
_linux_options="$_linux_asan $_options_debugmode"
_windows_options="$_windows_asan $_options_debugmode"
;;
+ ltools)
+ _compiler=$_linux_compiler
+ _options=$_linux_options
+ _folder=$_linux_folder
+ _ext=""
+ vg_compile_tools
+
+ ;;
game)
titleit "Creating Linux build"
mkdir -p $_linux_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 $_linux_linksteam"
+ _link="-pthread -lm -lsdkencryptedappticket $_linux_linksteam"
_src="server.c"
_folder=$_linux_server_folder
_dst="skaterift_server"
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
./bin/linux/tools/qoiconv $f $dest
done
;;
+ sounds)
+ titleit "Compiling sounds"
+ mkdir -p ./bin/content/textures
+
+ for f in ./sound_src/*.wav
+ do
+ dest=./bin/content/sounds/"$(basename "$f" .wav).44100.ima_adpcm"
+ ./bin/linux/tools/audcomp $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/
+ #cp ./sound_src/* ./bin/content/sound/
;;
all)
run_command game
run_command server
;;
- distribution)
+ disb)
mkdir -p ./dist
run_command release
run_command tools
run_command content
run_command textures
run_command server
+ ;;
+ distribution)
titleit "Compressing distributions"
logit "Linux"
tar -chzvf dist/skaterift_linux__$TIMESTAMP.tar.gz bin/linux/
tar -chzvf dist/skaterift_server__$TIMESTAMP.tar.gz bin/linux_server
logit "Windows"
tar -chzvf dist/skaterift_win32__$TIMESTAMP.tar.gz bin/win32/
+ zip -r9 dist/skaterift_win32__$TIMESTAMP.zip bin/win32/
;;
# Runners
# ========================================================================
test)
run_game
;;
+ gdb)
+ cd $_linux_folder
+ gdb -tui ./skaterift
+ cd ./../
+ ;;
testserver)
run_server
;;
run_server
wait
;;
+ aa)
+ run_command testaa
+ cd bin/aatest
+ ./testaa
+ cd ./../
+ ;;
*)
echo "Unrecognised command $1"
esac
}
+lsan_file=$(realpath ".lsan_suppress.txt")
+export LSAN_OPTIONS="suppressions=$lsan_file"
+
vg_command debug
source vg/vg_build.sh