Patchwork pulseaudio: fix NEON usage

login
register
mail settings
Submitter Thomas Petazzoni
Date Aug. 22, 2013, 9:01 p.m.
Message ID <1377205292-25021-1-git-send-email-thomas.petazzoni@free-electrons.com>
Download mbox | patch
Permalink /patch/269196/
State Accepted
Headers show

Comments

Thomas Petazzoni - Aug. 22, 2013, 9:01 p.m.
The NEON intrinsics used by Pulseaudio are only available in either
-mfloat-abi=softfp or -mfloat-abi=hard, not in
-mfloat-abi=soft. Therefore having NEON support in the processor is
not sufficient, we also should *not* be using soft-float.

Moreover, looking at BR2_ARM_ENABLE_NEON to know if the processor has
NEON support is incorrect. This option is only here to allow the user
to tell whether the processor has NEON support or not, for the ARM
cores that only have optional NEON support. Instead, the
BR2_ARM_CPU_HAS_NEON option really indicates whether NEON is available
or not (it is either set automatically by the ARM cores that always
have NEON support, or when BR2_ARM_ENABLE_NEON is enabled by the user
to confirm that his ARM processor has NEON support).

This fixes build failures such as
http://autobuild.buildroot.org/results/675/675c96059be348b594cc92980bef391126931c83/build-end.log

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/multimedia/pulseaudio/pulseaudio.mk | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
Peter Korsgaard - Aug. 27, 2013, 8:59 p.m.
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> The NEON intrinsics used by Pulseaudio are only available in either
 Thomas> -mfloat-abi=softfp or -mfloat-abi=hard, not in
 Thomas> -mfloat-abi=soft. Therefore having NEON support in the processor is
 Thomas> not sufficient, we also should *not* be using soft-float.

 Thomas> Moreover, looking at BR2_ARM_ENABLE_NEON to know if the processor has
 Thomas> NEON support is incorrect. This option is only here to allow the user
 Thomas> to tell whether the processor has NEON support or not, for the ARM
 Thomas> cores that only have optional NEON support. Instead, the
 Thomas> BR2_ARM_CPU_HAS_NEON option really indicates whether NEON is available
 Thomas> or not (it is either set automatically by the ARM cores that always
 Thomas> have NEON support, or when BR2_ARM_ENABLE_NEON is enabled by the user
 Thomas> to confirm that his ARM processor has NEON support).

 Thomas> This fixes build failures such as
 Thomas> http://autobuild.buildroot.org/results/675/675c96059be348b594cc92980bef391126931c83/build-end.log

 Thomas> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Committed, thanks.

Patch

diff --git a/package/multimedia/pulseaudio/pulseaudio.mk b/package/multimedia/pulseaudio/pulseaudio.mk
index 910e4a7..ad28ca6 100644
--- a/package/multimedia/pulseaudio/pulseaudio.mk
+++ b/package/multimedia/pulseaudio/pulseaudio.mk
@@ -55,7 +55,18 @@  endef
 PULSEAUDIO_POST_PATCH_HOOKS += PULSEAUDIO_FORCE_CC
 endif
 
-PULSEAUDIO_CONF_OPT += $(if $(BR2_ARM_ENABLE_NEON),--enable-neon-opt=yes,--enable-neon-opt=no)
+ifeq ($(BR2_ARM_SOFT_FLOAT),)
+ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
+PULSEAUDIO_USE_NEON = y
+endif
+endif
+
+ifeq ($(PULSEAUDIO_USE_NEON),y)
+PULSEAUDIO_CONF_OPT += --enable-neon-opt=yes
+else
+PULSEAUDIO_CONF_OPT += --enable-neon-opt=no
+endif
+
 # pulseaudio alsa backend needs pcm/mixer apis
 ifneq ($(BR2_PACKAGE_ALSA_LIB_PCM)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy)
 PULSEAUDIO_CONF_OPT += --disable-alsa