_linux_linkgraphics="-lGL -lglfw3 -lX11 -lXxf86vm -lXrandr -lm -pthread -lXi -ldl"
_linux_asan="-fsanitize=address"
_linux_linksteam="-lsteam_api"
-_linux_folder="build.linux"
-_linux_server_folder="build.linux_server"
+_linux_folder="bin/linux"
+_linux_server_folder="bin/linux_server"
_windows_compiler="i686-w64-mingw32-gcc"
_windows_linkgraphics="-lglfw3dll -lopengl32 -lm -mwindows"
_windows_asan=""
_windows_linksteam="vg/dep/steam/steam_api.dll"
-_windows_folder="build.win32"
+_windows_folder="bin/win32"
_options_debugmode="-O0 -ggdb3 -fno-omit-frame-pointer"
_options_release="-O3 -DVG_RELEASE"
# Compile scripts
# ==============================================================================
-release(){
- _linux_options=$_options_release
- _windows_options=$_options_release
-}
-
-debug(){
- _linux_options="$_linux_asan $_options_debugmode"
- _windows_options="$_windows_asan $_options_debugmode"
-}
-debug
-
compile_miniaudio(){
temp_options=$_options
_options=$temp_options
}
-game() {
- _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
+# Again, these are not cross platform currently
+# TODO
+run_game(){
+ cd $_linux_folder
+ ./skaterift
+ cd ./../
}
-game_windows() {
- _compiler=$_windows_compiler
- _options=$_windows_options
+run_server(){
+ cd $_linux_server_folder
+ ./skaterift_server
+ cd ./../
+}
- compile_miniaudio windows
+delay_run_game(){
+ sleep 2
+ run_game
+}
- # Game tools
- _folder="$_windows_folder"
- _ext=".exe"
- 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
+#TODO: Make this a seperate script
+# it should not be called compile, rename to 'generate' shader headers,
+# its a code writing tool, not a compiling tool
+#
+target_shaders=""
+shader(){
+ target_shaders="$target_shaders $1 $2 $3"
}
-
-server() {
- _compiler=$_linux_compiler
- _options=$_linux_options
- _link="-lm $_linux_linksteam"
- _folder="$_linux_server_folder"
- _src="server.c"
- _dst="skaterift_server"
- _ext=""
- compile_x
+compile_shaders(){
+ titleit "Compiling shaders"
+ source shaders.sh
+ cd shaders
+ ../bin/linux/tools/shader $target_shaders
+ cd ..
}
-all() {
- tools
- game
- server
+link_content(){
+ ln -sr bin/content/textures/ $1/textures
+ ln -sr bin/content/models/ $1/models
+ ln -sr bin/content/sound/ $1/sound
}
-distribution(){
- release
- tools
- game
- game_windows
- server
+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
+ compile_shaders
+
+ # 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/
+
+ _compiler=$_linux_compiler
+ _options=$_linux_options
+ _link="-lm $_linux_linksteam"
+ _src="server.c"
+ _folder=$_linux_server_folder
+ _dst="skaterift_server"
+ _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
+ ;;
+ testnet)
+ delay_run_game &
+ run_server
+ wait
+ ;;
+ *)
+ echo "Unrecognised command $1"
+ esac
}
+vg_command debug
source vg/vg_build.sh