Update clang and gn to match Fuchsia.
Begin using mac-arm64 toolchain instead of mac-x64 under Rosetta for non-Goma builds.
Bug: https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=73385
Change-Id: I40f311dea1845b9abe11f28832582104cf43a4bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/252867
Reviewed-by: Alexander Thomas <athom@google.com>
Auto-Submit: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
diff --git a/DEPS b/DEPS
index 991d17b..c62c71f 100644
--- a/DEPS
+++ b/DEPS
@@ -66,8 +66,8 @@
# The list of revisions for these tools comes from Fuchsia, here:
# https://fuchsia.googlesource.com/integration/+/HEAD/toolchain
# If there are problems with the toolchain, contact fuchsia-toolchain@.
- "clang_revision": "aaaf8e4c409f080f35ea227b20dc6ac8a45c2fa4",
- "gn_revision": "e62d4e1938a45babc9afb6db543f388cd1802a52",
+ "clang_revision": "60d276923902051192eba692e5312e605c9d9f65",
+ "gn_revision": "0bcd37bd2b83f1a9ee17088037ebdfe6eab6d31a",
# Scripts that make 'git cl format' work.
"clang_format_scripts_rev": "bb994c6f067340c1135eb43eed84f4b33cfa7397",
@@ -454,8 +454,7 @@
"version": "git_revision:" + Var("clang_revision"),
},
],
- # TODO(https://fxbug.dev/73385): Use arm64 toolchain on arm64 when it exists.
- "condition": "host_cpu == x64 and host_os == mac or host_cpu == arm64 and host_os == mac",
+ "condition": "host_os == mac", # On ARM64 Macs too because Goma doesn't support the host-arm64 toolchain.
"dep_type": "cipd",
},
Var("dart_root") + "/buildtools/win-x64/clang": {
@@ -478,6 +477,16 @@
"condition": "host_os == 'linux' and host_cpu == 'arm64'",
"dep_type": "cipd",
},
+ Var("dart_root") + "/buildtools/mac-arm64/clang": {
+ "packages": [
+ {
+ "package": "fuchsia/third_party/clang/mac-arm64",
+ "version": "git_revision:" + Var("clang_revision"),
+ },
+ ],
+ "condition": "host_os == 'mac' and host_cpu == 'arm64'",
+ "dep_type": "cipd",
+ },
Var("dart_root") + "/third_party/webdriver/chrome": {
"packages": [
diff --git a/build/config/clang/clang.gni b/build/config/clang/clang.gni
index c2ba3f7..49cc509 100644
--- a/build/config/clang/clang.gni
+++ b/build/config/clang/clang.gni
@@ -2,9 +2,11 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("../../toolchain/goma.gni")
+
_toolchain_cpu = host_cpu
-if (host_os == "mac") {
- # TODO(https://fxbug.dev/73385): Use arm64 toolchain on arm64 when it exists.
+if (host_os == "mac" && use_goma) {
+ # Goma does not support ARM64.
_toolchain_cpu = "x64"
}
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 1508689..4e2a79d 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -377,7 +377,10 @@
} else if (is_linux) {
toolchain_stamp_file =
"//buildtools/linux-x64/clang/.versions/clang.cipd_version"
- } else {
+ } else if (is_mac && host_cpu == "arm64") {
+ toolchain_stamp_file =
+ "//buildtools/mac-arm64/clang/.versions/clang.cipd_version"
+ } else if (is_mac) {
toolchain_stamp_file =
"//buildtools/mac-x64/clang/.versions/clang.cipd_version"
}
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn
index 2b9c426..1dd0cda 100644
--- a/build/toolchain/mac/BUILD.gn
+++ b/build/toolchain/mac/BUILD.gn
@@ -20,6 +20,15 @@
goma_prefix = ""
}
+# Goma doesn't support the host-arm64 toolchain, so continue using Rosetta.
+if (host_cpu == "arm64" && !use_goma) {
+ rebased_clang_dir =
+ rebase_path("//buildtools/mac-arm64/clang/bin", root_build_dir)
+} else {
+ rebased_clang_dir =
+ rebase_path("//buildtools/mac-x64/clang/bin", root_build_dir)
+}
+
# Shared toolchain definition. Invocations should set toolchain_os to set the
# build args in this definition.
template("mac_toolchain") {
@@ -211,28 +220,10 @@
}
}
-# Toolchain used for Mac host targets.
mac_toolchain("clang_x64") {
toolchain_cpu = "x64"
toolchain_os = "mac"
- prefix = rebase_path("//buildtools/mac-x64/clang/bin", root_build_dir)
- cc = "${goma_prefix}$prefix/clang"
- cxx = "${goma_prefix}$prefix/clang++"
- ar = "${prefix}/llvm-ar"
- ld = cxx
- strip = "strip"
- is_clang = true
- if (mac_enable_relative_sdk_path) {
- mac_sdk_path = rebase_path(mac_sdk_path, root_build_dir)
- }
- sysroot_flags = "-isysroot $mac_sdk_path -mmacosx-version-min=$mac_sdk_min"
-}
-
-# Toolchain used for Mac host (i386) targets.
-mac_toolchain("clang_x86") {
- toolchain_cpu = "i386"
- toolchain_os = "mac"
- prefix = rebase_path("//buildtools/mac-x64/clang/bin", root_build_dir)
+ prefix = rebased_clang_dir
cc = "${goma_prefix}$prefix/clang"
cxx = "${goma_prefix}$prefix/clang++"
ar = "${prefix}/llvm-ar"
@@ -248,7 +239,7 @@
mac_toolchain("clang_arm64") {
toolchain_cpu = "arm64"
toolchain_os = "mac"
- prefix = rebase_path("//buildtools/mac-x64/clang/bin", root_build_dir)
+ prefix = rebased_clang_dir
cc = "${goma_prefix}$prefix/clang"
cxx = "${goma_prefix}$prefix/clang++"
ar = "${prefix}/llvm-ar"