gebs_needs_rebuild_many() macro

This commit is contained in:
kamkow1
2025-05-19 14:20:10 +02:00
parent dbe1af7125
commit 78732d1aef
2 changed files with 18 additions and 4 deletions

4
gebs.c
View File

@ -9,10 +9,14 @@ int main(int argc, char ** argv)
gebs_mkdir("build");
}
if (gebs_needs_rebuild_many("build/self_rebuild", "example/self_rebuild.c")) {
if (GEBS_CMD("gcc", "-ggdb", "-o", "build/self_rebuild", "example/self_rebuild.c") != 0)
return 1;
}
if (gebs_needs_rebuild_many("build/arena", "example/arena.c")) {
if (GEBS_CMD("gcc", "-ggdb", "-o", "build/arena", "example/arena.c") != 0)
return 1;
}
return 0;
}

10
gebs.h
View File

@ -236,6 +236,16 @@ void gebs_rebuild_self1_alloc(Gebs_Allocator *alloc, int argc, char ** argv,
sizeof(__argv)/sizeof(__argv[0]), (char**)__argv, __FILE__); \
} while(0)
#define gebs_needs_rebuild_many(out, ...) \
({ \
const char *__deps[] = { __VA_ARGS__ }; \
bool __ok = true; \
for (size_t __i = 0; __i < sizeof(__deps)/sizeof(__deps[0]); __i++) { \
__ok = __ok && gebs_needs_rebuild((out), __deps[__i]); \
} \
__ok; \
})
// ----------------------------------------------------------------------------
// Scratch arena
// ----------------------------------------------------------------------------