From dca771047117f85ce8305a12612329d499f5fd37 Mon Sep 17 00:00:00 2001 From: jakubtomsu <66876057+jakubtomsu@users.noreply.github.com> Date: Wed, 27 May 2026 20:02:34 +0200 Subject: [PATCH] fix error pos style env var overwriting arg --- src/build_settings.cpp | 50 ++++++++++++++++++++++-------------------- src/main.cpp | 2 ++ 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 8f8a259d3..df9142c74 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1698,6 +1698,32 @@ gb_internal String normalize_minimum_os_version_string(String version) { return make_string_c(normalized); } +gb_internal void init_build_context_error_pos_style() { + build_context.ODIN_ERROR_POS_STYLE = ErrorPosStyle_Default; + + char const *found = gb_get_env("ODIN_ERROR_POS_STYLE", permanent_allocator()); + if (found) { + ErrorPosStyle kind = ErrorPosStyle_Default; + String style = make_string_c(found); + style = string_trim_whitespace(style); + if (style == "" || style == "default" || style == "odin") { + kind = ErrorPosStyle_Default; + } else if (style == "unix" || style == "gcc" || style == "clang" || style == "llvm") { + kind = ErrorPosStyle_Unix; + } else { + gb_printf_err("Invalid ODIN_ERROR_POS_STYLE: got %.*s\n", LIT(style)); + gb_printf_err("Valid formats:\n"); + gb_printf_err("\t\"default\" or \"odin\"\n"); + gb_printf_err("\t\tpath(line:column) message\n"); + gb_printf_err("\t\"unix\"\n"); + gb_printf_err("\t\tpath:line:column: message\n"); + gb_exit(1); + } + + build_context.ODIN_ERROR_POS_STYLE = kind; + } +} + gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subtarget) { BuildContext *bc = &build_context; @@ -1714,30 +1740,6 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta bc->max_error_count = DEFAULT_MAX_ERROR_COLLECTOR_COUNT; } - { - char const *found = gb_get_env("ODIN_ERROR_POS_STYLE", permanent_allocator()); - if (found) { - ErrorPosStyle kind = ErrorPosStyle_Default; - String style = make_string_c(found); - style = string_trim_whitespace(style); - if (style == "" || style == "default" || style == "odin") { - kind = ErrorPosStyle_Default; - } else if (style == "unix" || style == "gcc" || style == "clang" || style == "llvm") { - kind = ErrorPosStyle_Unix; - } else { - gb_printf_err("Invalid ODIN_ERROR_POS_STYLE: got %.*s\n", LIT(style)); - gb_printf_err("Valid formats:\n"); - gb_printf_err("\t\"default\" or \"odin\"\n"); - gb_printf_err("\t\tpath(line:column) message\n"); - gb_printf_err("\t\"unix\"\n"); - gb_printf_err("\t\tpath:line:column: message\n"); - gb_exit(1); - } - - build_context.ODIN_ERROR_POS_STYLE = kind; - } - } - bc->copy_file_contents = true; TargetMetrics *metrics = nullptr; diff --git a/src/main.cpp b/src/main.cpp index 2bb74d912..a63cee5e0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3607,6 +3607,8 @@ int main(int arg_count, char const **arg_ptr) { TIME_SECTION("init args"); map_init(&build_context.defined_values); build_context.extra_packages.allocator = heap_allocator(); + + init_build_context_error_pos_style(); Array args = setup_args(arg_count, arg_ptr);