diff --git a/BUILD.bazel b/BUILD.bazel index bc229ddf67..b0b29f8128 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -179,7 +179,7 @@ cc_binary( linkopts = LINK_OPTS, features = select({ # This isn't possible on mac because there is no static library for lcrt0.o - "@platforms//os:osx": [], + "//build_defs:config_osx": [], # When cross-compiling we need to statically link all C++ libraries. "//conditions:default": ["fully_static_link"], }), diff --git a/build_defs/BUILD.bazel b/build_defs/BUILD.bazel index 4ac09c8298..0926b856d8 100644 --- a/build_defs/BUILD.bazel +++ b/build_defs/BUILD.bazel @@ -1,5 +1,6 @@ # Internal Starlark definitions for Protobuf. +load("@bazel_skylib//lib:selects.bzl", "selects") load("@rules_cc//cc:defs.bzl", starlark_cc_proto_library = "cc_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") load(":cc_proto_blacklist_test.bzl", "cc_proto_blacklist_test") @@ -83,6 +84,25 @@ config_setting( }, ) +config_setting( + name = "config_osx_aarch64", + values = {"cpu": "osx-aarch_64"}, +) + +config_setting( + name = "config_osx_x86_64", + values = {"cpu": "osx-aarch_64"}, +) + +selects.config_setting_group( + name = "config_osx", + match_any = [ + "@platforms//os:osx", + ":config_osx_aarch64", + ":config_osx_x86_64", + ] +) + # Internal testing: starlark_cc_proto_library( diff --git a/toolchain/cc_toolchain_config.bzl b/toolchain/cc_toolchain_config.bzl index b610a8ee9d..3bfe1bfa93 100644 --- a/toolchain/cc_toolchain_config.bzl +++ b/toolchain/cc_toolchain_config.bzl @@ -98,6 +98,7 @@ def _impl(ctx): flags = [ "-B" + ctx.attr.linker_path, "-lstdc++", + "-lm", "--target=" + ctx.attr.target_full_name, ] + ctx.attr.extra_linker_flags, ),