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],