mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 15:18:49 +00:00
When using -debug, default to -o:none unless explicitly specified
This commit is contained in:
@@ -262,6 +262,7 @@ struct BuildContext {
|
|||||||
String microarch;
|
String microarch;
|
||||||
BuildModeKind build_mode;
|
BuildModeKind build_mode;
|
||||||
bool generate_docs;
|
bool generate_docs;
|
||||||
|
bool custom_optimization_level;
|
||||||
i32 optimization_level;
|
i32 optimization_level;
|
||||||
bool show_timings;
|
bool show_timings;
|
||||||
TimingsExportFormat export_timings_format;
|
TimingsExportFormat export_timings_format;
|
||||||
@@ -1272,6 +1273,12 @@ gb_internal void init_build_context(TargetMetrics *cross_target) {
|
|||||||
gb_exit(1);
|
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);
|
bc->optimization_level = gb_clamp(bc->optimization_level, -1, 2);
|
||||||
|
|
||||||
// ENFORCE DYNAMIC MAP CALLS
|
// ENFORCE DYNAMIC MAP CALLS
|
||||||
@@ -1285,9 +1292,6 @@ gb_internal void init_build_context(TargetMetrics *cross_target) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef LINK_FLAG_X64
|
|
||||||
#undef LINK_FLAG_386
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
|
|||||||
@@ -1035,12 +1035,16 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
|||||||
case BuildFlag_OptimizationMode: {
|
case BuildFlag_OptimizationMode: {
|
||||||
GB_ASSERT(value.kind == ExactValue_String);
|
GB_ASSERT(value.kind == ExactValue_String);
|
||||||
if (value.value_string == "none") {
|
if (value.value_string == "none") {
|
||||||
|
build_context.custom_optimization_level = true;
|
||||||
build_context.optimization_level = -1;
|
build_context.optimization_level = -1;
|
||||||
} else if (value.value_string == "minimal") {
|
} else if (value.value_string == "minimal") {
|
||||||
|
build_context.custom_optimization_level = true;
|
||||||
build_context.optimization_level = 0;
|
build_context.optimization_level = 0;
|
||||||
} else if (value.value_string == "size") {
|
} else if (value.value_string == "size") {
|
||||||
|
build_context.custom_optimization_level = true;
|
||||||
build_context.optimization_level = 1;
|
build_context.optimization_level = 1;
|
||||||
} else if (value.value_string == "speed") {
|
} else if (value.value_string == "speed") {
|
||||||
|
build_context.custom_optimization_level = true;
|
||||||
build_context.optimization_level = 2;
|
build_context.optimization_level = 2;
|
||||||
} else {
|
} else {
|
||||||
gb_printf_err("Invalid optimization mode for -o:<string>, got %.*s\n", LIT(value.value_string));
|
gb_printf_err("Invalid optimization mode for -o:<string>, got %.*s\n", LIT(value.value_string));
|
||||||
|
|||||||
Reference in New Issue
Block a user