diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2024-03-26 11:16:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-26 11:16:25 +0000 |
| commit | 2165303f5ee8deca3e473e4e44c23265e2f1649a (patch) | |
| tree | 56bf35c2fc7c020296eaa8bf1aa6375cc5d0c168 /src | |
| parent | c59f6d548b16fdbae09986ff7be8e86877c30243 (diff) | |
| parent | b26a685b769c99128f96a4b00c578775daec5192 (diff) | |
Merge pull request #3332 from laytan/darwin-be-less-annoying-about-library-versions
darwin: be less annoying about "incompatible" library versions
Diffstat (limited to 'src')
| -rw-r--r-- | src/build_settings.cpp | 4 | ||||
| -rw-r--r-- | src/linker.cpp | 5 | ||||
| -rw-r--r-- | src/main.cpp | 3 |
3 files changed, 9 insertions, 3 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 19006ab2c..3a9951cb2 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -436,7 +436,9 @@ struct BuildContext { BlockingMutex target_features_mutex; StringSet target_features_set; String target_features_string; + String minimum_os_version_string; + bool minimum_os_version_string_given; }; gb_global BuildContext build_context = {0}; @@ -1419,7 +1421,7 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta bc->metrics = *metrics; if (metrics->os == TargetOs_darwin) { - if (bc->minimum_os_version_string.len == 0) { + if (!bc->minimum_os_version_string_given) { bc->minimum_os_version_string = str_lit("11.0.0"); } diff --git a/src/linker.cpp b/src/linker.cpp index 6699c9cb8..63987f9e8 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -502,9 +502,12 @@ gb_internal i32 linker_stage(LinkerData *gen) { platform_lib_str = gb_string_appendc(platform_lib_str, "-L/opt/local/lib "); } - if (build_context.minimum_os_version_string.len) { + // Only specify this flag if the user has given a minimum version to target. + // This will cause warnings to show up for mismatched libraries. + if (build_context.minimum_os_version_string_given) { link_settings = gb_string_append_fmt(link_settings, "-mmacosx-version-min=%.*s ", LIT(build_context.minimum_os_version_string)); } + // This points the linker to where the entry point is link_settings = gb_string_appendc(link_settings, "-e _main "); } diff --git a/src/main.cpp b/src/main.cpp index 9c353653f..79c3a1670 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1066,6 +1066,7 @@ gb_internal bool parse_build_flags(Array<String> args) { case BuildFlag_MinimumOSVersion: { GB_ASSERT(value.kind == ExactValue_String); build_context.minimum_os_version_string = value.value_string; + build_context.minimum_os_version_string_given = true; break; } case BuildFlag_RelocMode: { @@ -1926,7 +1927,7 @@ gb_internal void print_show_help(String const arg0, String const &command) { print_usage_line(1, "-minimum-os-version:<string>"); print_usage_line(2, "Sets the minimum OS version targeted by the application."); print_usage_line(2, "Default: -minimum-os-version:11.0.0"); - print_usage_line(2, "(Only used when target is Darwin.)"); + print_usage_line(2, "Only used when target is Darwin, if given, linking mismatched versions will emit a warning."); print_usage_line(0, ""); print_usage_line(1, "-extra-linker-flags:<string>"); |