Embedded gpp
This commit is contained in:
43
gpp.c
Normal file
43
gpp.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <sys/mman.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user