Add -mmacosx-version-min back to default toolchain

Copybara Import from https://github.com/bazelbuild/rules_cc/pull/780

BEGIN_PUBLIC
Add -mmacosx-version-min back to default toolchain (#780)

Without this compiler behavior is non-heremetic based on the host OS
version

This reverts commit 2d10ebab2b9d40ecdff973921709d5986c33f728.

Closes #780
END_PUBLIC

COPYBARA_INTEGRATE_REVIEW=https://github.com/bazelbuild/rules_cc/pull/780 from keith:ks/add-mmacosx-version-min-back-to-default-toolchain 13492bd4fa2d363ab9833be73913ab2a0bad043e
PiperOrigin-RevId: 943641157
Change-Id: Ia5b1c6766b62cc3fc6b3188369e9e9ee89ec2609
diff --git a/cc/private/toolchain/unix_cc_toolchain_config.bzl b/cc/private/toolchain/unix_cc_toolchain_config.bzl
index 2aba91c..bc76ec1 100644
--- a/cc/private/toolchain/unix_cc_toolchain_config.bzl
+++ b/cc/private/toolchain/unix_cc_toolchain_config.bzl
@@ -35,6 +35,10 @@
 load("@rules_cc//cc/toolchains:cc_toolchain_config_info.bzl", "CcToolchainConfigInfo")
 load("@rules_cc//cc/toolchains:feature_injection.bzl", "FeatureInfo", "convert_feature")
 
+def _target_os_version(ctx):
+    xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig]
+    return xcode_config.minimum_os_for_platform_type(apple_common.platform_type.macos)
+
 def layering_check_features(compiler, extra_flags_per_feature, is_macos):
     if compiler != "clang":
         return []
@@ -1780,6 +1784,19 @@
         ],
     )
 
+    # If you have Xcode + the CLT installed the version defaults can be
+    # too old for some standard C apis such as thread locals
+    macos_minimum_os_feature = feature(
+        name = "macos_minimum_os",
+        enabled = True,
+        flag_sets = [
+            flag_set(
+                actions = all_compile_actions + all_link_actions,
+                flag_groups = [flag_group(flags = ["-mmacosx-version-min={}".format(_target_os_version(ctx))])],
+            ),
+        ],
+    )
+
     macos_reproducible_feature = feature(
         name = "macos_reproducible",
         enabled = "macos_reproducible" in ctx.features,
@@ -1961,6 +1978,7 @@
             cpp_modules_feature,
             cpp_module_modmap_file_feature,
             cpp20_module_compile_flags_feature,
+            macos_minimum_os_feature,
             macos_reproducible_feature,
             macos_default_link_flags_feature,
             dependency_file_feature,
@@ -2083,6 +2101,10 @@
         "_use_libtool_on_macos": attr.label(
             default = "@rules_cc//cc/toolchains/args/archiver_flags:use_libtool_on_macos",
         ),
+        "_xcode_config": attr.label(default = configuration_field(
+            fragment = "apple",
+            name = "xcode_config_label",
+        )),
     },
     fragments = ["cpp"],
     provides = [CcToolchainConfigInfo],