Skip to content

Commit 270f00d

Browse files
meteorcloudyphilwo
authored andcommitted
Add native support for Apple Silicon
After this PR, we can use a x86 version of Bazel to build an ARM64 Bazel binary for Apple Silicon by ``` bazel build --cpu=darwin_arm64 //src:bazel ``` The Bazel client, embedded tools and embedded JDK are all native ARM64 binaries. Changes in this PR: 1. Add OpenJDK definitions for ARM64 macOS 2. Manually created the embedded JDK binaries on an Apple Silicon machine and uploaded them to the bazel mirror site. 3. AutoCpuConverter.java: identify the cpu value correctly 4. cc_toolchain_config.bzl: Explicitly specify the target platform also in the x86 cc toolchain, so that we can also do cross-platform compile from ARM64 to x86. With the native arm64 Bazel binary, building Bazel itself takes only half of the time compared with the x86 Bazel binary on an Apple DTK machine: ``` $ bazel build --cpu=darwin_arm64 --disk_cache= --repository_cache= //src:bazel Starting local Bazel server and connecting to it... ... Target //src:bazel up-to-date: bazel-bin/src/bazel INFO: Elapsed time: 1044.462s, Critical Path: 180.08s INFO: 2984 processes: 179 internal, 2092 darwin-sandbox, 1 local, 712 worker. INFO: Build completed successfully, 2984 total actions cp ./bazel-bin/src/bazel ~/bin/bazel-arm64 $ bazel-arm64 clean --expunge $ bazel-arm64 build --disk_cache= --repository_cache= //src:bazel Starting local Bazel server and connecting to it... ... Target //src:bazel up-to-date: bazel-bin/src/bazel INFO: Elapsed time: 464.470s, Critical Path: 114.88s INFO: 2984 processes: 179 internal, 2092 darwin-sandbox, 1 local, 712 worker. INFO: Build completed successfully, 2984 total actions ``` Closes: #11628 Closes #12900. PiperOrigin-RevId: 354058336 Revert default cpu value on x86 macOS to "darwin" Many downstream projects are still depending on the default cpu value on x86 macOS being "darwin" instead of "darwin_x86_64" https://buildkite.com/bazel/bazel-auto-sheriff-face-with-cowboy-hat/builds/412 Related: #11628 Closes #12918. PiperOrigin-RevId: 354279409 Update platform version to 0.0.4 Use configuration flags for //src/conditions:darwin_arm64 Partially reverts 6d637f4, to allow cross-compiling Bazel from darwin_x86_64 to darwin_arm64 with the `--cpu=darwin_arm64` flag. The only source that is different between darwin_x86_64 and darwin_arm64 now is the embedded JDK. Closes #12653. PiperOrigin-RevId: 346298051 Make sure Bazel selects correct remote JDK on Apple Silicon
1 parent b60a8ad commit 270f00d

File tree

12 files changed

+244
-22
lines changed

12 files changed

+244
-22
lines changed

WORKSPACE

Lines changed: 98 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ distdir_tar(
160160
# bazelbuild/bazel-skylib
161161
"bazel-skylib-1.0.3.tar.gz",
162162
# bazelbuild/platforms
163-
"platforms-0.0.2.tar.gz",
163+
"platforms-0.0.4.tar.gz",
164164
# bazelbuild/rules_java
165165
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip",
166166
# bazelbuild/rules_cc
@@ -201,7 +201,7 @@ distdir_tar(
201201
# bazelbuild/bazel-skylib
202202
"bazel-skylib-1.0.3.tar.gz": "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
203203
# bazelbuild/platforms
204-
"platforms-0.0.2.tar.gz": "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3",
204+
"platforms-0.0.4.tar.gz": "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d",
205205
# bazelbuild/rules_java
206206
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598",
207207
# bazelbuild/rules_cc
@@ -263,9 +263,9 @@ distdir_tar(
263263
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
264264
],
265265
# bazelbuild/platforms
266-
"platforms-0.0.2.tar.gz": [
267-
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
268-
"https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
266+
"platforms-0.0.4.tar.gz": [
267+
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
268+
"https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
269269
],
270270
# bazelbuild/rules_java
271271
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [
@@ -409,6 +409,30 @@ http_file(
409409
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-macosx_x64-minimal-b23d4e05466f2aa1fdcd72d3d3a8e962206b64bf-1581689063.tar.gz"],
410410
)
411411

412+
http_file(
413+
name = "openjdk_macos_aarch64",
414+
downloaded_file_path = "zulu-macos-aarch64.tar.gz",
415+
sha256 = "a900ef793cb34b03ac5d93ea2f67291b6842e99d500934e19393a8d8f9bfa6ff",
416+
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.45.27-ca-jdk11.0.10/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64-allmodules-1611665569.tar.gz"],
417+
)
418+
419+
http_file(
420+
name = "openjdk_macos_aarch64_vanilla",
421+
downloaded_file_path = "zulu-macos-aarch64-vanilla.tar.gz",
422+
sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a",
423+
urls = [
424+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
425+
"https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
426+
],
427+
)
428+
429+
http_file(
430+
name = "openjdk_macos_aarch64_minimal",
431+
downloaded_file_path = "zulu-macos-aarch64-minimal.tar.gz",
432+
sha256 = "f4f606926e6deeaa8b8397e299313d9df87642fe464b0ccf1ed0432aeb00640b",
433+
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.45.27-ca-jdk11.0.10/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64-minimal-1611665562.tar.gz"],
434+
)
435+
412436
http_file(
413437
name = "openjdk_win",
414438
downloaded_file_path = "zulu-win.zip",
@@ -552,12 +576,13 @@ distdir_tar(
552576
"zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz",
553577
"zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz",
554578
"zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz",
579+
"zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
555580
"zulu11.37.17-ca-jdk11.0.6-win_x64.zip",
556581
"android_tools_pkg-0.19.0rc3.tar.gz",
557582
# bazelbuild/bazel-skylib
558583
"bazel-skylib-1.0.3.tar.gz",
559584
# bazelbuild/platforms
560-
"platforms-0.0.2.tar.gz",
585+
"platforms-0.0.4.tar.gz",
561586
# bazelbuild/rules_java
562587
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip",
563588
# bazelbuild/rules_cc
@@ -586,12 +611,13 @@ distdir_tar(
586611
"zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz": "360626cc19063bc411bfed2914301b908a8f77a7919aaea007a977fa8fb3cde1",
587612
"zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz": "a452f1b9682d9f83c1c14e54d1446e1c51b5173a3a05dcb013d380f9508562e4",
588613
"zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz": "e1fe56769f32e2aaac95e0a8f86b5a323da5af3a3b4bba73f3086391a6cc056f",
614+
"zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz": "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a",
589615
"zulu11.37.17-ca-jdk11.0.6-win_x64.zip": "a9695617b8374bfa171f166951214965b1d1d08f43218db9a2a780b71c665c18",
590616
"android_tools_pkg-0.19.0rc3.tar.gz": "ea5c0589a01e2a9f43c20e5c145d3530e3b3bdbe7322789bc5da38d0ca49b837",
591617
# bazelbuild/bazel-skylib
592618
"bazel-skylib-1.0.3.tar.gz": "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
593619
# bazelbuild/platforms
594-
"platforms-0.0.2.tar.gz": "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3",
620+
"platforms-0.0.4.tar.gz": "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d",
595621
# bazelbuild/rules_java
596622
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598",
597623
# bazelbuild/rules_cc
@@ -619,6 +645,7 @@ distdir_tar(
619645
"zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz"],
620646
"zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu11.37.48-ca-jdk11.0.6/zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz"],
621647
"zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz"],
648+
"zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz": ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz"],
622649
"zulu11.37.17-ca-jdk11.0.6-win_x64.zip": ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-win_x64.zip"],
623650
"android_tools_pkg-0.19.0rc3.tar.gz": [
624651
"https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.19.0rc3.tar.gz",
@@ -629,9 +656,9 @@ distdir_tar(
629656
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
630657
],
631658
# bazelbuild/platforms
632-
"platforms-0.0.2.tar.gz": [
633-
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
634-
"https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
659+
"platforms-0.0.4.tar.gz": [
660+
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
661+
"https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
635662
],
636663
# bazelbuild/rules_java
637664
"7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [
@@ -739,10 +766,10 @@ http_archive(
739766

740767
http_archive(
741768
name = "platforms",
742-
sha256 = "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3",
769+
sha256 = "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d",
743770
urls = [
744-
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
745-
"https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz",
771+
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
772+
"https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz",
746773
],
747774
)
748775

@@ -827,6 +854,20 @@ http_archive(
827854
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz"],
828855
)
829856

857+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
858+
http_archive(
859+
name = "remotejdk11_macos_aarch64_for_testing",
860+
build_file = "@local_jdk//:BUILD.bazel",
861+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
862+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
863+
sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a",
864+
strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64",
865+
urls = [
866+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
867+
"https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
868+
],
869+
)
870+
830871
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
831872
http_archive(
832873
name = "remotejdk11_win_for_testing",
@@ -899,6 +940,20 @@ http_archive(
899940
],
900941
)
901942

943+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
944+
http_archive(
945+
name = "remotejdk15_macos_aarch64_for_testing",
946+
build_file = "@local_jdk//:BUILD.bazel",
947+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
948+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
949+
sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5",
950+
strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64",
951+
urls = [
952+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
953+
"https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
954+
],
955+
)
956+
902957
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
903958
http_archive(
904959
name = "remotejdk15_win_for_testing",
@@ -1006,6 +1061,21 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
10061061
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz"],
10071062
)
10081063

1064+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
1065+
http_archive(
1066+
name = "openjdk11_darwin_aarch64_archive",
1067+
build_file_content = """
1068+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
1069+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
1070+
""",
1071+
sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a",
1072+
strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64",
1073+
urls = [
1074+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
1075+
"https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
1076+
],
1077+
)
1078+
10091079
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
10101080
http_archive(
10111081
name = "openjdk11_windows_archive",
@@ -1084,6 +1154,21 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
10841154
],
10851155
)
10861156

1157+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
1158+
http_archive(
1159+
name = "openjdk15_darwin_aarch64_archive",
1160+
build_file_content = """
1161+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
1162+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
1163+
""",
1164+
sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5",
1165+
strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64",
1166+
urls = [
1167+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
1168+
"https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
1169+
],
1170+
)
1171+
10871172
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
10881173
http_archive(
10891174
name = "openjdk15_windows_archive",

src/BUILD

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@"
1616
"//src/main/java/net/starlark/java/eval:cpu_profiler",
1717
# TODO(brandjon): ensure we haven't forgotten any package-zip items,
1818
# otherwise bazel won't correctly reextract modified files.
19+
":platforms_archive",
1920
"//src/main/cpp:client",
2021
"//src/main/tools:build-runfiles",
2122
"//src/main/tools:process-wrapper",
@@ -178,6 +179,9 @@ filegroup(
178179
"//src/conditions:darwin": [
179180
"@openjdk_macos//file",
180181
],
182+
"//src/conditions:darwin_arm64": [
183+
"@openjdk_macos_aarch64//file",
184+
],
181185
"//src/conditions:windows": [
182186
"@openjdk_win//file",
183187
],
@@ -197,6 +201,9 @@ filegroup(
197201
"//src/conditions:darwin": [
198202
"@openjdk_macos_minimal//file",
199203
],
204+
"//src/conditions:darwin_arm64": [
205+
"@openjdk_macos_aarch64_minimal//file",
206+
],
200207
"//src/conditions:windows": [
201208
"@openjdk_win_minimal//file",
202209
],
@@ -216,6 +223,9 @@ filegroup(
216223
"//src/conditions:darwin": [
217224
"@openjdk_macos_vanilla//file",
218225
],
226+
"//src/conditions:darwin_arm64": [
227+
"@openjdk_macos_aarch64_vanilla//file",
228+
],
219229
"//src/conditions:windows": [
220230
"@openjdk_win_vanilla//file",
221231
],
@@ -749,18 +759,21 @@ filegroup(
749759
"@bazel_skylib//:WORKSPACE",
750760
"@bazel_toolchains//:WORKSPACE",
751761
"@com_google_protobuf//:WORKSPACE",
762+
"@openjdk11_darwin_aarch64_archive//:WORKSPACE",
752763
"@openjdk11_darwin_archive//:WORKSPACE",
753764
"@openjdk11_linux_archive//:WORKSPACE",
754765
"@openjdk11_windows_archive//:WORKSPACE",
755766
"@openjdk14_darwin_archive//:WORKSPACE",
756767
"@openjdk14_linux_archive//:WORKSPACE",
757768
"@openjdk14_windows_archive//:WORKSPACE",
769+
"@openjdk15_darwin_aarch64_archive//:WORKSPACE",
758770
"@openjdk15_darwin_archive//:WORKSPACE",
759771
"@openjdk15_linux_archive//:WORKSPACE",
760772
"@openjdk15_windows_archive//:WORKSPACE",
761773
"@openjdk_linux_aarch64_minimal//file",
762774
"@openjdk_linux_minimal//file",
763775
"@openjdk_macos_minimal//file",
776+
"@openjdk_macos_aarch64_minimal//file",
764777
"@openjdk_win_minimal//file",
765778
"@remote_coverage_tools_for_testing//:WORKSPACE",
766779
"@remote_java_tools_darwin_for_testing//:WORKSPACE",
@@ -773,12 +786,14 @@ filegroup(
773786
"@remotejdk11_linux_for_testing//:WORKSPACE",
774787
"@remotejdk11_linux_ppc64le_for_testing//:WORKSPACE",
775788
"@remotejdk11_linux_s390x_for_testing//:WORKSPACE",
789+
"@remotejdk11_macos_aarch64_for_testing//:WORKSPACE",
776790
"@remotejdk11_macos_for_testing//:WORKSPACE",
777791
"@remotejdk11_win_for_testing//:WORKSPACE",
778792
"@remotejdk14_linux_for_testing//:WORKSPACE",
779793
"@remotejdk14_macos_for_testing//:WORKSPACE",
780794
"@remotejdk14_win_for_testing//:WORKSPACE",
781795
"@remotejdk15_linux_for_testing//:WORKSPACE",
796+
"@remotejdk15_macos_aarch64_for_testing//:WORKSPACE",
782797
"@remotejdk15_macos_for_testing//:WORKSPACE",
783798
"@remotejdk15_win_for_testing//:WORKSPACE",
784799
"@rules_cc//:WORKSPACE",

src/conditions/BUILD

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
load("@bazel_skylib//lib:selects.bzl", "selects")
2+
13
filegroup(
24
name = "srcs",
35
srcs = glob(["**"]),
@@ -89,11 +91,28 @@ config_setting(
8991
)
9092

9193
config_setting(
92-
name = "darwin_arm64",
94+
name = "darwin_arm64_constraint",
9395
constraint_values = [
9496
"@platforms//os:macos",
9597
"@platforms//cpu:arm64",
9698
],
99+
)
100+
101+
config_setting(
102+
name = "darwin_arm64_flag",
103+
values = {"cpu": "darwin_arm64"},
104+
)
105+
106+
# Workaround for an issue where the dummy cc toolchain isn't being picked up
107+
# when cross-compile from darwin_x86_64 to darwin_arm64 cpu.
108+
# TODO(https://github.com/bazelbuild/bazel/issues/12655): Remove the flag based
109+
# select when the issue is resolved.
110+
selects.config_setting_group(
111+
name = "darwin_arm64",
112+
match_any = [
113+
":darwin_arm64_constraint",
114+
":darwin_arm64_flag",
115+
],
97116
visibility = ["//visibility:public"],
98117
)
99118

src/main/java/com/google/devtools/build/lib/analysis/config/AutoCpuConverter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,14 @@ public String convert(String input) throws OptionsParsingException {
3434
// linux-x86_64, darwin includes the CPU architecture, ...).
3535
switch (OS.getCurrent()) {
3636
case DARWIN:
37-
return "darwin";
37+
switch (CPU.getCurrent()) {
38+
case X86_64:
39+
return "darwin";
40+
case AARCH64:
41+
return "darwin_arm64";
42+
default:
43+
return "unknown";
44+
}
3845
case FREEBSD:
3946
return "freebsd";
4047
case OPENBSD:

src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,19 @@ maybe(
7676
],
7777
)
7878

79+
# This must be kept in sync with the top-level WORKSPACE file.
80+
maybe(
81+
http_archive,
82+
name = "remotejdk11_macos_aarch64",
83+
build_file = "@bazel_tools//tools/jdk:jdk.BUILD",
84+
sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a",
85+
strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64",
86+
urls = [
87+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
88+
"https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz",
89+
],
90+
)
91+
7992
# This must be kept in sync with the top-level WORKSPACE file.
8093
maybe(
8194
http_archive,
@@ -146,6 +159,19 @@ maybe(
146159
],
147160
)
148161

162+
# This must be kept in sync with the top-level WORKSPACE file.
163+
maybe(
164+
http_archive,
165+
name = "remotejdk15_macos_aarch64",
166+
build_file = "@bazel_tools//tools/jdk:jdk.BUILD",
167+
strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64",
168+
sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5",
169+
urls = [
170+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
171+
"https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz",
172+
],
173+
)
174+
149175
# This must be kept in sync with the top-level WORKSPACE file.
150176
maybe(
151177
http_archive,

src/test/py/bazel/test_base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,14 @@ class TestBase(unittest.TestCase):
6262
'remotejdk11_linux_ppc64le_for_testing',
6363
'remotejdk11_linux_s390x_for_testing',
6464
'remotejdk11_macos_for_testing',
65+
'remotejdk11_macos_aarch64_for_testing',
6566
'remotejdk11_win_for_testing',
6667
'remotejdk14_linux_for_testing',
6768
'remotejdk14_macos_for_testing',
6869
'remotejdk14_win_for_testing',
6970
'remotejdk15_linux_for_testing',
7071
'remotejdk15_macos_for_testing',
72+
'remotejdk15_macos_aarch64_for_testing',
7173
'remotejdk15_win_for_testing',
7274
'remote_java_tools_darwin_for_testing',
7375
'remote_java_tools_linux_for_testing',

0 commit comments

Comments
 (0)