From: edo Date: Wed, 7 Oct 2020 05:33:57 +0000 (+0300) Subject: Allow cross-compilation with SIMD (x86_84) (#104) X-Git-Tag: v3.2.4pre1~111 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7fab6f285ff0ff3816b109a8c3131b6ded0b484;p=thirdparty%2Frsync.git Allow cross-compilation with SIMD (x86_84) (#104) Replace runtime SIMD check with a compile-only test in case of cross-compilation. You can still use '--enable-simd=no' to build x86_64 code without SIMD instructions. --- diff --git a/configure.ac b/configure.ac index 3fd7e5d5..e469981b 100644 --- a/configure.ac +++ b/configure.ac @@ -208,12 +208,7 @@ AC_ARG_ENABLE(simd, # Clag is crashing with -g -O2, so we'll get rid of -g for now. CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g //'` - -if test x"$enable_simd" != x"no"; then - # For x86-64 SIMD, g++ >=5 or clang++ >=7 is required - if test x"$host_cpu" = x"x86_64"; then - AC_LANG(C++) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include +m4_define(SIMD_X86_64_TEST, [[#include #include __attribute__ ((target("default"))) int test_ssse3(int x) { return x; } __attribute__ ((target("default"))) int test_sse2(int x) { return x; } @@ -233,7 +228,18 @@ __attribute__ ((target("ssse3"))) void more_testing(char* buf, int len) in8_2 = _mm_lddqu_si128((__m128i_u*)&buf[i + 16]); } } -]], [[if (test_ssse3(42) != 42 || test_sse2(42) != 42 || test_avx2(42) != 42) exit(1);]])],[CXX_OK=yes],[CXX_OK=no],[CXX_OK=no]) +]]) + +if test x"$enable_simd" != x"no"; then + # For x86-64 SIMD, g++ >=5 or clang++ >=7 is required + if test x"$host_cpu" = x"x86_64"; then + AC_LANG(C++) + if test x"$host_cpu" = x"$build_cpu"; then + AC_RUN_IFELSE([AC_LANG_PROGRAM([SIMD_X86_64_TEST],[[if (test_ssse3(42) != 42 || test_sse2(42) != 42 || test_avx2(42) != 42) exit(1);]])], + [CXX_OK=yes],[CXX_OK=no]) + else + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([SIMD_X86_64_TEST])],[CXX_OK=yes],[CXX_OK=no]) + fi AC_LANG(C) if test x"$CXX_OK" = x"yes"; then # AC_MSG_RESULT() is called below.