X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=build.sh;h=d807648f5c4c0b8567c1d98974b8037da16bbe8d;hb=e311bbe2fa903a7e2a922f202f389b799193195d;hp=1bf5fdde0532db350608e3419d4640df80bcdab5;hpb=c2d67378dd5c82de50b8fbbbe222ec6be2da4eee;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/build.sh b/build.sh index 1bf5fdd..d807648 100755 --- a/build.sh +++ b/build.sh @@ -1,246 +1 @@ -#!/bin/bash -# Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved -# -# Main cross-compiling build script for Skate Rift -# Supports Linux and Windows building from a Linux Host -# -# vg must be "ln -s"'d into this src folder as the only dependency -# -# 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 -} - -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 - - # 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="-pthread -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 -} - -lsan_file=$(realpath ".lsan_suppress.txt") -export LSAN_OPTIONS="suppressions=$lsan_file" - -vg_command debug -source vg/vg_build.sh +clang -fsanitize=address -O0 -I./vg build.c -o /tmp/tmpsr && /tmp/tmpsr $@