55
66#define COMMON_CFLAGS "-Wall", "-Wextra", "-pedantic", "-ggdb", "-I.", "-I./build/", "-I./dev-deps/"
77
8- Cmd cmd = {0 };
9- Procs procs = {0 };
10-
11- bool build_tools (void )
8+ bool build_tools (Cmd * cmd )
129{
1310 if (!mkdir_if_not_exists ("build" )) return false;
1411 if (!mkdir_if_not_exists ("build/tools" )) return false;
1512
16- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-o" , "./build/tools/png2c" , "./tools/png2c.c" , "-lm" );
17- if (!cmd_run_sync_and_reset (& cmd )) return false;
13+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-o" , "./build/tools/png2c" , "./tools/png2c.c" , "-lm" );
14+ if (!cmd_run_sync_and_reset (cmd )) return false;
1815
19- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-o" , "./build/tools/obj2c" , "./tools/obj2c.c" , "-lm" );
20- if (!cmd_run_sync_and_reset (& cmd )) return false;
16+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-o" , "./build/tools/obj2c" , "./tools/obj2c.c" , "-lm" );
17+ if (!cmd_run_sync_and_reset (cmd )) return false;
2118
2219 return true;
2320}
2421
25- bool build_assets (void )
22+ bool build_assets (Cmd * cmd )
2623{
2724 if (!mkdir_if_not_exists ("build" )) return false;
2825 if (!mkdir_if_not_exists ("build/assets" )) return false;
2926
30- cmd_append (& cmd , "./build/tools/png2c" , "-n" , "tsodinPog" , "-o" , "./build/assets/tsodinPog.c" , "./assets/tsodinPog.png" );
31- if (!cmd_run_sync_and_reset (& cmd )) return false;
27+ cmd_append (cmd , "./build/tools/png2c" , "-n" , "tsodinPog" , "-o" , "./build/assets/tsodinPog.c" , "./assets/tsodinPog.png" );
28+ if (!cmd_run_sync_and_reset (cmd )) return false;
3229
33- cmd_append (& cmd , "./build/tools/png2c" , "-n" , "tsodinCup" , "-o" , "./build/assets/tsodinCup.c" , "./assets/tsodinCup.png" );
34- if (!cmd_run_sync_and_reset (& cmd )) return false;
30+ cmd_append (cmd , "./build/tools/png2c" , "-n" , "tsodinCup" , "-o" , "./build/assets/tsodinCup.c" , "./assets/tsodinCup.png" );
31+ if (!cmd_run_sync_and_reset (cmd )) return false;
3532
36- cmd_append (& cmd , "./build/tools/png2c" , "-n" , "oldstone" , "-o" , "./build/assets/oldstone.c" , "./assets/oldstone.png" );
37- if (!cmd_run_sync_and_reset (& cmd )) return false;
33+ cmd_append (cmd , "./build/tools/png2c" , "-n" , "oldstone" , "-o" , "./build/assets/oldstone.c" , "./assets/oldstone.png" );
34+ if (!cmd_run_sync_and_reset (cmd )) return false;
3835
39- cmd_append (& cmd , "./build/tools/png2c" , "-n" , "lavastone" , "-o" , "./build/assets/lavastone.c" , "./assets/lavastone.png" );
40- if (!cmd_run_sync_and_reset (& cmd )) return false;
36+ cmd_append (cmd , "./build/tools/png2c" , "-n" , "lavastone" , "-o" , "./build/assets/lavastone.c" , "./assets/lavastone.png" );
37+ if (!cmd_run_sync_and_reset (cmd )) return false;
4138
42- cmd_append (& cmd , "./build/tools/obj2c" , "-o" , "./build/assets/tsodinCupLowPoly.c" , "./assets/tsodinCupLowPoly.obj" );
43- if (!cmd_run_sync_and_reset (& cmd )) return false;
39+ cmd_append (cmd , "./build/tools/obj2c" , "-o" , "./build/assets/tsodinCupLowPoly.c" , "./assets/tsodinCupLowPoly.obj" );
40+ if (!cmd_run_sync_and_reset (cmd )) return false;
4441
45- cmd_append (& cmd , "./build/tools/obj2c" , "-s" , "0.40" , "-o" , "./build/assets/utahTeapot.c" , "./assets/utahTeapot.obj" );
46- if (!cmd_run_sync_and_reset (& cmd )) return false;
42+ cmd_append (cmd , "./build/tools/obj2c" , "-s" , "0.40" , "-o" , "./build/assets/utahTeapot.c" , "./assets/utahTeapot.obj" );
43+ if (!cmd_run_sync_and_reset (cmd )) return false;
4744
48- cmd_append (& cmd , "./build/tools/obj2c" , "-s" , "1.5" , "-o" , "./build/assets/penger.c" , "./assets/penger_obj/penger.obj" );
49- if (!cmd_run_sync_and_reset (& cmd )) return false;
45+ cmd_append (cmd , "./build/tools/obj2c" , "-s" , "1.5" , "-o" , "./build/assets/penger.c" , "./assets/penger_obj/penger.obj" );
46+ if (!cmd_run_sync_and_reset (cmd )) return false;
5047
5148 return true;
5249}
5350
54- bool build_tests (void )
51+ bool build_tests (Cmd * cmd )
5552{
56- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-fsanitize=memory" , "-o" , "./build/test" , "test.c" , "-lm" );
57- if (!cmd_run_sync_and_reset (& cmd )) return false;
53+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-fsanitize=memory" , "-o" , "./build/test" , "test.c" , "-lm" );
54+ if (!cmd_run_sync_and_reset (cmd )) return false;
5855 return true;
5956}
6057
61- void build_wasm_demo (const char * name )
58+ void build_wasm_demo (Cmd * cmd , Procs * procs , const char * name )
6259{
63- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-O2" , "-fno-builtin" , "--target=wasm32" , "--no-standard-libraries" , "-Wl,--no-entry" , "-Wl,--export=vc_render" , "-Wl,--export=__heap_base" , "-Wl,--allow-undefined" , "-o" , temp_sprintf ("./build/demos/%s.wasm" , name ), "-DVC_PLATFORM=VC_WASM_PLATFORM" , temp_sprintf ("./demos/%s.c" , name ));
64- da_append (& procs , cmd_run_async_and_reset (& cmd ));
60+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-O2" , "-fno-builtin" , "--target=wasm32" , "--no-standard-libraries" , "-Wl,--no-entry" , "-Wl,--export=vc_render" , "-Wl,--export=__heap_base" , "-Wl,--allow-undefined" , "-o" , temp_sprintf ("./build/demos/%s.wasm" , name ), "-DVC_PLATFORM=VC_WASM_PLATFORM" , temp_sprintf ("./demos/%s.c" , name ));
61+ da_append (procs , cmd_run_async_and_reset (cmd ));
6562}
6663
67- void build_term_demo (const char * name )
64+ void build_term_demo (Cmd * cmd , Procs * procs , const char * name )
6865{
69- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-O2" , "-o" , temp_sprintf ("./build/demos/%s.term" , name ), "-DVC_PLATFORM=VC_TERM_PLATFORM" , "-D_XOPEN_SOURCE=600" , temp_sprintf ("./demos/%s.c" , name ), "-lm" );
70- da_append (& procs , cmd_run_async_and_reset (& cmd ));
66+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-O2" , "-o" , temp_sprintf ("./build/demos/%s.term" , name ), "-DVC_PLATFORM=VC_TERM_PLATFORM" , "-D_XOPEN_SOURCE=600" , temp_sprintf ("./demos/%s.c" , name ), "-lm" );
67+ da_append (procs , cmd_run_async_and_reset (cmd ));
7168}
7269
73- void build_sdl_demo (const char * name )
70+ void build_sdl_demo (Cmd * cmd , Procs * procs , const char * name )
7471{
75- cmd_append (& cmd , "clang" , COMMON_CFLAGS , "-O2" , "-o" , temp_sprintf ("./build/demos/%s.sdl" , name ), "-DVC_PLATFORM=VC_SDL_PLATFORM" , temp_sprintf ("./demos/%s.c" , name ), "-lm" , "-lSDL2" , NULL );
76- da_append (& procs , cmd_run_async_and_reset (& cmd ));
72+ cmd_append (cmd , "clang" , COMMON_CFLAGS , "-O2" , "-o" , temp_sprintf ("./build/demos/%s.sdl" , name ), "-DVC_PLATFORM=VC_SDL_PLATFORM" , temp_sprintf ("./demos/%s.c" , name ), "-lm" , "-lSDL2" , NULL );
73+ da_append (procs , cmd_run_async_and_reset (cmd ));
7774}
7875
79- void build_vc_demo (const char * name )
76+ void build_vc_demo (Cmd * cmd , Procs * procs , const char * name )
8077{
81- build_wasm_demo (name );
82- build_term_demo (name );
83- build_sdl_demo (name );
78+ build_wasm_demo (cmd , procs , name );
79+ build_term_demo (cmd , procs , name );
80+ build_sdl_demo (cmd , procs , name );
8481}
8582
86- bool build_all_vc_demos (void )
83+ bool build_all_vc_demos (Cmd * cmd , Procs * procs )
8784{
8885 if (!mkdir_if_not_exists ("build" )) return false;
8986 if (!mkdir_if_not_exists ("build/demos" )) return false;
@@ -102,12 +99,12 @@ bool build_all_vc_demos(void)
10299 size_t thread_count = 6 ;
103100
104101 for (size_t i = 0 ; i < ARRAY_LEN (names ); ++ i ) {
105- build_vc_demo (names [i ]);
106- if (procs . count >= thread_count ) {
107- if (!nob_procs_wait_and_reset (& procs )) return false;
102+ build_vc_demo (cmd , procs , names [i ]);
103+ if (procs -> count >= thread_count ) {
104+ if (!nob_procs_wait_and_reset (procs )) return false;
108105 }
109106 }
110- if (!nob_procs_wait_and_reset (& procs )) return false;
107+ if (!nob_procs_wait_and_reset (procs )) return false;
111108
112109 for (size_t i = 0 ; i < ARRAY_LEN (names ); ++ i ) {
113110 const char * src_path = temp_sprintf ("./build/demos/%s.wasm" , names [i ]);
@@ -143,30 +140,33 @@ int main(int argc, char **argv)
143140{
144141 NOB_GO_REBUILD_URSELF (argc , argv );
145142
143+ Cmd cmd = {0 };
144+ Procs procs = {0 };
145+
146146 const char * program = shift_args (& argc , & argv );
147147
148148 if (argc > 0 ) {
149149 const char * subcmd = shift_args (& argc , & argv );
150150 if (strcmp (subcmd , "tools" ) == 0 ) {
151- if (!build_tools ()) return 1 ;
151+ if (!build_tools (& cmd )) return 1 ;
152152 } else if (strcmp (subcmd , "assets" ) == 0 ) {
153- if (!build_assets ()) return 1 ;
153+ if (!build_assets (& cmd )) return 1 ;
154154 } else if (strcmp (subcmd , "tests" ) == 0 || strcmp (subcmd , "test" ) == 0 ) {
155- if (!build_tests ()) return 1 ;
155+ if (!build_tests (& cmd )) return 1 ;
156156 if (argc > 0 ) {
157157 cmd_append (& cmd , "./build/test" );
158158 da_append_many (& cmd , argv , argc );
159159 if (!cmd_run_sync_and_reset (& cmd )) return 1 ;
160160 }
161161 } else if (strcmp (subcmd , "demos" ) == 0 ) {
162162 if (argc <= 0 ) {
163- if (!build_all_vc_demos ()) return 1 ;
163+ if (!build_all_vc_demos (& cmd , & procs )) return 1 ;
164164 return 0 ;
165165 }
166166
167167 const char * name = shift (argv , argc );
168168 if (argc <= 0 ) {
169- build_vc_demo (name );
169+ build_vc_demo (& cmd , & procs , name );
170170 if (!procs_wait_and_reset (& procs )) return 1 ;
171171 const char * src_path = temp_sprintf ("./build/demos/%s.wasm" , name );
172172 const char * dst_path = temp_sprintf ("./wasm/%s.wasm" , name );
@@ -176,7 +176,7 @@ int main(int argc, char **argv)
176176
177177 const char * platform = shift (argv , argc );
178178 if (strcmp (platform , "sdl" ) == 0 ) {
179- build_sdl_demo (name );
179+ build_sdl_demo (& cmd , & procs , name );
180180 if (!procs_wait_and_reset (& procs )) return 1 ;
181181 if (argc <= 0 ) return 0 ;
182182 const char * run = shift (argv , argc );
@@ -189,7 +189,7 @@ int main(int argc, char **argv)
189189 if (!cmd_run_sync_and_reset (& cmd )) return 1 ;
190190 return 0 ;
191191 } else if (strcmp (platform , "term" ) == 0 ) {
192- build_term_demo (name );
192+ build_term_demo (& cmd , & procs , name );
193193 if (!procs_wait_and_reset (& procs )) return 1 ;
194194 if (argc <= 0 ) return 0 ;
195195 const char * run = shift (argv , argc );
@@ -202,7 +202,7 @@ int main(int argc, char **argv)
202202 if (!cmd_run_sync_and_reset (& cmd )) return 1 ;
203203 return 0 ;
204204 } else if (strcmp (platform , "wasm" ) == 0 ) {
205- build_wasm_demo (name );
205+ build_wasm_demo (& cmd , & procs , name );
206206 if (!procs_wait_and_reset (& procs )) return 1 ;
207207 const char * src_path = temp_sprintf ("./build/demos/%s.wasm" , name );
208208 const char * dst_path = temp_sprintf ("./wasm/%s.wasm" , name );
@@ -220,10 +220,10 @@ int main(int argc, char **argv)
220220 return 1 ;
221221 }
222222 } else {
223- if (!build_tools ()) return 1 ;
224- if (!build_assets ()) return 1 ;
225- if (!build_tests ()) return 1 ;
226- if (!build_all_vc_demos ()) return 1 ;
223+ if (!build_tools (& cmd )) return 1 ;
224+ if (!build_assets (& cmd )) return 1 ;
225+ if (!build_tests (& cmd )) return 1 ;
226+ if (!build_all_vc_demos (& cmd , & procs )) return 1 ;
227227 }
228228
229229 return 0 ;
0 commit comments