2
0

nob.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #define NOB_IMPLEMENTATION
  2. #define NOB_STRIP_PREFIX
  3. #include "thirdparty/nob.h"
  4. #define BUILD_FOLDER "build/"
  5. #define SRC_FOLDER "src/"
  6. #define EXAMPLES_FOLDER "examples/"
  7. #define THIRDPARTY_FOLDER "thirdparty/"
  8. static Cmd cmd = {0};
  9. static Procs procs = {0};
  10. static void compile(void)
  11. {
  12. cmd_append(&cmd, "cc");
  13. cmd_append(&cmd, "-Wall");
  14. cmd_append(&cmd, "-Wextra");
  15. cmd_append(&cmd, "-Wswitch-enum");
  16. cmd_append(&cmd, "-I.");
  17. cmd_append(&cmd, "-I"THIRDPARTY_FOLDER);
  18. }
  19. int main(int argc, char **argv)
  20. {
  21. NOB_GO_REBUILD_URSELF(argc, argv);
  22. if (!mkdir_if_not_exists(BUILD_FOLDER)) return 1;
  23. compile();
  24. cmd_append(&cmd, "-ggdb");
  25. cmd_append(&cmd, "-o", BUILD_FOLDER"lag");
  26. cmd_append(&cmd, SRC_FOLDER"lag.c");
  27. if (!cmd_run(&cmd)) return 1;
  28. cmd_append(&cmd, BUILD_FOLDER"lag");
  29. if (!cmd_run(&cmd, .stdout_path = "./la.h")) return 1;
  30. {
  31. compile();
  32. cmd_append(&cmd, "-pedantic");
  33. cmd_append(&cmd, "-std=c11");
  34. cmd_append(&cmd, "-ggdb");
  35. cmd_append(&cmd, "-o", BUILD_FOLDER"ball");
  36. cmd_append(&cmd, EXAMPLES_FOLDER"ball.c");
  37. cmd_append(&cmd, "-lm");
  38. if (!cmd_run(&cmd, .async = &procs)) return 1;
  39. compile();
  40. cmd_append(&cmd, "-DLA_IMPLEMENTATION");
  41. cmd_append(&cmd, "-x", "c++");
  42. cmd_append(&cmd, "-o", BUILD_FOLDER"la.cxx.o");
  43. cmd_append(&cmd, "-c");
  44. cmd_append(&cmd, "la.h");
  45. if (!cmd_run(&cmd, .async = &procs)) return 1;
  46. compile();
  47. cmd_append(&cmd, "-pedantic");
  48. cmd_append(&cmd, "-std=c11");
  49. cmd_append(&cmd, "-DLA_IMPLEMENTATION");
  50. cmd_append(&cmd, "-x", "c");
  51. cmd_append(&cmd, "-o", BUILD_FOLDER"la.c.o");
  52. cmd_append(&cmd, "-c");
  53. cmd_append(&cmd, "la.h");
  54. if (!cmd_run(&cmd, .async = &procs)) return 1;
  55. if (!procs_flush(&procs)) return 1;
  56. }
  57. return 0;
  58. }