build: make ARM NEON check in configure.ac more strict

the check for NEON so far only checked if -mfpu=neon is understood by the compiler,
however, this is not enough:

(i) #include <arm_neon.h> should be checked
(ii) -mfpu=neon must be passed before CFLAGS because eventually the per-library CFLAGS
for NEON code in src/Makefile.am are passed to the compiler before the global CFLAGS

in case the build environment passes CFLAGS to configure and we try to set conflicting
CFLAGS option, the former take precedence; CFLAGS cannot be overridden

this does not fix
http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-December/015570.html
but at least makes the build fail in configure (and not while compiling stuff)
and gives better diagnostics

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
This commit is contained in:
Peter Meerwald 2013-03-28 14:46:48 +01:00 committed by Arun Raghavan
parent 80b0e285a5
commit 0af05213be

View file

@ -321,9 +321,9 @@ AC_ARG_ENABLE([neon-opt],
AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it]))
AS_IF([test "x$enable_neon_opt" != "xno"],
[save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS -mfpu=neon"
[save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS"
AC_COMPILE_IFELSE(
AC_LANG_PROGRAM([], []),
AC_LANG_PROGRAM([[#include <arm_neon.h>]], []),
[
HAVE_NEON=1
NEON_CFLAGS="-mfpu=neon"
@ -337,7 +337,7 @@ AS_IF([test "x$enable_neon_opt" != "xno"],
[HAVE_NEON=0])
AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"],
[AC_MSG_ERROR([*** Compiler does not support -mfpu=neon])])
[AC_MSG_ERROR([*** Compiler does not support -mfpu=neon or CFLAGS override -mfpu])])
AC_SUBST(HAVE_NEON)
AC_SUBST(NEON_CFLAGS)