diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-07-31 12:06:04 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-07-31 12:06:04 +0100 |
| commit | 9f4f5f9346455a322f5e2fbea022fae0406285b3 (patch) | |
| tree | fd7a9a39d77c16f967cc6e5c8af8b2fafd89cff4 /src/main.cpp | |
| parent | 0fae31fb545b474359359fd644911fa335c5c282 (diff) | |
Add -keep-temp-files option
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/main.cpp b/src/main.cpp index 73b49fdc6..4a532dcde 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -174,6 +174,7 @@ enum BuildFlagKind { BuildFlag_OptimizationLevel, BuildFlag_ShowTimings, BuildFlag_ThreadCount, + BuildFlag_KeepTempFiles, BuildFlag_COUNT, }; @@ -204,9 +205,10 @@ void add_flag(Array<BuildFlag> *build_flags, BuildFlagKind kind, String name, Bu bool parse_build_flags(Array<String> args) { Array<BuildFlag> build_flags = {}; array_init(&build_flags, heap_allocator(), BuildFlag_COUNT); - add_flag(&build_flags, BuildFlag_OptimizationLevel, str_lit("opt"), BuildFlagParam_Integer); - add_flag(&build_flags, BuildFlag_ShowTimings, str_lit("show-timings"), BuildFlagParam_None); - add_flag(&build_flags, BuildFlag_ThreadCount, str_lit("thread-count"), BuildFlagParam_Integer); + add_flag(&build_flags, BuildFlag_OptimizationLevel, str_lit("opt"), BuildFlagParam_Integer); + add_flag(&build_flags, BuildFlag_ShowTimings, str_lit("show-timings"), BuildFlagParam_None); + add_flag(&build_flags, BuildFlag_ThreadCount, str_lit("thread-count"), BuildFlagParam_Integer); + add_flag(&build_flags, BuildFlag_KeepTempFiles, str_lit("keep-temp-files"), BuildFlagParam_None); Array<String> flag_args = args; @@ -350,6 +352,10 @@ bool parse_build_flags(Array<String> args) { build_context.thread_count = count; } } break; + case BuildFlag_KeepTempFiles: + GB_ASSERT(value.kind == ExactValue_Invalid); + build_context.keep_temp_files = true; + break; } } @@ -404,6 +410,18 @@ void show_timings(Checker *c, Timings *t) { } } +void remove_temp_files(String output_base) { + if (build_context.keep_temp_files) return; + + gb_file_delete(gb_bprintf("%.*s.ll", LIT(output_base))); + gb_file_delete(gb_bprintf("%.*s.bc", LIT(output_base))); +#if defined(GB_SYSTEM_WINDOWS) + gb_file_delete(gb_bprintf("%.*s.obj", LIT(output_base))); +#else + gb_file_delete(gb_bprintf("%.*s.o", LIT(output_base))); +#endif +} + int main(int arg_count, char **arg_ptr) { if (arg_count < 2) { usage(make_string_c(arg_ptr[0])); @@ -642,6 +660,7 @@ int main(int arg_count, char **arg_ptr) { show_timings(&checker, &timings); } + remove_temp_files(output_base); if (run_output) { system_exec_command_line_app("odin run", false, "%.*s.exe", LIT(output_base)); @@ -748,6 +767,8 @@ int main(int arg_count, char **arg_ptr) { show_timings(&checker, &timings); } + remove_temp_files(output_base); + if (run_output) { system_exec_command_line_app("odin run", false, "%.*s", LIT(output_base)); } |