diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-01-08 02:06:19 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-01-08 02:06:19 +0900 |
| commit | b674653fa2d911b65a14062498a006e47f2a80ba (patch) | |
| tree | 2ac75091a7be661903e9468ca42aedd2c4d58984 /src/cli.c | |
| parent | 624d6c0f97362059e0beed0abcccf8b9ff0dc49a (diff) | |
| download | ducc-b674653fa2d911b65a14062498a006e47f2a80ba.tar.gz ducc-b674653fa2d911b65a14062498a006e47f2a80ba.tar.zst ducc-b674653fa2d911b65a14062498a006e47f2a80ba.zip | |
feat: support -D flag
Diffstat (limited to 'src/cli.c')
| -rw-r--r-- | src/cli.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -18,6 +18,8 @@ CliArgs* parse_cli_args(int argc, char** argv) { bool opt_MMD = false; StrArray include_dirs; strings_init(&include_dirs); + StrArray defines; + strings_init(&defines); for (int i = 1; i < argc; ++i) { if (argv[i][0] != '-') { @@ -46,6 +48,19 @@ CliArgs* parse_cli_args(int argc, char** argv) { fatal_error("-I requires directory"); } strings_push(&include_dirs, dir); + } else if (c == 'D') { + const char* def = NULL; + if (argv[i][2] != '\0') { + // -DFOO or -DFOO=value format + def = argv[i] + 2; + } else if (argc > i + 1) { + // -D FOO or -D FOO=value format + def = argv[i + 1]; + ++i; + } else { + fatal_error("-D requires macro definition"); + } + strings_push(&defines, def); } else if (c == 'o') { if (argc <= i + 1) { fatal_error("-o requires filename"); @@ -84,6 +99,7 @@ CliArgs* parse_cli_args(int argc, char** argv) { a->gcc_command = NULL; a->generate_deps = opt_MMD; a->include_dirs = include_dirs; + a->defines = defines; if (!a->only_compile && str_ends_with(a->input_filename, ".o")) { a->totally_deligate_to_gcc = true; |
