gebs_needs_rebuild_many() macro
This commit is contained in:
4
gebs.c
4
gebs.c
@ -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
10
gebs.h
@ -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
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user