summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc64
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch67
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb1
3 files changed, 97 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
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch
new file mode 100644
index 0000000000..d60a9a211f
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch
@@ -0,0 +1,67 @@
1From 6d202833a5ae241eeb648631cf95090c452198f9 Mon Sep 17 00:00:00 2001
2From: Tanu Kaskinen <tanuk@iki.fi>
3Date: Fri, 14 Feb 2020 07:29:33 +0200
4Subject: [PATCH] build-sys: Add an option for enabling/disabling Valgrind
5
6In OpenEmbedded the PulseAudio recipe currently disables Valgrind
7support by passing "ac_cv_header_valgrind_memcheck_h=no" to the
8configure script (this was added to make it deterministic whether
9Valgrdind support gets enabled or not). I'm converting the PulseAudio
10recipe to use Meson, and I needed an option to disable Valgrind.
11
12Upstream-Status: Backport
13
14Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
15---
16 meson.build | 6 +++++-
17 meson_options.txt | 3 +++
18 2 files changed, 8 insertions(+), 1 deletion(-)
19
20diff --git a/meson.build b/meson.build
21index 658eeee57..258962724 100644
22--- a/meson.build
23+++ b/meson.build
24@@ -220,7 +220,6 @@ check_headers = [
25 'sys/un.h',
26 'sys/wait.h',
27 'syslog.h',
28- 'valgrind/memcheck.h',
29 'xlocale.h',
30 ]
31
32@@ -231,6 +230,10 @@ foreach h : check_headers
33 endif
34 endforeach
35
36+if cc.has_header('valgrind/memcheck.h', required: get_option('valgrind'))
37+ cdata.set('HAVE_VALGRIND_MEMCHECK_H', 1)
38+endif
39+
40 # FIXME: move this to the above set
41 if cc.has_header('pthread.h')
42 cdata.set('HAVE_PTHREAD', 1)
43@@ -841,6 +844,7 @@ summary = [
44 'Enable SoXR (resampler): @0@'.format(soxr_dep.found()),
45 'Enable WebRTC echo canceller: @0@'.format(webrtc_dep.found()),
46 'Enable Gcov coverage: @0@'.format(get_option('gcov')),
47+ 'Enable Valgrind: @0@'.format(cdata.has('HAVE_VALGRIND_MEMCHECK_H')),
48 'Enable man pages: @0@'.format(get_option('man')),
49 'Enable unit tests: @0@'.format(get_option('tests')),
50 '',
51diff --git a/meson_options.txt b/meson_options.txt
52index 824f24e08..115cc84af 100644
53--- a/meson_options.txt
54+++ b/meson_options.txt
55@@ -138,6 +138,9 @@ option('systemd',
56 option('udev',
57 type : 'feature', value : 'auto',
58 description : 'Optional udev support')
59+option('valgrind',
60+ type : 'feature', value : 'auto',
61+ description : 'Optional Valgrind support')
62 option('x11',
63 type : 'feature', value : 'auto',
64 description : 'Optional X11 support')
65--
662.20.1
67
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
index ac0c82e37d..63ef3a9c12 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
@@ -3,6 +3,7 @@ require pulseaudio.inc
3SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ 3SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
4 file://0001-client-conf-Add-allow-autospawn-for-root.patch \ 4 file://0001-client-conf-Add-allow-autospawn-for-root.patch \
5 file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \ 5 file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
6 file://0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch \
6 file://volatiles.04_pulse \ 7 file://volatiles.04_pulse \
7 " 8 "
8SRC_URI[md5sum] = "84a7776e63dd55c40db8fbd7c7e2e18e" 9SRC_URI[md5sum] = "84a7776e63dd55c40db8fbd7c7e2e18e"