kleaf: Support arm 32-bit clang toolchains.
We have arm kernel builds and u-boot builds,
though we don't build arm GKI.
Test: TH
Bug: 281851784
Change-Id: I37d61402cf2e7a77bd5364e42fb33c923921d5e1
diff --git a/kleaf/BUILD.bazel b/kleaf/BUILD.bazel
index 4454530..28b96cc 100644
--- a/kleaf/BUILD.bazel
+++ b/kleaf/BUILD.bazel
@@ -20,6 +20,7 @@
load(
":clang_toolchain.bzl",
"android_arm64_clang_toolchain",
+ "android_arm_clang_toolchain",
"android_riscv64_clang_toolchain",
"android_x86_64_clang_toolchain",
"linux_x86_64_clang_toolchain",
@@ -51,6 +52,11 @@
clang_version = VARS["CLANG_VERSION"],
)
+android_arm_clang_toolchain(
+ name = "android_arm_clang_toolchain",
+ clang_version = VARS["CLANG_VERSION"],
+)
+
android_x86_64_clang_toolchain(
name = "android_x86_64_clang_toolchain",
clang_version = VARS["CLANG_VERSION"],
@@ -83,6 +89,12 @@
extra_compatible_with = [version],
) for version in VERSIONS]
+[android_arm_clang_toolchain(
+ name = version + "_android_arm_clang_toolchain",
+ clang_version = version,
+ extra_compatible_with = [version],
+) for version in VERSIONS]
+
[android_x86_64_clang_toolchain(
name = version + "_android_x86_64_clang_toolchain",
clang_version = version,
diff --git a/kleaf/clang_config.bzl b/kleaf/clang_config.bzl
index 1fc3bb3..ac3afea 100644
--- a/kleaf/clang_config.bzl
+++ b/kleaf/clang_config.bzl
@@ -51,6 +51,7 @@
attrs = {
"target_cpu": attr.string(mandatory = True, values = [
"arm64",
+ "arm",
"riscv64",
"x86_64",
]),
diff --git a/kleaf/clang_toolchain.bzl b/kleaf/clang_toolchain.bzl
index 56e3922..a47b230 100644
--- a/kleaf/clang_toolchain.bzl
+++ b/kleaf/clang_toolchain.bzl
@@ -207,6 +207,30 @@
extra_compatible_with = extra_compatible_with,
)
+def android_arm_clang_toolchain(
+ name,
+ clang_version,
+ extra_compatible_with = None):
+ """Declare an android_arm (32-bit) toolchain.
+
+ Args:
+ name: name prefix
+ clang_version: `CLANG_VERSION`
+ extra_compatible_with: extra `exec_compatible_with` and `target_compatible_with`
+ """
+ clang_toolchain(
+ name = name,
+ clang_version = clang_version,
+ ndk_triple = VARS.get("ARM_NDK_TRIPLE"),
+ # From _setup_env.sh: when NDK triple is set,
+ # --sysroot=${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot
+ sysroot_label = "@prebuilt_ndk//:sysroot" if "ARM_NDK_TRIPLE" in VARS else None,
+ sysroot_path = "external/prebuilt_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot" if "AARCH64_NDK_TRIPLE" in VARS else None,
+ target_cpu = "arm",
+ target_os = "android",
+ extra_compatible_with = extra_compatible_with,
+ )
+
def android_x86_64_clang_toolchain(
name,
clang_version,
diff --git a/kleaf/register.bzl b/kleaf/register.bzl
index a1d01fc..264568b 100644
--- a/kleaf/register.bzl
+++ b/kleaf/register.bzl
@@ -22,6 +22,7 @@
for version in VERSIONS:
native.register_toolchains(
"//prebuilts/clang/host/linux-x86/kleaf:{}_android_arm64_clang_toolchain".format(version),
+ "//prebuilts/clang/host/linux-x86/kleaf:{}_android_arm_clang_toolchain".format(version),
"//prebuilts/clang/host/linux-x86/kleaf:{}_android_x86_64_clang_toolchain".format(version),
"//prebuilts/clang/host/linux-x86/kleaf:{}_android_riscv64_clang_toolchain".format(version),
"//prebuilts/clang/host/linux-x86/kleaf:{}_linux_x86_64_clang_toolchain".format(version),
@@ -29,6 +30,7 @@
native.register_toolchains(
"//prebuilts/clang/host/linux-x86/kleaf:android_arm64_clang_toolchain",
+ "//prebuilts/clang/host/linux-x86/kleaf:android_arm_clang_toolchain",
"//prebuilts/clang/host/linux-x86/kleaf:android_x86_64_clang_toolchain",
"//prebuilts/clang/host/linux-x86/kleaf:android_riscv64_clang_toolchain",
"//prebuilts/clang/host/linux-x86/kleaf:linux_x86_64_clang_toolchain",