nob.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #define NOB_IMPLEMENTATION
  2. #include "nob.h"
  3. int main(int argc, char **argv)
  4. {
  5. NOB_GO_REBUILD_URSELF(argc, argv);
  6. const char *program = nob_shift_args(&argc, &argv);
  7. Nob_Cmd cmd = {0};
  8. Nob_Procs procs = {0};
  9. if (nob_needs_rebuild1("binviz", "binviz.c")) {
  10. cmd.count = 0;
  11. nob_cmd_append(&cmd, "cc");
  12. nob_cmd_append(&cmd, "-Wall", "-Wextra", "-ggdb", "-pedantic");
  13. nob_cmd_append(&cmd, "-o", "binviz", "binviz.c");
  14. nob_cmd_append(&cmd, "-lm");
  15. nob_da_append(&procs, nob_cmd_run_async(cmd));
  16. } else {
  17. nob_log(NOB_INFO, "binviz is fresh");
  18. }
  19. if (nob_needs_rebuild1("img2raw", "img2raw.c")) {
  20. cmd.count = 0;
  21. nob_cmd_append(&cmd, "cc");
  22. nob_cmd_append(&cmd, "-Wall", "-Wextra", "-ggdb", "-pedantic");
  23. nob_cmd_append(&cmd, "-o", "img2raw", "img2raw.c");
  24. nob_cmd_append(&cmd, "-lm");
  25. nob_da_append(&procs, nob_cmd_run_async(cmd));
  26. } else {
  27. nob_log(NOB_INFO, "img2raw is fresh");
  28. }
  29. if (!nob_procs_wait(procs)) return 1;
  30. if (argc > 0) {
  31. const char *subcmd = nob_shift_args(&argc, &argv);
  32. cmd.count = 0;
  33. if (strcmp(subcmd, "img2raw") == 0) {
  34. nob_cmd_append(&cmd, "./img2raw");
  35. } else if (strcmp(subcmd, "binviz") == 0) {
  36. nob_cmd_append(&cmd, "./binviz");
  37. } else {
  38. nob_log(NOB_ERROR, "Unknown subcommand %s", subcmd);
  39. return 1;
  40. }
  41. for (size_t i = 0; i < argc; ++i) {
  42. nob_cmd_append(&cmd, argv[i]);
  43. }
  44. if (!nob_cmd_run_sync(cmd)) return 1;
  45. }
  46. return 0;
  47. }