Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 549910 - media-sound/pulseaudio-5.0-r7 with USE=neon - configure fails if -mfpu is in CLFAGS
Summary: media-sound/pulseaudio-5.0-r7 with USE=neon - configure fails if -mfpu is in ...
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: ARM Linux
: Normal normal (vote)
Assignee: Gentoo ARM Porters
Depends on:
Reported: 2015-05-19 17:29 UTC by Alexander Tsoy
Modified: 2019-09-18 08:21 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---

Attachments (,13.40 KB, text/plain)
2015-05-19 17:29 UTC, Alexander Tsoy
pulseaudio-5.0-r7.ebuild.patch (pulseaudio-5.0-r7.ebuild.patch,286 bytes, patch)
2015-05-19 17:43 UTC, Alexander Tsoy
Details | Diff (,12.97 KB, text/plain)
2017-02-10 15:47 UTC, Nathan Shearer
build.log (file_549910.txt,134.21 KB, text/plain)
2018-01-30 13:38 UTC, Sleepy Mario

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Tsoy 2015-05-19 17:29:51 UTC
Created attachment 403624 [details]

pulseaudio with USE=neon - configure fails if -mfpu is in CLFAGS

$ emerge --info pulseaudio
Portage 2.2.18 (python 2.7.9-final-0, hardened/linux/arm/armv7a, gcc-4.7.4, glibc-2.19-r1, 3.14.42 armv7l)
                         System Settings
System uname: Linux-3.14.42-armv7l-with-gentoo-2.2
KiB Mem:      502692 total,     13908 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Tue, 19 May 2015 00:45:01 +0000
sh dash
ld GNU ld (Gentoo 2.24 p1.4) 2.24
distcc 3.1 armv7a-hardfloat-linux-gnueabi [enabled]
app-shells/bash:          4.2_p53::gentoo
dev-lang/perl:            5.20.2::gentoo
dev-lang/python:          2.7.9-r1::gentoo, 3.3.5-r1::gentoo
dev-util/pkgconfig:       0.28-r1::gentoo
sys-apps/baselayout:      2.2::gentoo
sys-apps/openrc:          0.13.11::gentoo
sys-apps/sandbox:         2.6-r1::gentoo
sys-devel/autoconf:       2.69::gentoo
sys-devel/automake:       1.11.6-r1::gentoo, 1.13.4::gentoo
sys-devel/binutils:       2.24-r3::gentoo
sys-devel/gcc:            4.7.4::gentoo
sys-devel/gcc-config:     1.7.3::gentoo
sys-devel/libtool:        2.4.6::gentoo
sys-devel/make:           4.1-r1::gentoo
sys-kernel/linux-headers: 3.14::gentoo (virtual/os-headers)
sys-libs/glibc:           2.19-r1::gentoo

    location: /var/cache/portage/repos/gentoo
    sync-type: websync
    priority: -1000

    location: /usr/local/portage
    masters: gentoo
    priority: 0

    location: /var/cache/portage/repos/puleglot
    sync-type: git
    sync-uri: git://
    masters: gentoo

CFLAGS="-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard -pipe"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard -pipe"
EMERGE_DEFAULT_OPTS="--with-bdeps=y --binpkg-respect-use=y --ask-enter-invalid"
FCFLAGS="-O2 -pipe -march=armv7-a"
FEATURES="assume-digests binpkg-logs buildpkg buildsyspkg compress-build-logs config-protect-if-modified distcc distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms split-log strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync webrsync-gpg xattr"
FFLAGS="-O2 -pipe -march=armv7-a"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
USE="acl aio alsa arm armv5te armv6 armv6t2 avahi bash-completion berkdb bzip2 caps cli cracklib crypt cxx dbus dri gdbm gpm hardened iconv idn ipv6 lz4 lzma modules ncurses nls nptl ogg openmp pam pax_kernel pcre pic pulseaudio readline sasl session ssl systemd tcpd tls udev unicode urandom vim-syntax xattr xtpax xz zeroconf zlib" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en ru" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="exynos fbdev omap omapfb dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

                        Package Settings

media-sound/pulseaudio-5.0-r7::gentoo was built with the following:
USE="alsa alsa-plugin asyncns caps dbus gdbm glib ipv6 ssl systemd tcpd udev zeroconf -X -bluetooth -doc -equalizer -gnome -gtk -jack -libsamplerate (-lirc) -neon (-orc) (-oss) -qt4 -realtime (-system-wide) -test (-webrtc-aec) (-xen)"
Comment 1 Alexander Tsoy 2015-05-19 17:43:23 UTC
Created attachment 403626 [details, diff]

Possible fix.

I suspect the same problem with pulseaudio-6.0 but didn't test it yet.
Comment 2 Alexander Tsoy 2015-05-19 17:47:33 UTC
It seems the check in configure was added to avoid problems like in bug 547194
Comment 3 Alexander Tsoy 2015-05-19 19:00:01 UTC
Comment on attachment 403626 [details, diff]

>+	use neon && filter-flags "-mfpu=*"

The following should also work:

use neon & append-cflags -mfpu=neon
Comment 4 Pacho Ramos gentoo-dev 2015-05-26 20:47:45 UTC
After reading:

I am really unsure about how to handle this, @arm team, what do you prefer?
Comment 5 Alexander Tsoy 2015-05-27 06:52:47 UTC
It turned out that libvpx bug is a packaging issue. As for pulseaudio, it has a strange build system that pass -mfpu=neon before CFLAGS (see ${URL}). So I don't see any solution other than playing with CFLAGS in ebuild. =/
Comment 6 SpanKY gentoo-dev 2015-05-27 08:49:01 UTC
Comment on attachment 403626 [details, diff]

no, i don't think we should be messing with user's CFLAGS at all.  instead, i'd use this unconditional sed in src_prepare:
  sed -i '/NEON_CFLAGS=/s:="[^"]*"::'
or i guess patch out the NEON_CFLAGS=-mfpu=neon lines.

side note: pkg_* funcs are never the place to touch compiler settings ... that's what src_* funcs are for.

using neon simd hardware is normally orthogonal to also generating floating point code using neon.  assuming of course PA doesn't change its ABI in weird ways to assume/require the FPU is being handled by NEON, but a glance at the code shows that isn't the case.
Comment 7 Alexander Tsoy 2015-05-27 09:35:42 UTC
(In reply to SpanKY from comment #6)
> i'd use this unconditional sed in src_prepare:
>   sed -i '/NEON_CFLAGS=/s:="[^"]*"::'
> or i guess patch out the NEON_CFLAGS=-mfpu=neon lines.

You cannot enable neon optimizations in pulseaudio and remove -mfpu=neon. This flag is required for arm_neon.h. You'll get a compile error if this flag is not passed at all or if it is overrided by another -mfpu= flag. For example:

$ sed -n '/#ifndef __ARM_NEON__/,/#else/p' /usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.7.4/include/arm_neon.h
#ifndef __ARM_NEON__
#error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
Comment 8 Pacho Ramos gentoo-dev 2015-09-24 18:27:09 UTC
@arm team, what solution do you prefer? (I think I have seen more similar bugs like this one and it would be better to fix/workaround them in a coherent way)

Comment 9 Pacho Ramos gentoo-dev 2015-11-07 11:22:51 UTC
@arm team, feel free to fix it as you think it is correct

Comment 10 Pacho Ramos gentoo-dev 2016-07-02 16:05:49 UTC
arm, ping! Thanks
Comment 11 Nathan Shearer 2017-02-10 15:36:49 UTC
This is happening in media-sound/pulseaudio-9.0 too
Comment 12 Nathan Shearer 2017-02-10 15:47:51 UTC
Created attachment 463148 [details]
Comment 13 Sleepy Mario 2018-01-30 13:31:25 UTC
Same problem on pulseaudio 11.1
Comment 14 Sleepy Mario 2018-01-30 13:38:50 UTC
Created attachment 517126 [details]
Comment 15 Sleepy Mario 2018-02-14 09:54:51 UTC
UPDATE: Changing "-mfpu=-vfpv4" to "-mvpu=neon-vfpv4" in the CFLAGS solved the problem here.
Comment 16 Alexandru N. Barloiu 2019-02-13 07:41:59 UTC
problem still present in version 12.2. Manually edited Makefiles and compiles ok.
Comment 17 Paul Osmialowski 2019-09-18 08:10:19 UTC
I'm facing the same with media-sound/pulseaudio-13.0 and CPU_FLAGS_ARM="neon"
Comment 18 Mart Raudsepp gentoo-dev 2019-09-18 08:19:16 UTC
If you have neon, why do you set a non-neon -mfpu to override the upstream set one? If you do that, at least have neon or don't enable CPU_FLAGS_ARM=neon on pulseaudio?
Comment 19 Mart Raudsepp gentoo-dev 2019-09-18 08:21:18 UTC
For any solution that would work with any user CFLAGS, I believe we are still waiting for input from @arm