diff --git a/WORKSPACE b/WORKSPACE index ab7af311738ee6..006838b7ac65ad 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -160,7 +160,7 @@ distdir_tar( # bazelbuild/bazel-skylib "bazel-skylib-1.0.3.tar.gz", # bazelbuild/platforms - "platforms-0.0.2.tar.gz", + "platforms-0.0.4.tar.gz", # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip", # bazelbuild/rules_cc @@ -201,7 +201,7 @@ distdir_tar( # bazelbuild/bazel-skylib "bazel-skylib-1.0.3.tar.gz": "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c", # bazelbuild/platforms - "platforms-0.0.2.tar.gz": "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3", + "platforms-0.0.4.tar.gz": "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d", # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598", # bazelbuild/rules_cc @@ -263,9 +263,9 @@ distdir_tar( "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz", ], # bazelbuild/platforms - "platforms-0.0.2.tar.gz": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", + "platforms-0.0.4.tar.gz": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", ], # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [ @@ -409,6 +409,30 @@ http_file( 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"], ) +http_file( + name = "openjdk_macos_aarch64", + downloaded_file_path = "zulu-macos-aarch64.tar.gz", + sha256 = "a900ef793cb34b03ac5d93ea2f67291b6842e99d500934e19393a8d8f9bfa6ff", + 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"], +) + +http_file( + name = "openjdk_macos_aarch64_vanilla", + downloaded_file_path = "zulu-macos-aarch64-vanilla.tar.gz", + sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + ], +) + +http_file( + name = "openjdk_macos_aarch64_minimal", + downloaded_file_path = "zulu-macos-aarch64-minimal.tar.gz", + sha256 = "f4f606926e6deeaa8b8397e299313d9df87642fe464b0ccf1ed0432aeb00640b", + 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"], +) + http_file( name = "openjdk_win", downloaded_file_path = "zulu-win.zip", @@ -552,12 +576,13 @@ distdir_tar( "zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz", "zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz", "zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz", + "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", "zulu11.37.17-ca-jdk11.0.6-win_x64.zip", "android_tools_pkg-0.19.0rc3.tar.gz", # bazelbuild/bazel-skylib "bazel-skylib-1.0.3.tar.gz", # bazelbuild/platforms - "platforms-0.0.2.tar.gz", + "platforms-0.0.4.tar.gz", # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip", # bazelbuild/rules_cc @@ -586,12 +611,13 @@ distdir_tar( "zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz": "360626cc19063bc411bfed2914301b908a8f77a7919aaea007a977fa8fb3cde1", "zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz": "a452f1b9682d9f83c1c14e54d1446e1c51b5173a3a05dcb013d380f9508562e4", "zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz": "e1fe56769f32e2aaac95e0a8f86b5a323da5af3a3b4bba73f3086391a6cc056f", + "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz": "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", "zulu11.37.17-ca-jdk11.0.6-win_x64.zip": "a9695617b8374bfa171f166951214965b1d1d08f43218db9a2a780b71c665c18", "android_tools_pkg-0.19.0rc3.tar.gz": "ea5c0589a01e2a9f43c20e5c145d3530e3b3bdbe7322789bc5da38d0ca49b837", # bazelbuild/bazel-skylib "bazel-skylib-1.0.3.tar.gz": "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c", # bazelbuild/platforms - "platforms-0.0.2.tar.gz": "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3", + "platforms-0.0.4.tar.gz": "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d", # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598", # bazelbuild/rules_cc @@ -619,6 +645,7 @@ distdir_tar( "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"], "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"], "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"], + "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"], "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"], "android_tools_pkg-0.19.0rc3.tar.gz": [ "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.19.0rc3.tar.gz", @@ -629,9 +656,9 @@ distdir_tar( "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz", ], # bazelbuild/platforms - "platforms-0.0.2.tar.gz": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", + "platforms-0.0.4.tar.gz": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", ], # bazelbuild/rules_java "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [ @@ -739,10 +766,10 @@ http_archive( http_archive( name = "platforms", - sha256 = "48a2d8d343863989c232843e01afc8a986eb8738766bfd8611420a7db8f6f0c3", + sha256 = "079945598e4b6cc075846f7fd6a9d0857c33a7afc0de868c2ccb96405225135d", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.2/platforms-0.0.2.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.4/platforms-0.0.4.tar.gz", ], ) @@ -827,6 +854,20 @@ http_archive( 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"], ) +# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. +http_archive( + name = "remotejdk11_macos_aarch64_for_testing", + build_file = "@local_jdk//:BUILD.bazel", + patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, + patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, + sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", + strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. http_archive( name = "remotejdk11_win_for_testing", @@ -899,6 +940,20 @@ http_archive( ], ) +# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. +http_archive( + name = "remotejdk15_macos_aarch64_for_testing", + build_file = "@local_jdk//:BUILD.bazel", + patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, + patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, + sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5", + strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. http_archive( name = "remotejdk15_win_for_testing", @@ -1006,6 +1061,21 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) 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"], ) +# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. +http_archive( + name = "openjdk11_darwin_aarch64_archive", + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", + sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", + strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. http_archive( name = "openjdk11_windows_archive", @@ -1084,6 +1154,21 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) ], ) +# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. +http_archive( + name = "openjdk15_darwin_aarch64_archive", + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", + sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5", + strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. http_archive( name = "openjdk15_windows_archive", diff --git a/src/BUILD b/src/BUILD index 90dc39c1bdb62f..7879128339d9aa 100644 --- a/src/BUILD +++ b/src/BUILD @@ -16,6 +16,7 @@ md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@" "//src/main/java/net/starlark/java/eval:cpu_profiler", # TODO(brandjon): ensure we haven't forgotten any package-zip items, # otherwise bazel won't correctly reextract modified files. + ":platforms_archive", "//src/main/cpp:client", "//src/main/tools:build-runfiles", "//src/main/tools:process-wrapper", @@ -178,6 +179,9 @@ filegroup( "//src/conditions:darwin": [ "@openjdk_macos//file", ], + "//src/conditions:darwin_arm64": [ + "@openjdk_macos_aarch64//file", + ], "//src/conditions:windows": [ "@openjdk_win//file", ], @@ -197,6 +201,9 @@ filegroup( "//src/conditions:darwin": [ "@openjdk_macos_minimal//file", ], + "//src/conditions:darwin_arm64": [ + "@openjdk_macos_aarch64_minimal//file", + ], "//src/conditions:windows": [ "@openjdk_win_minimal//file", ], @@ -216,6 +223,9 @@ filegroup( "//src/conditions:darwin": [ "@openjdk_macos_vanilla//file", ], + "//src/conditions:darwin_arm64": [ + "@openjdk_macos_aarch64_vanilla//file", + ], "//src/conditions:windows": [ "@openjdk_win_vanilla//file", ], @@ -749,18 +759,21 @@ filegroup( "@bazel_skylib//:WORKSPACE", "@bazel_toolchains//:WORKSPACE", "@com_google_protobuf//:WORKSPACE", + "@openjdk11_darwin_aarch64_archive//:WORKSPACE", "@openjdk11_darwin_archive//:WORKSPACE", "@openjdk11_linux_archive//:WORKSPACE", "@openjdk11_windows_archive//:WORKSPACE", "@openjdk14_darwin_archive//:WORKSPACE", "@openjdk14_linux_archive//:WORKSPACE", "@openjdk14_windows_archive//:WORKSPACE", + "@openjdk15_darwin_aarch64_archive//:WORKSPACE", "@openjdk15_darwin_archive//:WORKSPACE", "@openjdk15_linux_archive//:WORKSPACE", "@openjdk15_windows_archive//:WORKSPACE", "@openjdk_linux_aarch64_minimal//file", "@openjdk_linux_minimal//file", "@openjdk_macos_minimal//file", + "@openjdk_macos_aarch64_minimal//file", "@openjdk_win_minimal//file", "@remote_coverage_tools_for_testing//:WORKSPACE", "@remote_java_tools_darwin_for_testing//:WORKSPACE", @@ -773,12 +786,14 @@ filegroup( "@remotejdk11_linux_for_testing//:WORKSPACE", "@remotejdk11_linux_ppc64le_for_testing//:WORKSPACE", "@remotejdk11_linux_s390x_for_testing//:WORKSPACE", + "@remotejdk11_macos_aarch64_for_testing//:WORKSPACE", "@remotejdk11_macos_for_testing//:WORKSPACE", "@remotejdk11_win_for_testing//:WORKSPACE", "@remotejdk14_linux_for_testing//:WORKSPACE", "@remotejdk14_macos_for_testing//:WORKSPACE", "@remotejdk14_win_for_testing//:WORKSPACE", "@remotejdk15_linux_for_testing//:WORKSPACE", + "@remotejdk15_macos_aarch64_for_testing//:WORKSPACE", "@remotejdk15_macos_for_testing//:WORKSPACE", "@remotejdk15_win_for_testing//:WORKSPACE", "@rules_cc//:WORKSPACE", diff --git a/src/conditions/BUILD b/src/conditions/BUILD index 122459c9eafb01..5f8f6a7767ffc4 100644 --- a/src/conditions/BUILD +++ b/src/conditions/BUILD @@ -1,3 +1,5 @@ +load("@bazel_skylib//lib:selects.bzl", "selects") + filegroup( name = "srcs", srcs = glob(["**"]), @@ -89,11 +91,28 @@ config_setting( ) config_setting( - name = "darwin_arm64", + name = "darwin_arm64_constraint", constraint_values = [ "@platforms//os:macos", "@platforms//cpu:arm64", ], +) + +config_setting( + name = "darwin_arm64_flag", + values = {"cpu": "darwin_arm64"}, +) + +# Workaround for an issue where the dummy cc toolchain isn't being picked up +# when cross-compile from darwin_x86_64 to darwin_arm64 cpu. +# TODO(https://github.com/bazelbuild/bazel/issues/12655): Remove the flag based +# select when the issue is resolved. +selects.config_setting_group( + name = "darwin_arm64", + match_any = [ + ":darwin_arm64_constraint", + ":darwin_arm64_flag", + ], visibility = ["//visibility:public"], ) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/AutoCpuConverter.java b/src/main/java/com/google/devtools/build/lib/analysis/config/AutoCpuConverter.java index c0edc7ce5a08d1..9f5fbca65fd003 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/AutoCpuConverter.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/AutoCpuConverter.java @@ -34,7 +34,14 @@ public String convert(String input) throws OptionsParsingException { // linux-x86_64, darwin includes the CPU architecture, ...). switch (OS.getCurrent()) { case DARWIN: - return "darwin"; + switch (CPU.getCurrent()) { + case X86_64: + return "darwin"; + case AARCH64: + return "darwin_arm64"; + default: + return "unknown"; + } case FREEBSD: return "freebsd"; case OPENBSD: diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE index e24c0c4b88e274..1b18472455055a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE @@ -76,6 +76,19 @@ maybe( ], ) +# This must be kept in sync with the top-level WORKSPACE file. +maybe( + http_archive, + name = "remotejdk11_macos_aarch64", + build_file = "@bazel_tools//tools/jdk:jdk.BUILD", + sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", + strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with the top-level WORKSPACE file. maybe( http_archive, @@ -146,6 +159,19 @@ maybe( ], ) +# This must be kept in sync with the top-level WORKSPACE file. +maybe( + http_archive, + name = "remotejdk15_macos_aarch64", + build_file = "@bazel_tools//tools/jdk:jdk.BUILD", + strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64", + sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + ], +) + # This must be kept in sync with the top-level WORKSPACE file. maybe( http_archive, diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py index d12da1252be117..2429cefae19303 100644 --- a/src/test/py/bazel/test_base.py +++ b/src/test/py/bazel/test_base.py @@ -62,12 +62,14 @@ class TestBase(unittest.TestCase): 'remotejdk11_linux_ppc64le_for_testing', 'remotejdk11_linux_s390x_for_testing', 'remotejdk11_macos_for_testing', + 'remotejdk11_macos_aarch64_for_testing', 'remotejdk11_win_for_testing', 'remotejdk14_linux_for_testing', 'remotejdk14_macos_for_testing', 'remotejdk14_win_for_testing', 'remotejdk15_linux_for_testing', 'remotejdk15_macos_for_testing', + 'remotejdk15_macos_aarch64_for_testing', 'remotejdk15_win_for_testing', 'remote_java_tools_darwin_for_testing', 'remote_java_tools_linux_for_testing', diff --git a/src/test/shell/bazel/testdata/jdk_http_archives b/src/test/shell/bazel/testdata/jdk_http_archives index e1f553f1ebd5a4..34f2bf602a9cad 100644 --- a/src/test/shell/bazel/testdata/jdk_http_archives +++ b/src/test/shell/bazel/testdata/jdk_http_archives @@ -1,3 +1,4 @@ + ################### Remote java_tools with embedded javac 11 ################### # This must be kept in sync with the top-level WORKSPACE file. http_archive( @@ -42,6 +43,17 @@ http_archive( 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"], ) # This must be kept in sync with the top-level WORKSPACE file. +http_archive( + name = "openjdk11_darwin_aarch64_archive", + build_file_content = "java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])", + sha256 = "3dcc636e64ae58b922269c2dc9f20f6f967bee90e3f6847d643c4a566f1e8d8a", + strip_prefix = "zulu11.45.27-ca-jdk11.0.10-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.tar.gz", + ], +) +# This must be kept in sync with the top-level WORKSPACE file. http_archive( name = "openjdk11_windows_archive", build_file_content = "java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])", @@ -106,6 +118,20 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) ], ) # This must be kept in sync with the top-level WORKSPACE file. +http_archive( + name = "openjdk15_darwin_aarch64_archive", + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", + sha256 = "2613c3f15eef6b6ecd0fd102da92282b985e4573905dc902f1783d8059c1efc5", + strip_prefix = "zulu15.29.15-ca-jdk15.0.2-macosx_aarch64", + urls = [ + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.tar.gz", + ], +) +# This must be kept in sync with the top-level WORKSPACE file. http_archive( name = "openjdk15_windows_archive", build_file_content = """ diff --git a/src/test/shell/testenv.sh b/src/test/shell/testenv.sh index 1d5775e5b39356..45a58f98b5a8d3 100755 --- a/src/test/shell/testenv.sh +++ b/src/test/shell/testenv.sh @@ -284,17 +284,20 @@ EOF "bazel_toolchains" "com_google_protobuf" "openjdk11_darwin_archive" + "openjdk11_darwin_aarch64_archive" "openjdk11_linux_archive" "openjdk11_windows_archive" "openjdk14_darwin_archive" "openjdk14_linux_archive" "openjdk14_windows_archive" "openjdk15_darwin_archive" + "openjdk15_darwin_aarch64_archive" "openjdk15_linux_archive" "openjdk15_windows_archive" "openjdk_linux_aarch64_minimal" "openjdk_linux_minimal" "openjdk_macos_minimal" + "openjdk_macos_aarch64_minimal" "openjdk_win_minimal" "remote_coverage_tools_for_testing" "remote_java_tools_darwin_for_testing" @@ -308,12 +311,14 @@ EOF "remotejdk11_linux_ppc64le_for_testing" "remotejdk11_linux_s390x_for_testing" "remotejdk11_macos_for_testing" + "remotejdk11_macos_aarch64_for_testing" "remotejdk11_win_for_testing" "remotejdk14_linux_for_testing" "remotejdk14_macos_for_testing" "remotejdk14_win_for_testing" "remotejdk15_linux_for_testing" "remotejdk15_macos_for_testing" + "remotejdk15_macos_aarch64_for_testing" "remotejdk15_win_for_testing" "rules_cc" "rules_java" diff --git a/tools/cpp/cc_configure.bzl b/tools/cpp/cc_configure.bzl index 406425c6436b8b..c72cd9f8a70944 100644 --- a/tools/cpp/cc_configure.bzl +++ b/tools/cpp/cc_configure.bzl @@ -56,7 +56,7 @@ def cc_autoconf_toolchains_impl(repository_ctx): if not should_detect_cpp_toolchain: repository_ctx.file("BUILD", "# C++ toolchain autoconfiguration was disabled by BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN env variable.") - elif cpu_value == "darwin" and not should_use_cpp_only_toolchain: + elif cpu_value.startswith("darwin") and not should_use_cpp_only_toolchain: xcode_toolchains = [] # Only detect xcode if the user didn't tell us it will be there. @@ -120,7 +120,7 @@ def cc_autoconf_impl(repository_ctx, overriden_tools = dict()): # TODO(ibiryukov): overriden_tools are only supported in configure_unix_toolchain. # We might want to add that to Windows too(at least for msys toolchain). configure_windows_toolchain(repository_ctx) - elif (cpu_value == "darwin" and + elif (cpu_value.startswith("darwin") and ("BAZEL_USE_CPP_ONLY_TOOLCHAIN" not in env or env["BAZEL_USE_CPP_ONLY_TOOLCHAIN"] != "1")): configure_osx_toolchain(repository_ctx, overriden_tools) else: diff --git a/tools/cpp/lib_cc_configure.bzl b/tools/cpp/lib_cc_configure.bzl index ee89b9d849d312..1464d8ca6688e5 100644 --- a/tools/cpp/lib_cc_configure.bzl +++ b/tools/cpp/lib_cc_configure.bzl @@ -181,7 +181,9 @@ def get_cpu_value(repository_ctx): """Compute the cpu_value based on the OS name. Doesn't %-escape the result!""" os_name = repository_ctx.os.name.lower() if os_name.startswith("mac os"): - return "darwin" + # Check if we are on x86_64 or arm64 and return the corresponding cpu value. + result = repository_ctx.execute(["uname", "-m"]) + return "darwin" + ("_arm64" if result.stdout.strip() == "arm64" else "") if os_name.find("freebsd") != -1: return "freebsd" if os_name.find("openbsd") != -1: diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD index fd5c31e01ff693..393f6fad792f67 100644 --- a/tools/jdk/BUILD +++ b/tools/jdk/BUILD @@ -491,7 +491,8 @@ alias( name = "remote_jdk11", actual = select( { - "//src/conditions:darwin": "@remotejdk11_macos//:jdk", + "//src/conditions:darwin_x86_64": "@remotejdk11_macos//:jdk", + "//src/conditions:darwin_arm64": "@remotejdk11_macos_aarch64//:jdk", "//src/conditions:windows": "@remotejdk11_win//:jdk", "//src/conditions:linux_aarch64": "@remotejdk11_linux_aarch64//:jdk", "//src/conditions:linux_x86_64": "@remotejdk11_linux//:jdk", diff --git a/tools/osx/crosstool/cc_toolchain_config.bzl b/tools/osx/crosstool/cc_toolchain_config.bzl index ab391eb8efd2e0..972600c334aae5 100644 --- a/tools/osx/crosstool/cc_toolchain_config.bzl +++ b/tools/osx/crosstool/cc_toolchain_config.bzl @@ -3851,7 +3851,11 @@ def _impl(ctx): ["objc-executable", "objc++-executable"], flag_groups = [ flag_group( - flags = ["-no-canonical-prefixes"], + flags = [ + "-no-canonical-prefixes", + "-target", + "x86_64-apple-macosx", + ], ), ], ), @@ -5161,8 +5165,38 @@ def _impl(ctx): ), ], ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64"): + elif (ctx.attr.cpu == "darwin_x86_64"): + unfiltered_compile_flags_feature = feature( + name = "unfiltered_compile_flags", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.linkstamp_compile, + ], + flag_groups = [ + flag_group( + flags = [ + "-no-canonical-prefixes", + "-Wno-builtin-macro-redefined", + "-D__DATE__=\"redacted\"", + "-D__TIMESTAMP__=\"redacted\"", + "-D__TIME__=\"redacted\"", + "-target", + "x86_64-apple-macosx", + ], + ), + ], + ), + ], + ) + elif (ctx.attr.cpu == "armeabi-v7a"): unfiltered_compile_flags_feature = feature( name = "unfiltered_compile_flags", flag_sets = [