diff options
| author | gingerBill <bill@gingerbill.org> | 2023-05-02 14:44:56 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-05-02 14:44:56 +0100 |
| commit | fda1e4409c0e2ce5311bd37888171b948df985fd (patch) | |
| tree | df6d1f64794d19bbcdb21d122793fff8ef166d6e /src | |
| parent | f8bdd42027835b26ed648aa5932faa131fe6da9d (diff) | |
When using `-debug`, default to `-o:none` unless explicitly specified
Diffstat (limited to 'src')
| -rw-r--r-- | src/build_settings.cpp | 10 | ||||
| -rw-r--r-- | src/main.cpp | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index ac033df71..78b1bd6c4 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -262,6 +262,7 @@ struct BuildContext { String microarch; BuildModeKind build_mode; bool generate_docs; + bool custom_optimization_level; i32 optimization_level; bool show_timings; TimingsExportFormat export_timings_format; @@ -1272,6 +1273,12 @@ gb_internal void init_build_context(TargetMetrics *cross_target) { gb_exit(1); } + if (bc->ODIN_DEBUG && !bc->custom_optimization_level) { + // NOTE(bill): when building with `-debug` but not specifying an optimization level + // default to `-o:none` to improve the debug symbol generation by default + bc->optimization_level = -1; // -o:none + } + bc->optimization_level = gb_clamp(bc->optimization_level, -1, 2); // ENFORCE DYNAMIC MAP CALLS @@ -1285,9 +1292,6 @@ gb_internal void init_build_context(TargetMetrics *cross_target) { break; } } - - #undef LINK_FLAG_X64 - #undef LINK_FLAG_386 } #if defined(GB_SYSTEM_WINDOWS) diff --git a/src/main.cpp b/src/main.cpp index 33ee65c6b..162cd309e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1035,12 +1035,16 @@ gb_internal bool parse_build_flags(Array<String> args) { case BuildFlag_OptimizationMode: { GB_ASSERT(value.kind == ExactValue_String); if (value.value_string == "none") { + build_context.custom_optimization_level = true; build_context.optimization_level = -1; } else if (value.value_string == "minimal") { + build_context.custom_optimization_level = true; build_context.optimization_level = 0; } else if (value.value_string == "size") { + build_context.custom_optimization_level = true; build_context.optimization_level = 1; } else if (value.value_string == "speed") { + build_context.custom_optimization_level = true; build_context.optimization_level = 2; } else { gb_printf_err("Invalid optimization mode for -o:<string>, got %.*s\n", LIT(value.value_string)); |