kleaf: Support i386 toolchain.
We have i686 kernel builds.
Test: TH
Bug: 287296554
Change-Id: I00159321c8d8b6cdfb4aa32ecdff9f9bcb205a92
diff --git a/kleaf/BUILD.bazel b/kleaf/BUILD.bazel
index 28b96cc..bc6eca9 100644
--- a/kleaf/BUILD.bazel
+++ b/kleaf/BUILD.bazel
@@ -21,6 +21,7 @@
":clang_toolchain.bzl",
"android_arm64_clang_toolchain",
"android_arm_clang_toolchain",
+ "android_i386_clang_toolchain",
"android_riscv64_clang_toolchain",
"android_x86_64_clang_toolchain",
"linux_x86_64_clang_toolchain",
@@ -57,6 +58,11 @@
clang_version = VARS["CLANG_VERSION"],
)
+android_i386_clang_toolchain(
+ name = "android_i386_clang_toolchain",
+ clang_version = VARS["CLANG_VERSION"],
+)
+
android_x86_64_clang_toolchain(
name = "android_x86_64_clang_toolchain",
clang_version = VARS["CLANG_VERSION"],
@@ -95,6 +101,12 @@
extra_compatible_with = [version],
) for version in VERSIONS]
+[android_i386_clang_toolchain(
+ name = version + "_android_i386_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 ac3afea..f30254f 100644
--- a/kleaf/clang_config.bzl
+++ b/kleaf/clang_config.bzl
@@ -50,8 +50,9 @@
implementation = _impl,
attrs = {
"target_cpu": attr.string(mandatory = True, values = [
- "arm64",
"arm",
+ "arm64",
+ "i386",
"riscv64",
"x86_64",
]),
diff --git a/kleaf/clang_toolchain.bzl b/kleaf/clang_toolchain.bzl
index a47b230..203ca16 100644
--- a/kleaf/clang_toolchain.bzl
+++ b/kleaf/clang_toolchain.bzl
@@ -255,6 +255,31 @@
extra_compatible_with = extra_compatible_with,
)
+def android_i386_clang_toolchain(
+ name,
+ clang_version,
+ extra_compatible_with = None):
+ """Declare an android_i386 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,
+ # i386 uses the same NDK_TRIPLE as x86_64
+ ndk_triple = VARS.get("X86_64_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 "X86_64_NDK_TRIPLE" in VARS else None,
+ sysroot_path = "external/prebuilt_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot" if "X86_64_NDK_TRIPLE" in VARS else None,
+ target_cpu = "i386",
+ target_os = "android",
+ extra_compatible_with = extra_compatible_with,
+ )
+
def android_riscv64_clang_toolchain(
name,
clang_version,
diff --git a/kleaf/register.bzl b/kleaf/register.bzl
index 264568b..43ed6a4 100644
--- a/kleaf/register.bzl
+++ b/kleaf/register.bzl
@@ -23,15 +23,17 @@
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_i386_clang_toolchain".format(version),
"//prebuilts/clang/host/linux-x86/kleaf:{}_android_riscv64_clang_toolchain".format(version),
+ "//prebuilts/clang/host/linux-x86/kleaf:{}_android_x86_64_clang_toolchain".format(version),
"//prebuilts/clang/host/linux-x86/kleaf:{}_linux_x86_64_clang_toolchain".format(version),
)
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_i386_clang_toolchain",
"//prebuilts/clang/host/linux-x86/kleaf:android_riscv64_clang_toolchain",
+ "//prebuilts/clang/host/linux-x86/kleaf:android_x86_64_clang_toolchain",
"//prebuilts/clang/host/linux-x86/kleaf:linux_x86_64_clang_toolchain",
)