Re-enable SME when building for AArch64 Android
Now that SME has been re-enabled for Linux for a while, also re-enable
it for Android when building with a sufficiently new version of LLVM.
Bug: b/359006069
Change-Id: Ibaa47e31826cf20136a11d551621fd62c1abab3c
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5908389
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
diff --git a/include/libyuv/cpu_support.h b/include/libyuv/cpu_support.h
index 0d67c34..168764b 100644
--- a/include/libyuv/cpu_support.h
+++ b/include/libyuv/cpu_support.h
@@ -73,9 +73,9 @@
#endif // VisualStudio >= 2012
// Clang 19 required for SME due to needing __arm_tpidr2_save from compiler-rt,
-// only enabled on Linux for now.
+// only enabled on Linux and Android (both define __linux__) for now.
#if !defined(LIBYUV_DISABLE_SME) && defined(__aarch64__) && \
- defined(__gnu_linux__) && defined(__clang__) && (__clang_major__ >= 19)
+ defined(__linux__) && defined(__clang__) && (__clang_major__ >= 19)
#define CLANG_HAS_SME 1
#endif
diff --git a/libyuv.gni b/libyuv.gni
index 07182d1..3334df7 100644
--- a/libyuv.gni
+++ b/libyuv.gni
@@ -20,11 +20,11 @@
(current_cpu == "arm" && (arm_use_neon || arm_optionally_use_neon))
libyuv_use_sve = current_cpu == "arm64"
- # Restrict to is_linux to work around undefined symbol linker errors on
- # Android, Fuchsia, macOS, and compilation errors on Windows.
- # TODO: bug 359006069 - Remove the is_linux restriction after the linker and
+ # Restrict to (is_linux || is_android) to work around undefined symbol linker
+ # errors on Fuchsia, macOS, and compilation errors on Windows.
+ # TODO: bug 359006069 - Remove the restriction after the linker and
# compilation errors are fixed.
- libyuv_use_sme = current_cpu == "arm64" && is_linux
+ libyuv_use_sme = current_cpu == "arm64" && (is_linux || is_android)
libyuv_use_msa =
(current_cpu == "mips64el" || current_cpu == "mipsel") && mips_use_msa
libyuv_use_mmi =