[build] Fix building on an ARM64 Linux host.

Change-Id: I42a8265722083fb02f815c635c44f63f809a9082
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/237923
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index a9e3ca4..6cfcf26 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -359,7 +359,10 @@
   # not be compatible with newer ones. To achieve this, we insert a synthetic
   # define into the compile line.
   if (is_clang && (is_linux || is_mac)) {
-    if (is_linux) {
+    if (is_linux && host_cpu == "arm64") {
+      toolchain_stamp_file =
+          "//buildtools/linux-arm64/clang/.versions/clang.cipd_version"
+    } else if (is_linux) {
       toolchain_stamp_file =
           "//buildtools/linux-x64/clang/.versions/clang.cipd_version"
     } else {
diff --git a/build/toolchain/linux/BUILD.gn b/build/toolchain/linux/BUILD.gn
index 5f9bc32..05630d0 100644
--- a/build/toolchain/linux/BUILD.gn
+++ b/build/toolchain/linux/BUILD.gn
@@ -21,6 +21,14 @@
   compiler_prefix = ""
 }
 
+if (host_cpu == "arm64") {
+  rebased_clang_dir =
+      rebase_path("//buildtools/linux-arm64/clang/bin", root_build_dir)
+} else {
+  rebased_clang_dir =
+      rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+}
+
 gcc_toolchain("arm") {
   prefix = "arm-linux-gnueabihf-"
   if (toolchain_prefix != "") {
@@ -42,7 +50,7 @@
 }
 
 gcc_toolchain("clang_arm") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"
 
@@ -78,7 +86,7 @@
 }
 
 gcc_toolchain("clang_arm64") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"
 
@@ -94,7 +102,7 @@
 }
 
 gcc_toolchain("clang_x86") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"
 
@@ -126,7 +134,7 @@
 }
 
 gcc_toolchain("clang_x64") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"
 
@@ -178,7 +186,7 @@
 }
 
 gcc_toolchain("clang_riscv32") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"
 
@@ -214,7 +222,7 @@
 }
 
 gcc_toolchain("clang_riscv64") {
-  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
+  prefix = rebased_clang_dir
   cc = "${compiler_prefix}${prefix}/clang"
   cxx = "${compiler_prefix}${prefix}/clang++"