endif()
endif()
+#Check whether -mfpu=neon is available
+set(CMAKE_REQUIRED_FLAGS "-mfpu=neon")
+check_c_source_compiles(
+ "int main()
+ {
+ return 0;
+ }"
+ MFPU_NEON_AVAILABLE FAIL_REGEX "not supported")
+set(CMAKE_REQUIRED_FLAGS)
+
#
# Enable deflate_medium at level 4-6
#
add_feature_info(ACLE_CRC 1 "Support CRC hash generation using the ACLE instruction set, using \"${ACLEFLAG}\"")
endif()
if(WITH_NEON)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NEONFLAG}")
+ if(MFPU_NEON_AVAILABLE)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NEONFLAG}")
+ endif()
add_definitions("-DARM_NEON_ADLER32")
if(MSVC)
add_definitions("-D__ARM_NEON__=1")
fi
+#Check whether -mfpu=neon is available
+cat > $test.c << EOF
+int main() { return 0; }
+EOF
+if try $CC -c $CFLAGS -mfpu=neon $test.c; then
+ MFPU_NEON_AVAILABLE=1
+ echo "Check whether -mfpu=neon is available ... Yes." | tee -a configure.log
+else
+ MFPU_NEON_AVAILABLE=0
+ echo "Check whether -mfpu=neon is available ... No." | tee -a configure.log
+fi
+
ARCHDIR='arch/generic'
ARCH_STATIC_OBJS=''
ARCH_SHARED_OBJS=''
fi
if test $buildneon -eq 1; then
- CFLAGS="${CFLAGS} ${floatabi} -DARM_NEON_ADLER32"
- SFLAGS="${SFLAGS} ${floatabi} -DARM_NEON_ADLER32"
+ CFLAGS="${CFLAGS} ${floatabi}"
+ SFLAGS="${SFLAGS} ${floatabi}"
+
+ if test $MFPU_NEON_AVAILABLE -eq 1;then
+ CFLAGS="${CFLAGS} -mfpu=neon"
+ SFLAGS="${SFLAGS} -mfpu=neon"
+ fi
+
+ CFLAGS="${CFLAGS} -DARM_NEON_ADLER32"
+ SFLAGS="${SFLAGS} -DARM_NEON_ADLER32"
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_neon.o"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_neon.lo"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} crc32_acle.lo insert_string_acle.lo"
if test $buildneon -eq 1; then
- CFLAGS="${CFLAGS} ${floatabi} -DARM_NEON_ADLER32"
- SFLAGS="${SFLAGS} ${floatabi} -DARM_NEON_ADLER32"
+ CFLAGS="${CFLAGS} ${floatabi}"
+ SFLAGS="${SFLAGS} ${floatabi}"
+
+ if test $MFPU_NEON_AVAILABLE -eq 1;then
+ CFLAGS="${CFLAGS} -mfpu=neon"
+ SFLAGS="${SFLAGS} -mfpu=neon"
+ fi
+
+ CFLAGS="${CFLAGS} -DARM_NEON_ADLER32"
+ SFLAGS="${SFLAGS} -DARM_NEON_ADLER32"
+
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_neon.o"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_neon.lo"
fi