refactor build system
[carveJwlIkooP6JGAAIwe30JlM.git] / build.sh
1 #!/bin/bash
2 # Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved
3
4 # Compiler Presets
5 # ==============================================================================
6
7 _linux_compiler="gcc -std=c99 -D_REENTRANT"
8 _linux_linkgraphics="-lGL -lglfw3 -lX11 -lXxf86vm -lXrandr -lm -pthread -lXi -ldl"
9 _linux_asan="-fsanitize=address"
10 _linux_linksteam="-lsteam_api"
11 _linux_folder="build.linux"
12 _linux_server_folder="build.linux_server"
13
14 _windows_compiler="i686-w64-mingw32-gcc"
15 _windows_linkgraphics="-lglfw3dll -lopengl32 -lm -mwindows"
16 _windows_asan=""
17 _windows_linksteam="vg/dep/steam/steam_api.dll"
18 _windows_folder="build.win32"
19
20 _options_debugmode="-O0 -ggdb3 -fno-omit-frame-pointer"
21 _options_release="-O3 -DVG_RELEASE"
22
23 # Compiler lines
24 # ==============================================================================
25
26 _warnings="-Wall -Wno-unused-function -Wno-unused-variable"
27 _include="-I. -I./vg/dep -I./vg/src"
28 _library="-L. -L./vg/dep/glfw -L./vg/dep/steam"
29 _epilogue="-Wl,-rpath=./"
30 _ext=""
31
32 # Compile scripts
33 # ==============================================================================
34
35 release(){
36 _linux_options=$_options_release
37 _windows_options=$_options_release
38 }
39
40 debug(){
41 _linux_options="$_linux_asan $_options_debugmode"
42 _windows_options="$_windows_asan $_options_debugmode"
43 }
44 debug
45
46 compile_miniaudio(){
47
48 temp_options=$_options
49 _options="-O3"
50
51 _link="-lm"
52 _folder="."
53 _src="-c vg/dep/dr_soft/miniaudio_impl.c"
54 _dst="vg/dep/dr_soft/miniaudio_$1"
55 _ext=".o"
56 compile_x
57
58 _options=$temp_options
59 }
60
61 game() {
62 _compiler=$_linux_compiler
63 _options=$_linux_options
64
65 compile_miniaudio linux
66
67 # Game tools
68 _folder="$_linux_folder"
69 _ext=""
70 vg_compile_tools
71
72 # Main build
73 _link="$_linux_linkgraphics $_linux_linksteam"
74 _src="main.c vg/dep/glad/glad.c vg/dep/dr_soft/miniaudio_linux.o"
75 _dst="skaterift"
76 compile_x
77 }
78
79 game_windows() {
80 _compiler=$_windows_compiler
81 _options=$_windows_options
82
83 compile_miniaudio windows
84
85 # Game tools
86 _folder="$_windows_folder"
87 _ext=".exe"
88 vg_compile_tools
89
90 # Main build
91 _link="$_windows_linkgraphics $_windows_linksteam"
92 _src="main.c vg/dep/glad/glad.c vg/dep/dr_soft/miniaudio_windows.o"
93 _dst="skaterift"
94 compile_x
95 }
96
97 server() {
98 _compiler=$_linux_compiler
99 _options=$_linux_options
100 _link="-lm $_linux_linksteam"
101 _folder="$_linux_server_folder"
102 _src="server.c"
103 _dst="skaterift_server"
104 _ext=""
105
106 compile_x
107 }
108
109 all() {
110 tools
111 game
112 server
113 }
114
115 distribution(){
116 release
117 tools
118 game
119 game_windows
120 server
121 }
122
123 source vg/vg_build.sh