diff options
author | Kevin Greenan <kmgreen2@gmail.com> | 2015-05-03 17:13:02 -0700 |
---|---|---|
committer | Kevin Greenan <kmgreen2@gmail.com> | 2015-05-03 17:50:38 -0700 |
commit | f3a99e81e997cf0d8db47056b36ca2c2e3beee8f (patch) | |
tree | 241587150011f23710d18b555c75e92a1cf27248 /configure.ac | |
parent | 738d57918577386d65435c0733735d24be7f5a9f (diff) | |
download | liberasurecode-f3a99e81e997cf0d8db47056b36ca2c2e3beee8f.tar.gz |
Removing all m4 references for CPUID by creating special C program to parse
CPUID and directly doing compiler checks in autoconf.ac
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index b4d420e..3531021 100644 --- a/configure.ac +++ b/configure.ac @@ -97,6 +97,74 @@ dnl Expand the sources and objects needed to build the library AC_SUBST(ac_aux_dir) AC_SUBST(OBJECTS) +dnl Do CPUID and associated compiler flag checks + +SUPPORTED_FLAGS="" +$CC - -E -mmmx </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="-mmmx" + AC_MSG_RESULT([$CC supports -mmmx]) +fi +$CC - -E -msse </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -msse" + AC_MSG_RESULT([$CC supports -msse]) +fi +$CC - -E -msse2 </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -msse2" + AC_MSG_RESULT([$CC supports -msse2]) +fi +$CC - -E -msse3 </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -msse3" + AC_MSG_RESULT([$CC supports -msse3]) +fi +$CC - -E -mssse3 </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -mssse3" + AC_MSG_RESULT([$CC supports -mssse3]) +fi +$CC - -E -msse4.1 </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -msse4.1" + AC_MSG_RESULT([$CC supports -msse4.1]) +fi +$CC - -E -msse4.2 </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -msse4.2" + AC_MSG_RESULT([$CC supports -msse4.2]) +fi +$CC - -E -mavx </dev/null >/dev/null 2>&1 +if [[ $? == "0" ]]; then + SUPPORTED_FLAGS="$SUPPORTED_FLAGS -mavx" + AC_MSG_RESULT([$CC supports -mavx]) +fi + +# Detect the SIMD features supported by both the compiler and the CPU +SIMD_FLAGS="" +cat get_flags_from_cpuid.c | sed "s/FLAGSFROMAUTOCONF/${SUPPORTED_FLAGS}/" | $CC -x c -g - -o get_flags_from_cpuid +if [[ -e ./get_flags_from_cpuid ]]; then + chmod 755 get_flags_from_cpuid; ./get_flags_from_cpuid; rm ./get_flags_from_cpuid + if [[ -e compiler_flags ]]; then + SIMD_FLAGS=`cat compiler_flags` + rm -f compiler_flags + else + AC_MSG_WARN([Could not run the CPUID detection program]) + fi +else + AC_MSG_WARN([Could not compile the CPUID detection program]) +fi + +AC_MSG_RESULT([Generating with SIMD flags: $SIMD_FLAGS]) +CFLAGS="$CFLAGS $SIMD_FLAGS" + +# Certain code may be dependent on 32 vs. 64-bit arch, so add a +# flag for 64-bit +if test "$ac_cv_sizeof_long" -eq 8; then + CFLAGS="$CFLAGS -DARCH_64" +fi + ################################################################################# # Doxygen Documentation ################################################################################# |