From b4a0cbf88bf51210a453568dcf210436a1c7c863 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 24 Mar 2024 16:26:07 -0400 Subject: More flexible handling of command line arguments/environment variables --- tomo.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tomo.c b/tomo.c index 78b5e4a4..131d3c3e 100644 --- a/tomo.c +++ b/tomo.c @@ -1,10 +1,11 @@ // The main program that runs compilation -#include -#include +#include #include #include #include #include +#include +#include #include #include "ast.h" @@ -40,6 +41,14 @@ int main(int argc, char *argv[]) mode = MODE_TRANSPILE; } else if (streq(argv[i], "-c")) { mode = MODE_COMPILE; + } else if (strchr(argv[i], '=')) { + while (argv[i][0] == '-') + ++argv[i]; + char *eq = strchr(argv[i], '='); + *eq = '\0'; + for (char *p = argv[i]; *p; p++) + *p = toupper(*p); + setenv(argv[i], eq + 1, 1); } else { filename = argv[i]; break; @@ -66,7 +75,8 @@ int main(int argc, char *argv[]) cconfig = "-std=c11 -fdollars-in-identifiers -fsanitize=signed-integer-overflow -fno-sanitize-recover -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE"; const char *optimization = getenv("O"); - if (!optimization) optimization = "-O1"; + if (!optimization || !optimization[0]) optimization = "-O1"; + else optimization = heap_strf("-O%s", optimization); cflags = getenv("CFLAGS"); if (!cflags) -- cgit v1.2.3