aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-03-26 11:16:25 +0000
committerGitHub <noreply@github.com>2024-03-26 11:16:25 +0000
commit2165303f5ee8deca3e473e4e44c23265e2f1649a (patch)
tree56bf35c2fc7c020296eaa8bf1aa6375cc5d0c168 /src
parentc59f6d548b16fdbae09986ff7be8e86877c30243 (diff)
parentb26a685b769c99128f96a4b00c578775daec5192 (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.cpp4
-rw-r--r--src/linker.cpp5
-rw-r--r--src/main.cpp3
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>");