ソースを参照

Merge pull request #3332 from laytan/darwin-be-less-annoying-about-library-versions

darwin: be less annoying about "incompatible" library versions
gingerBill 1 年間 前
コミット
2165303f5e
3 ファイル変更9 行追加3 行削除
  1. 3 1
      src/build_settings.cpp
  2. 4 1
      src/linker.cpp
  3. 2 1
      src/main.cpp

+ 3 - 1
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");
 		}
 

+ 4 - 1
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 ");
 			}

+ 2 - 1
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>");