#include #include "gebs/gebs.h" #include "gpp.h" #include "baked.h" int gpp_fd; void gpp_init(void) { gpp_fd = memfd_create("gpp-binary", 0); if (gpp_fd < 0) { LOGE("Could not create gpp_fd. Aborting..."); abort(); } write(gpp_fd, gpp1_data, gpp1_size); } void gpp_deinit(void) { close(gpp_fd); } bool gpp_run(char *path, NString_List *env, String_Builder *out) { Cmd cmd = {0}; defer { cmd_free(&cmd); } cmd_append(&cmd, "gpp1"); cmd_append(&cmd, "-H"); cmd_append(&cmd, "-x"); cmd_append(&cmd, "--nostdinc"); cmd_append(&cmd, path); for (size_t i = 0; i < env->count; i++) { cmd_append(&cmd, env->items[i]); } return cmd_fd_run_collect(gpp_fd, &cmd, out) == 0; }