-#!/bin/bash
-# Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved
-
-# Compiler Presets
-# ==============================================================================
-
-_linux_compiler="gcc -std=c99 -D_REENTRANT"
-_linux_linkgraphics="-lGL -lglfw3 -lX11 -lXxf86vm -lXrandr -lm -pthread -lXi -ldl"
-_linux_asan="-fsanitize=address"
-_linux_linksteam="-lsteam_api"
-_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="bin/win32"
-
-_options_debugmode="-O0 -ggdb3 -fno-omit-frame-pointer"
-_options_release="-O3 -DVG_RELEASE"
-
-# Compiler lines
-# ==============================================================================
-
-_warnings="-Wall -Wno-unused-function -Wno-unused-variable"
-_include="-I. -I./vg/dep -I./vg/src"
-_library="-L. -L./vg/dep/glfw -L./vg/dep/steam"
-_epilogue="-Wl,-rpath=./"
-_ext=""
-
-# Compile scripts
-# ==============================================================================
-
-compile_miniaudio(){
-
- temp_options=$_options
- _options="-O3"
-
- _link="-lm"
- _folder="."
- _src="-c vg/dep/dr_soft/miniaudio_impl.c"
- _dst="vg/dep/dr_soft/miniaudio_$1"
- _ext=".o"
- compile_x
-
- _options=$temp_options
-}
-
-# Again, these are not cross platform currently
-# TODO
-run_game(){
- cd $_linux_folder
- ./skaterift
- cd ./../
-}
-
-run_server(){
- cd $_linux_server_folder
- ./skaterift_server
- cd ./../
-}
-
-delay_run_game(){
- sleep 2
- run_game
-}
-
-#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"
-}
-
-compile_shaders(){
- titleit "Compiling shaders"
- source shaders.sh
- cd shaders
- ../bin/linux/tools/shader $target_shaders
- cd ..
-}
-
-link_content(){
- ln -sr bin/content/textures/ $1/textures
- ln -sr bin/content/models/ $1/models
- ln -sr bin/content/sound/ $1/sound
-}
-
-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
+clang -fsanitize=address -O0 -I./vg build.c -o /tmp/tmpsr && /tmp/tmpsr $@