Pack the assets into a ZIP bundle
This commit is contained in:
113
build.c
113
build.c
@ -1,6 +1,8 @@
|
||||
#include <libgen.h>
|
||||
#define GEBS_NO_PREFIX
|
||||
#define GEBS_IMPLEMENTATION
|
||||
#include "gebs/gebs.h"
|
||||
#include "./zip/src/zip.c"
|
||||
|
||||
char *prog = NULL;
|
||||
|
||||
@ -15,6 +17,27 @@ int main(int argc, char ** argv)
|
||||
prog = SHIFT(&argc, &argv);
|
||||
char *cmd = SHIFT(&argc, &argv);
|
||||
if (strcmp(cmd, "make") == 0) {
|
||||
#define BUNDLED_FILES \
|
||||
"./gpp1", \
|
||||
"./tmpls/home.html", \
|
||||
"./tmpls/page-missing.html", \
|
||||
"./tmpls/template-blog.html", \
|
||||
"./tmpls/blog.html", \
|
||||
"./etc/hotreload.js", \
|
||||
"./etc/theme.js", \
|
||||
"./etc/simple.css", \
|
||||
"./etc/highlight.js", \
|
||||
"./etc/hljs-rainbow.css", \
|
||||
"./etc/marked.js", \
|
||||
"./etc/favicon.ico", \
|
||||
"./etc/me.jpg", \
|
||||
"./etc/tmoa-engine.jpg", \
|
||||
"./etc/tmoa-garbage.jpg", \
|
||||
"./blog/welcome.md", \
|
||||
"./blog/weird-page.md", \
|
||||
"./blog/curious-case-of-gebs.md", \
|
||||
"./blog/the-making-of-aboba.md"
|
||||
|
||||
RULE("./aboba",
|
||||
"./main.c",
|
||||
"./routes.c",
|
||||
@ -29,28 +52,9 @@ int main(int argc, char ** argv)
|
||||
"./locked.h",
|
||||
|
||||
"./mongoose.o",
|
||||
"./gpp1",
|
||||
|
||||
"./tmpls/home.html",
|
||||
"./tmpls/page-missing.html",
|
||||
"./tmpls/template-blog.html",
|
||||
"./tmpls/blog.html",
|
||||
|
||||
"./etc/hotreload.js",
|
||||
"./etc/theme.js",
|
||||
"./etc/simple.css",
|
||||
"./etc/highlight.js",
|
||||
"./etc/hljs-rainbow.css",
|
||||
"./etc/marked.js",
|
||||
"./etc/favicon.ico",
|
||||
"./etc/me.jpg",
|
||||
"./etc/tmoa-engine.jpg",
|
||||
"./etc/tmoa-garbage.jpg",
|
||||
|
||||
"./blog/welcome.md",
|
||||
"./blog/weird-page.md",
|
||||
"./blog/curious-case-of-gebs.md",
|
||||
"./blog/the-making-of-aboba.md"
|
||||
"./bundle.zip",
|
||||
BUNDLED_FILES
|
||||
) {
|
||||
|
||||
RULE("./mongoose.o", "./mongoose/mongoose.c") {
|
||||
@ -63,10 +67,6 @@ int main(int argc, char ** argv)
|
||||
#endif
|
||||
}
|
||||
|
||||
RULE("./gpp1", "./gpp/gpp.c") {
|
||||
CMD("cc", "-DHAVE_STRDUP", "-DHAVE_FNMATCH_H", "-o", "gpp1", "gpp/gpp.c");
|
||||
}
|
||||
|
||||
RULE("./commit.h") {
|
||||
String_Builder commit = {0};
|
||||
defer { sb_free(&commit); }
|
||||
@ -95,18 +95,63 @@ int main(int argc, char ** argv)
|
||||
}
|
||||
}
|
||||
|
||||
const char *bundle_zip_deps[] = { BUNDLED_FILES };
|
||||
|
||||
RULE_ARRAY("./bundle.zip", bundle_zip_deps) {
|
||||
RULE("./gpp1", "./gpp/gpp.c") {
|
||||
CMD("cc", "-DHAVE_STRDUP", "-DHAVE_FNMATCH_H", "-o", "gpp1", "gpp/gpp.c");
|
||||
}
|
||||
|
||||
struct zip_t *zip = zip_open("./bundle.zip", ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
|
||||
defer { zip_close(zip); }
|
||||
|
||||
for (size_t i = 0; i < sizeof(bundle_zip_deps)/sizeof(bundle_zip_deps[0]); i++) {
|
||||
char *copy = strdup(bundle_zip_deps[i]);
|
||||
defer { free(copy); }
|
||||
char *name = basename(copy);
|
||||
|
||||
String_Builder sb = {0};
|
||||
defer { sb_free(&sb); }
|
||||
sb_read_file(&sb, bundle_zip_deps[i]);
|
||||
|
||||
zip_entry_open(zip, name);
|
||||
zip_entry_write(zip, sb.items, sb.count);
|
||||
zip_entry_close(zip);
|
||||
}
|
||||
LOGI("Generated bundle.zip\n");
|
||||
}
|
||||
|
||||
#define CC "cc"
|
||||
#define TARGET "-o", "aboba"
|
||||
#if MY_DEBUG
|
||||
CMD("cc", "-fsanitize=address", "-fPIC", "-ggdb", "-I.", "-DMY_DEBUG=1", "-D_GNU_SOURCE", "-DGEBS_NO_PREFIX",
|
||||
"-DINCBIN_PREFIX=", "-DINCBIN_STYLE=INCBIN_STYLE_SNAKE", "-Wl,-z,execstack", "-o", "./aboba",
|
||||
"./main.c", "./routes.c", "./baked.c", "./timer.c", "./mongoose.o", "./cJSON/cJSON.c",
|
||||
"./md5-c/md5.c",
|
||||
"-lpthread");
|
||||
#define CFLAGS "-fsanitize=address", "-fPIC", "-ggdb"
|
||||
#define DEFINES "-DMY_DEBUG=1", "-D_GNU_SOURCE", "-DGEBS_NO_PREFIX", "-DINCBIN_PREFIX=", "-DINCBIN_STYLE=INCBIN_STYLE_SNAKE"
|
||||
#define EXTRA_SOURCES "./cJSON/cJSON.c", "./zip/src/zip.c", "./md5-c/md5.c"
|
||||
#else
|
||||
CMD("cc", "-fPIC", "-I.", "-DMY_DEBUG=0", "-D_GNU_SOURCE", "-DGEBS_NO_PREFIX",
|
||||
"-DINCBIN_PREFIX=", "-DINCBIN_STYLE=INCBIN_STYLE_SNAKE", "-Wl,-z,execstack", "-o", "./aboba",
|
||||
"./main.c", "./routes.c", "./baked.c", "./timer.c", "./mongoose.o", "./cJSON/cJSON.c",
|
||||
"-lpthread");
|
||||
#define CFLAGS "-fPIC"
|
||||
#define DEFINES "-DMY_DEBUG=0", "-D_GNU_SOURCE", "-DGEBS_NO_PREFIX", "-DINCBIN_PREFIX=", "-DINCBIN_STYLE=INCBIN_STYLE_SNAKE"
|
||||
#define EXTRA_SOURCES "./cJSON/cJSON.c", "./zip/src/zip.c"
|
||||
#endif
|
||||
#define SOURCES "./main.c", "./routes.c", "./baked.c", "./timer.c"
|
||||
#define OBJECTS "./mongoose.o"
|
||||
#define LINK_FLAGS "-Wl,-z,execstack", "-lpthread"
|
||||
#define INC_FLAGS "-I.", "-I./zip/src"
|
||||
|
||||
CMD(CC, TARGET, CFLAGS, DEFINES, INC_FLAGS, SOURCES, OBJECTS, EXTRA_SOURCES, LINK_FLAGS);
|
||||
|
||||
RULE("./compile_flags.txt") {
|
||||
make_compile_flags(TARGET, CFLAGS, DEFINES, INC_FLAGS, SOURCES, OBJECTS, EXTRA_SOURCES, LINK_FLAGS);
|
||||
}
|
||||
|
||||
#undef CC
|
||||
#undef TARGET
|
||||
#undef CFLAGS
|
||||
#undef DEFINES
|
||||
#undef EXTRA_SOURCES
|
||||
#undef SOURCES
|
||||
#undef OBJECTS
|
||||
#undef LINK_FLAGS
|
||||
#undef INC_FLAGS
|
||||
}
|
||||
} else if (strcmp(cmd, "clean") == 0) {
|
||||
remove1("./build");
|
||||
|
Reference in New Issue
Block a user