[pulseaudio-discuss] [ANNOUNCE] PulseAudio 2.99.3 (3.0 RC3)

Peter Robinson pbrobinson at gmail.com
Fri Dec 7 05:31:28 PST 2012


On Fri, Dec 7, 2012 at 1:20 PM, Peter Meerwald <pmeerw at pmeerw.net> wrote:
> Hello,
>
>> I've been trying to get this to build on Fedora 18 on ARM to test the
>> UCM support and I'm running into an issue with what appears to be the
>> build ignoring the distro CFLAGS. Basically we don't currently build
>> for NEON as it's not guaranteed to be available on all platforms but
>> rather then rely on optimised code paths and run time detection for
>> NEON use.
>
>> I'm running into the following error where it's making an assumption
>> that NEON is there so trying to use it but as we're not using it the
>> build is failing.
>
>> libtool: compile:  armv7hl-redhat-linux-gnueabi-gcc -std=gnu99
>> -DHAVE_CONFIG_H -I. -I.. -DFASTPATH -I../src -I../src/modules
>> -I../src/modules -pthread
>> -DPA_ALSA_PATHS_DIR=\"/usr/share/pulseaudio/alsa-mixer/paths\"
>> -DPA_ALSA_PROFILE_SETS_DIR=\"/usr/share/pulseaudio/alsa-mixer/profile-sets\"
>> -mfpu=neon -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
>> -fstack-protector --param=ssp-buffer-size=4 -march=armv7-a
>> -mfpu=vfpv3-d16 -mfloat-abi=hard -W -Wextra -Wno-long-long
>> -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2
>> -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs
>> -Wformat-nonliteral -Wpointer-arith -Winit-self
>> -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes
>> -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow
>> -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings
>> -Wno-unused-parameter -ffast-math -fno-common
>> -fdiagnostics-show-option -c pulsecore/sconv_neon.c  -fPIC -DPIC -o
>> .libs/libpulsecore_sconv_neon_la-sconv_neon.o
>> In file included from pulsecore/sconv_neon.c:30:0:
>> /usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/include/arm_neon.h:32:2:
>> error: #error You must enable NEON instructions (e.g.
>> -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
>
> your compiler invokation has -mfpu=neon followed by -mfpu=vfpv3-d16 (the
> later option overrides the previous), hence NEON is not available
>
> I think the PulseAudio's configure.ac (snippet below) is incorrect; it
> merely checks if the -mfpu=neon is understood as a compiler option, but
> not if it actually works (e.g. by #including arm_neon.h)
>
> AS_IF([test "x$enable_neon_opt" != "xno"],
>     [save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS -mfpu=neon"
>      AC_COMPILE_IFELSE(
>         AC_LANG_PROGRAM([], []),
>         [
>          HAVE_NEON=1
>          NEON_CFLAGS="-mfpu=neon"
>         ],
>         [
>          HAVE_NEON=0
>          NEON_CFLAGS=
>         ])
>      CFLAGS="$save_CFLAGS"
>     ],
>     [HAVE_NEON=0])
>
> a second issue is may be in the compiler invokation: -mfpu=neon is the
> one of the first options (coming from NEON_CFLAGS), followed by those
> probably coming from the toolchain/cross-compilation environment
>
> src/Makefile.am has:
>
> if HAVE_NEON
> noinst_LTLIBRARIES += libpulsecore_sconv_neon.la
> libpulsecore_sconv_neon_la_SOURCES = pulsecore/sconv_neon.c
> libpulsecore_sconv_neon_la_CFLAGS = $(AM_CFLAGS) $(NEON_CFLAGS)
> libpulsecore_ at PA_MAJORMINOR@_la_LIBADD += libpulsecore_sconv_neon.la
> endif
>
> so NEON_CFLAGS (determined by configure) is supposed to override whatever
> your compilation environment provides; however, this does see so work as
> -mfpu=vfpv3-d16 is coming after -mfpu=neon

The actual device I'm trying to compile it on has NEON but being for a
distro we want PA to accept the distro defaults because we know better
what we aiming for rather than configure trying to be clever based on
the HW it's compiling on. It's worked fine in previous recent releases
but I'm not sure if that's not just due to luck, the neon opts being
new or a change in PA.

> I'll have a closer look...

Thanks,
Peter


More information about the pulseaudio-discuss mailing list