summaryrefslogtreecommitdiffstats
path: root/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2020-12-17 21:27:38 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-12-20 00:03:04 +0000
commit4b63c75b80bea668bd18c11b6cef2024b017fb64 (patch)
treed012914246c78d0ca4d8cfb1a71a1840d0033d57 /meta/recipes-multimedia/pulseaudio/pulseaudio.inc
parentb381e01a667b769ebe245b75194c5ef4038cb7b0 (diff)
downloadpoky-4b63c75b80bea668bd18c11b6cef2024b017fb64.tar.gz
pulseaudio: switch build system from Autotools to Meson
Upstream is moving from Autotools to Meson, Autotools support will be dropped in 15.0. I dropped some configure options: * --enable-tcpwrap=no doesn't (currently) have a counterpart in Meson, TCP Wrappers support is always disabled. * --disable-esound doesn't have a counterpart in Meson, EsounD support is always disabled. * --disable-gconf doesn't have a counterpart in Meson, GConf support is always disabled. I backported a patch that implements support for the -Dvalgrind=disabled option. I checked with buildhistory what the differences are before and after this patch (with qemuarm with neon removed from TUNE_FEATURES, all PACKAGECONFIGs enabled): * Obvious differences in DEPENDS: Autotools stuff removed and Meson stuff added. There wasn't anything strange here. * Packages have superfluous RDEPENDS removed from them. With Autotools something caused for example X11 libraries to be added to RDEPENDS of packages that don't have anything to do with X11. * The pulseaudio-src package had MMX and SSE related files removed and Neon related files added. I don't know why the ARM build previously had MMX and SSE files included, the addition of Neon files is explained by the fact that with Meson the Neon optimizations can't be disabled if the compiler supports Neon (see below). * libfoo.so symlinks changed to point to libfoo.so.X rather than directly to libfoo.so.X.Y.Z. To my understading that's fine, since libfoo.so.X is a symlink that points to libfoo.so.X.Y.Z. * There were various file size changes, which I didn't investigate. Previously the recipe disabled ARM Neon optimizations when "neon" was not in TUNE_FEATURES. That was originally added in commit 4e7b91b5a2613b957b08aefbee1aac28fdd19598 at a time when PulseAudio's build system didn't check the availability of the arm_neon.h header, causing compilation errors when the header wasn't available. That issue was fixed a long time ago, so there was little need for the TUNE_FEATURES check, although it was still possible to make the build fail if non-neon -mfpu was passed in CFLAGS, so the TUNE_FEATURES check still had some theoretical benefit (theoretical, because generally OE passes -mfpu in CC instead of CFLAGS, so OE's -mfpu option appears very early in the compiler command line, which doesn't trip up PulseAudio's current Autotools build system). With Meson there's no option for disabling Neon optimizations if the compiler supports Neon. If -mfpu is set in CC or CFLAGS, it's ignored, because the build system adds -mfpu=neon at the end of the compiler command line, overriding any earlier -mfpu options. This shouldn't be a problem, because PulseAudio detects at runtime whether the CPU supports Neon instructions. (From OE-Core rev: 80bbea06e706fde3600950ea9ddfc38a1a76b8bb) Signed-off-by: Tanu Kaskinen <tanuk@iki.fi> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-multimedia/pulseaudio/pulseaudio.inc')
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc64
1 files changed, 29 insertions, 35 deletions
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index 48759bca62..cf4be7ed40 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -56,49 +56,47 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \
56 file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \ 56 file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \
57" 57"
58 58
59# libtool is needed for libltdl, used in module loading.
59DEPENDS = "libatomic-ops libsndfile1 libtool" 60DEPENDS = "libatomic-ops libsndfile1 libtool"
60# optional 61# optional
61DEPENDS += "udev alsa-lib glib-2.0" 62DEPENDS += "udev alsa-lib glib-2.0"
62DEPENDS += "speexdsp libxml-parser-perl-native libcap" 63DEPENDS += "speexdsp libxml-parser-perl-native libcap"
63 64
64inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings 65inherit bash-completion meson pkgconfig useradd gettext perlnative systemd manpages gsettings
65 66
66# *.desktop rules wont be generated during configure and build will fail 67# *.desktop rules wont be generated during configure and build will fail
67# if using --disable-nls 68# if using --disable-nls
68USE_NLS = "yes" 69USE_NLS = "yes"
69 70
70EXTRA_OECONF = "\ 71EXTRA_OEMESON = "\
71 --disable-hal-compat \ 72 -Dhal-compat=false \
72 --disable-orc \ 73 -Dorc=disabled \
73 --enable-tcpwrap=no \ 74 -Daccess_group=audio \
74 --with-access-group=audio \ 75 -Dopenssl=disabled \
75 --disable-openssl \ 76 -Ddatabase=simple \
76 --with-database=simple \ 77 -Dzshcompletiondir=no \
77 --without-zsh-completion-dir \ 78 -Dudevrulesdir=`pkg-config --variable=udevdir udev`/rules.d \
78 --with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d \ 79 -Dvalgrind=disabled \
79 ac_cv_header_valgrind_memcheck_h=no \ 80 -Dtests=false \
80 --disable-tests \ 81 -Drunning-from-build-tree=false \
81 --disable-running-from-build-tree \
82 --disable-esound \
83 --disable-gconf \
84" 82"
85 83
86# soxr (the SoX Resampler library) doesn't seem to be currently packaged in 84# soxr (the SoX Resampler library) doesn't seem to be currently packaged in
87# oe-core nor meta-oe, so let's not add a PACKAGECONFIG entry for it for now. 85# oe-core nor meta-oe, so let's not add a PACKAGECONFIG entry for it for now.
88EXTRA_OECONF += "--without-soxr" 86EXTRA_OEMESON += "-Dsoxr=disabled"
89 87
90# The FFTW dependency (for module-equalizer-sink) was removed in commit 88# The FFTW dependency (for module-equalizer-sink) was removed in commit
91# ddbd713293 without explaining why it was not made a PACKAGECONFIG item 89# ddbd713293 without explaining why it was not made a PACKAGECONFIG item
92# instead. Oh well, let's keep it disabled until someone expresses some 90# instead. Oh well, let's keep it disabled until someone expresses some
93# interest in having it enabled. 91# interest in having it enabled.
94EXTRA_OECONF += "--without-fftw" 92EXTRA_OEMESON += "-Dfftw=disabled"
95 93
96# The "adrian" echo canceller implementation has a non-standard license 94# The "adrian" echo canceller implementation has a non-standard license
97# (src/modules/echo-cancel/adrian-license.txt). It's a permissive license, so 95# (src/modules/echo-cancel/adrian-license.txt). It's a permissive license, so
98# the licensing terms are probably not problematic, but it would be an extra 96# the licensing terms are probably not problematic, but it would be an extra
99# hassle to add the license to OE-Core's set of licenses. The canceller isn't 97# hassle to add the license to OE-Core's set of licenses. The canceller isn't
100# very good anyway, better alternatives exist (such as the webrtc canceller). 98# very good anyway, better alternatives exist (such as the webrtc canceller).
101EXTRA_OECONF += "--disable-adrian-aec" 99EXTRA_OEMESON += "-Dadrian-aec=false"
102 100
103PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ 101PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
104 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \ 102 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
@@ -107,26 +105,22 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5'
107 dbus gsettings \ 105 dbus gsettings \
108 " 106 "
109 107
110PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus" 108PACKAGECONFIG[dbus] = "-Ddbus=enabled,-Ddbus=disabled,dbus"
111PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5 sbc" 109PACKAGECONFIG[bluez5] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc"
112PACKAGECONFIG[gsettings] = "--enable-gsettings,--disable-gsettings,glib-2.0-native glib-2.0" 110PACKAGECONFIG[gsettings] = "-Dgsettings=enabled,-Dgsettings=disabled,glib-2.0-native glib-2.0"
113PACKAGECONFIG[ofono] = "--enable-bluez5-ofono-headset,--disable-bluez5-ofono-headset,ofono" 111PACKAGECONFIG[ofono] = "-Dbluez5-ofono-headset=true,-Dbluez5-ofono-headset=false,ofono"
114PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3" 112PACKAGECONFIG[gtk] = "-Dgtk=enabled,-Dgtk=disabled,gtk+3"
115PACKAGECONFIG[systemd] = "--enable-systemd-daemon --enable-systemd-login --enable-systemd-journal --with-systemduserunitdir=${systemd_user_unitdir},--disable-systemd-daemon --disable-systemd-login --disable-systemd-journal,systemd" 113PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemduserunitdir=${systemd_user_unitdir},-Dsystemd=disabled,systemd"
116PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxtst libice libsm libxcb" 114PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,virtual/libx11 libxtst libice libsm libxcb"
117PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" 115PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
118PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" 116PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
119# Since many embedded systems don't have non-root users, it's useful to be 117# Since many embedded systems don't have non-root users, it's useful to be
120# able to use pulseaudio autospawn for root as well. 118# able to use pulseaudio autospawn for root as well.
121PACKAGECONFIG[autospawn-for-root] = ",,," 119PACKAGECONFIG[autospawn-for-root] = ",,,"
122PACKAGECONFIG[lirc] = "--enable-lirc,--disable-lirc,lirc" 120PACKAGECONFIG[lirc] = "-Dlirc=enabled,-Dlirc=disabled,lirc"
123PACKAGECONFIG[webrtc] = "--enable-webrtc-aec,--disable-webrtc-aec,webrtc-audio-processing" 121PACKAGECONFIG[webrtc] = "-Dwebrtc-aec=enabled,-Dwebrtc-aec=disabled,webrtc-audio-processing"
124PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," 122PACKAGECONFIG[ipv6] = "-Dipv6=true,-Dipv6=false,"
125PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, " 123PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,"
126
127EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
128EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
129
130 124
131export TARGET_PFPU = "${TARGET_FPU}" 125export TARGET_PFPU = "${TARGET_FPU}"
132 126