Browse Source

[nob_linux] Use the *_and_reset pattern

rexim 11 months ago
parent
commit
762a729ff6
1 changed files with 47 additions and 71 deletions
  1. 47 71
      src_build/nob_linux.c

+ 47 - 71
src_build/nob_linux.c

@@ -7,62 +7,43 @@ bool build_musializer(void)
     Nob_Procs procs = {0};
 
 #ifdef MUSIALIZER_HOTRELOAD
-        procs.count = 0;
-            cmd.count = 0;
-                // TODO: add a way to replace `cc` with something else GCC compatible on POSIX
-                // Like `clang` for instance
-                nob_cmd_append(&cmd, "cc");
-                nob_cmd_append(&cmd, "-Wall", "-Wextra", "-ggdb");
-                nob_cmd_append(&cmd, "-I.");
-                nob_cmd_append(&cmd, "-I./raylib/raylib-"RAYLIB_VERSION"/src/");
-                nob_cmd_append(&cmd, "-fPIC", "-shared");
-                nob_cmd_append(&cmd, "-o", "./build/libplug.so");
-                nob_cmd_append(&cmd,
-                    "./src/plug.c",
-                    "./src/ffmpeg_linux.c");
-                nob_cmd_append(&cmd,
-                    nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME),
-                    "-l:libraylib.so");
-                nob_cmd_append(&cmd, "-lm", "-ldl", "-lpthread");
-            nob_da_append(&procs, nob_cmd_run_async(cmd));
-
-            cmd.count = 0;
-                nob_cmd_append(&cmd, "cc");
-                nob_cmd_append(&cmd, "-Wall", "-Wextra", "-ggdb");
-                nob_cmd_append(&cmd, "-I.");
-                nob_cmd_append(&cmd, "-I./raylib/raylib-"RAYLIB_VERSION"/src/");
-                nob_cmd_append(&cmd, "-o", "./build/musializer");
-                nob_cmd_append(&cmd,
-                    "./src/musializer.c",
-                    "./src/hotreload_posix.c");
-                nob_cmd_append(&cmd,
-                    "-Wl,-rpath=./build/",
-                    "-Wl,-rpath=./",
-                    nob_temp_sprintf("-Wl,-rpath=./build/raylib/%s", MUSIALIZER_TARGET_NAME),
-                    // NOTE: just in case somebody wants to run musializer from within the ./build/ folder
-                    nob_temp_sprintf("-Wl,-rpath=./raylib/%s", MUSIALIZER_TARGET_NAME));
-                nob_cmd_append(&cmd,
-                    nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME),
-                    "-l:libraylib.so");
-                nob_cmd_append(&cmd, "-lm", "-ldl", "-lpthread");
-            nob_da_append(&procs, nob_cmd_run_async(cmd));
-        if (!nob_procs_wait(procs)) nob_return_defer(false);
+    // TODO: add a way to replace `cc` with something else GCC compatible on POSIX
+    // Like `clang` for instance
+    nob_cmd_append(&cmd, "cc",
+        "-Wall", "-Wextra", "-ggdb",
+        "-I.", "-I./raylib/raylib-"RAYLIB_VERSION"/src/",
+        "-fPIC", "-shared",
+        "-o", "./build/libplug.so",
+        "./src/plug.c", "./src/ffmpeg_linux.c",
+        nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME), "-l:libraylib.so",
+        "-lm", "-ldl", "-lpthread");
+    nob_da_append(&procs, nob_cmd_run_async_and_reset(&cmd));
+
+    nob_cmd_append(&cmd, "cc",
+        "-Wall", "-Wextra", "-ggdb",
+        "-I.", "-I./raylib/raylib-"RAYLIB_VERSION"/src/",
+        "-o", "./build/musializer",
+        "./src/musializer.c", "./src/hotreload_posix.c",
+        "-Wl,-rpath=./build/",
+        "-Wl,-rpath=./",
+        nob_temp_sprintf("-Wl,-rpath=./build/raylib/%s", MUSIALIZER_TARGET_NAME),
+        // NOTE: just in case somebody wants to run musializer from within the ./build/ folder
+        nob_temp_sprintf("-Wl,-rpath=./raylib/%s", MUSIALIZER_TARGET_NAME),
+        nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME),
+        "-l:libraylib.so", "-lm", "-ldl", "-lpthread");
+    nob_da_append(&procs, nob_cmd_run_async_and_reset(&cmd));
+
+    if (!nob_procs_wait_and_reset(&procs)) nob_return_defer(false);
 #else
-        cmd.count = 0;
-            nob_cmd_append(&cmd, "cc");
-            nob_cmd_append(&cmd, "-Wall", "-Wextra", "-ggdb");
-            nob_cmd_append(&cmd, "-I.");
-            nob_cmd_append(&cmd, "-I./raylib/raylib-"RAYLIB_VERSION"/src/");
-            nob_cmd_append(&cmd, "-o", "./build/musializer");
-            nob_cmd_append(&cmd,
-                "./src/plug.c",
-                "./src/ffmpeg_linux.c",
-                "./src/musializer.c");
-            nob_cmd_append(&cmd,
-                nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME),
-                "-l:libraylib.a");
-            nob_cmd_append(&cmd, "-lm", "-ldl", "-lpthread");
-        if (!nob_cmd_run_sync(cmd)) nob_return_defer(false);
+    nob_cmd_append(&cmd, "cc",
+        "-Wall", "-Wextra", "-ggdb",
+        "-I.",
+        "-I./raylib/raylib-"RAYLIB_VERSION"/src/",
+        "-o", "./build/musializer",
+        "./src/plug.c", "./src/ffmpeg_linux.c", "./src/musializer.c",
+        nob_temp_sprintf("-L./build/raylib/%s", MUSIALIZER_TARGET_NAME), "-l:libraylib.a",
+        "-lm", "-ldl", "-lpthread");
+    if (!nob_cmd_run_sync_and_reset(&cmd)) nob_return_defer(false);
 #endif // MUSIALIZER_HOTRELOAD
 
 defer:
@@ -97,19 +78,16 @@ bool build_raylib(void)
         nob_da_append(&object_files, output_path);
 
         if (nob_needs_rebuild(output_path, &input_path, 1)) {
-            cmd.count = 0;
-            nob_cmd_append(&cmd, "cc");
-            nob_cmd_append(&cmd, "-ggdb", "-DPLATFORM_DESKTOP", "-fPIC", "-DSUPPORT_FILEFORMAT_FLAC=1");
-            nob_cmd_append(&cmd, "-I./raylib/raylib-"RAYLIB_VERSION"/src/external/glfw/include");
-            nob_cmd_append(&cmd, "-c", input_path);
-            nob_cmd_append(&cmd, "-o", output_path);
-            Nob_Proc proc = nob_cmd_run_async(cmd);
-            nob_da_append(&procs, proc);
+            nob_cmd_append(&cmd, "cc",
+                "-ggdb", "-DPLATFORM_DESKTOP", "-fPIC", "-DSUPPORT_FILEFORMAT_FLAC=1",
+                "-I./raylib/raylib-"RAYLIB_VERSION"/src/external/glfw/include",
+                "-c", input_path,
+                "-o", output_path);
+            nob_da_append(&procs, nob_cmd_run_async_and_reset(&cmd));
         }
     }
-    cmd.count = 0;
 
-    if (!nob_procs_wait(procs)) nob_return_defer(false);
+    if (!nob_procs_wait_and_reset(&procs)) nob_return_defer(false);
 
 #ifndef MUSIALIZER_HOTRELOAD
     const char *libraylib_path = nob_temp_sprintf("%s/libraylib.a", build_path);
@@ -120,20 +98,18 @@ bool build_raylib(void)
             const char *input_path = nob_temp_sprintf("%s/%s.o", build_path, raylib_modules[i]);
             nob_cmd_append(&cmd, input_path);
         }
-        if (!nob_cmd_run_sync(cmd)) nob_return_defer(false);
+        if (!nob_cmd_run_sync_and_reset(&cmd)) nob_return_defer(false);
     }
 #else
     const char *libraylib_path = nob_temp_sprintf("%s/libraylib.so", build_path);
 
     if (nob_needs_rebuild(libraylib_path, object_files.items, object_files.count)) {
-        nob_cmd_append(&cmd, "cc");
-        nob_cmd_append(&cmd, "-shared");
-        nob_cmd_append(&cmd, "-o", libraylib_path);
+        nob_cmd_append(&cmd, "cc", "-shared", "-o", libraylib_path);
         for (size_t i = 0; i < NOB_ARRAY_LEN(raylib_modules); ++i) {
             const char *input_path = nob_temp_sprintf("%s/%s.o", build_path, raylib_modules[i]);
             nob_cmd_append(&cmd, input_path);
         }
-        if (!nob_cmd_run_sync(cmd)) nob_return_defer(false);
+        if (!nob_cmd_run_sync_and_reset(&cmd)) nob_return_defer(false);
     }
 #endif // MUSIALIZER_HOTRELOAD
 
@@ -156,7 +132,7 @@ bool build_dist()
     // There are some static executables for Linux
     Nob_Cmd cmd = {0};
     nob_cmd_append(&cmd, "tar", "fvcz", "./musializer-linux-x86_64.tar.gz", "./musializer-linux-x86_64");
-    bool ok = nob_cmd_run_sync(cmd);
+    bool ok = nob_cmd_run_sync_and_reset(&cmd);
     nob_cmd_free(cmd);
     if (!ok) return false;