summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorMalcolm Smith <smith@chaquo.com>2024-09-23 20:28:03 (GMT)
committerGitHub <noreply@github.com>2024-09-23 20:28:03 (GMT)
commit41e7992e319faba91b0c75a767b36ff8628a8368 (patch)
tree1815f753856b36cb6b00170964cf660ffa3f054b /configure
parent7ee99217345af3010bf05b1f5241c661a5e0ea9b (diff)
downloadcpython-41e7992e319faba91b0c75a767b36ff8628a8368.zip
cpython-41e7992e319faba91b0c75a767b36ff8628a8368.tar.gz
cpython-41e7992e319faba91b0c75a767b36ff8628a8368.tar.bz2
gh-99108: Disable HACL SIMD code on older versions of Android (#124304)
Disable HACL SIMD code on older versions of Android
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure68
1 files changed, 39 insertions, 29 deletions
diff --git a/configure b/configure
index 8c69b44..56b923b 100755
--- a/configure
+++ b/configure
@@ -30654,7 +30654,10 @@ case "$ac_sys_system" in
esac
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2" >&5
+# The SIMD files use aligned_alloc, which is not available on older versions of
+# Android.
+if test "$ac_sys_system" != "Linux-android" || test "$ANDROID_API_LEVEL" -ge 28; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2" >&5
printf %s "checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2... " >&6; }
if test ${ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2+y}
then :
@@ -30688,37 +30691,44 @@ printf "%s\n" "$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2
if test "x$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" = xyes
then :
- LIBHACL_SIMD128_FLAGS="-msse -msse2 -msse3 -msse4.1 -msse4.2"
+ LIBHACL_SIMD128_FLAGS="-msse -msse2 -msse3 -msse4.1 -msse4.2"
printf "%s\n" "#define HACL_CAN_COMPILE_SIMD128 1" >>confdefs.h
- # macOS universal2 builds *support* the -msse etc flags because they're
- # available on x86_64. However, performance of the HACL SIMD128 implementation
- # isn't great, so it's disabled on ARM64.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD128 implementation" >&5
+ # macOS universal2 builds *support* the -msse etc flags because they're
+ # available on x86_64. However, performance of the HACL SIMD128 implementation
+ # isn't great, so it's disabled on ARM64.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD128 implementation" >&5
printf %s "checking for HACL* SIMD128 implementation... " >&6; }
- if test "$UNIVERSAL_ARCHS" == "universal2"; then
- LIBHACL_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5
+ if test "$UNIVERSAL_ARCHS" == "universal2"; then
+ LIBHACL_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5
printf "%s\n" "universal2" >&6; }
- else
- LIBHACL_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5
+ else
+ LIBHACL_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5
printf "%s\n" "standard" >&6; }
- fi
+ fi
else $as_nop
:
fi
+fi
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx2" >&5
+# The SIMD files use aligned_alloc, which is not available on older versions of
+# Android.
+#
+# Although AVX support is not guaranteed on Android
+# (https://developer.android.com/ndk/guides/abis#86-64), this is safe because we do a
+# runtime CPUID check.
+if test "$ac_sys_system" != "Linux-android" || test "$ANDROID_API_LEVEL" -ge 28; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx2" >&5
printf %s "checking whether C compiler accepts -mavx2... " >&6; }
if test ${ax_cv_check_cflags__Werror__mavx2+y}
then :
@@ -30752,32 +30762,32 @@ printf "%s\n" "$ax_cv_check_cflags__Werror__mavx2" >&6; }
if test "x$ax_cv_check_cflags__Werror__mavx2" = xyes
then :
- LIBHACL_SIMD256_FLAGS="-mavx2"
+ LIBHACL_SIMD256_FLAGS="-mavx2"
printf "%s\n" "#define HACL_CAN_COMPILE_SIMD256 1" >>confdefs.h
- # macOS universal2 builds *support* the -mavx2 compiler flag because it's
- # available on x86_64; but the HACL SIMD256 build then fails because the
- # implementation requires symbols that aren't available on ARM64. Use a
- # wrapped implementation if we're building for universal2.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD256 implementation" >&5
+ # macOS universal2 builds *support* the -mavx2 compiler flag because it's
+ # available on x86_64; but the HACL SIMD256 build then fails because the
+ # implementation requires symbols that aren't available on ARM64. Use a
+ # wrapped implementation if we're building for universal2.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD256 implementation" >&5
printf %s "checking for HACL* SIMD256 implementation... " >&6; }
- if test "$UNIVERSAL_ARCHS" == "universal2"; then
- LIBHACL_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5
+ if test "$UNIVERSAL_ARCHS" == "universal2"; then
+ LIBHACL_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5
printf "%s\n" "universal2" >&6; }
- else
- LIBHACL_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5
+ else
+ LIBHACL_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5
printf "%s\n" "standard" >&6; }
- fi
+ fi
else $as_nop
:
fi
-
+fi