From aaae8ce2881c8c1a5d4ad64f20d6e71aa372cf2e Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Wed, 12 May 2021 12:07:25 -0700 Subject: [PATCH] Update DEFAULT_MACOS_CPU to match host With Apple Silicon machines host tools that use the apple_binary, or apple fragment to fetch the CPU would be built for the wrong architecture, even though the C++ logic would correctly identify the host CPU. This changes this hardcoded value to correctly determine Apple Silicon as arm64, and otherwise fallback to x86_64. Fixes https://github.com/bazelbuild/bazel/issues/12671 Closes #13440. PiperOrigin-RevId: 373421791 --- .../build/lib/rules/apple/AppleCommandLineOptions.java | 4 +++- src/main/java/com/google/devtools/build/lib/rules/apple/BUILD | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java index 138f114a912bfb..36cd40599bdad6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.skyframe.serialization.SerializationContext; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBitcodeModeApi; +import com.google.devtools.build.lib.util.CPU; import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter; import com.google.devtools.common.options.EnumConverter; import com.google.devtools.common.options.Option; @@ -186,7 +187,8 @@ public class AppleCommandLineOptions extends FragmentOptions { public static final String DEFAULT_TVOS_CPU = "x86_64"; /** The default macOS CPU value. */ - public static final String DEFAULT_MACOS_CPU = "x86_64"; + public static final String DEFAULT_MACOS_CPU = + CPU.getCurrent() == CPU.AARCH64 ? "arm64" : "x86_64"; /** The default Catalyst CPU value. */ public static final String DEFAULT_CATALYST_CPU = "x86_64"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD index 3a1badcdfd8c0a..65a0f865d27893 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD @@ -39,6 +39,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple", + "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/common/options", "//src/main/java/net/starlark/java/eval", "//src/main/java/net/starlark/java/syntax",