diff options
| author | Aargh Rai <aargh.rai+git@gmail.com> | 2026-05-27 11:24:56 +0530 |
|---|---|---|
| committer | Aargh Rai <aargh.rai+git@gmail.com> | 2026-05-27 11:24:56 +0530 |
| commit | 380d67bada7544f5f10cecc8c9dff7ed2f79e187 (patch) | |
| tree | 397abd5b77211a17ee2e95c07ba54120db251f5f /build.c | |
| parent | f5c67c1410c1f9af5da99d2ea02192c21f8abc08 (diff) | |
server.c
Diffstat (limited to 'build.c')
| -rw-r--r-- | build.c | 53 |
1 files changed, 47 insertions, 6 deletions
@@ -6,6 +6,14 @@ #include <time.h> #include <string.h> +void print_cmd(char** args) { + int i = 0; + while (args[i] != NULL) { + printf("%s ", args[i++]); + } + printf("\n"); +} + // https://github.com/tsoding/nob.h/blob/0a08926d8094fc4ae678155c5d73ae21d1f96f3f/nob.h#L2413 int needs_rebuild(char* bin_file, char* source_file) { struct stat statbuf = {0}; @@ -28,26 +36,39 @@ int main(int argc, char** argv) { if (needs_rebuild(argv[0], __FILE__)) { if (fork() == 0) { char* args[] = {"gcc", __FILE__, "-o", argv[0], NULL}; + print_cmd(args); execvp(args[0], args); return 0; } else { wait(NULL); + print_cmd(argv); execvp(argv[0], argv); } } + if (fork() == 0) { + char* args[] = {"mkdir", "-p", "output", NULL}; + print_cmd(args); + execvp(args[0], args); + return 0; + } else { + wait(NULL); + } + if (argc > 1) { if (strcmp(argv[1], "test") == 0) { printf("Test mode\n"); if (fork() == 0) { - char* args[] = {"gcc", "generate/find_tests.c", "-o", "find_tests.o", NULL}; + char* args[] = {"gcc", "generate/find_tests.c", "-o", "output/find_tests.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } else { wait(NULL); } if (fork() == 0) { - char* args[] = {"./find_tests.o", NULL}; + char* args[] = {"./output/find_tests.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } else { @@ -55,28 +76,48 @@ int main(int argc, char** argv) { } printf("\n"); if (fork() == 0) { - char* args[] = {"gcc", "tests/main.c", "-o", "test.o", NULL}; + char* args[] = {"gcc", "tests/main.c", "-o", "output/test.o", NULL}; + print_cmd(args); + execvp(args[0], args); + return 0; + } else { + wait(NULL); + } + + char* args[] = {"./output/test.o", NULL}; + print_cmd(args); + execvp(args[0], args); + return 0; + } + if (strcmp(argv[1], "server") == 0) { + printf("Server mode\n"); + if (fork() == 0) { + char* args[] = {"gcc", "src/server.c", "-lcrypto", "-o", "output/server.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } else { wait(NULL); } - char* args[] = {"./test.o", NULL}; + char* args[] = {"./output/server.o", "./output/main.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } } if (fork() == 0) { - char* args[] = {"gcc", "src/main.c", "-o", "main.o", NULL}; + char* args[] = {"gcc", "src/main.c", "-o", "output/main.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } else { wait(NULL); } - char* args[] = {"./main.o", NULL}; + char* args[] = {"./output/main.o", NULL}; + print_cmd(args); execvp(args[0], args); return 0; } |
