]> git.99rst.org Git - openwrt-packages.git/commitdiff
pulseaudio: detect intl and iconv through meson dependency objects
authorMirko Vogt <redacted>
Sat, 12 Sep 2026 12:15:15 +0000 (12:15 +0000)
committerMirko Vogt <redacted>
Mon, 14 Sep 2026 15:46:54 +0000 (17:46 +0200)
The build probes for dgettext and iconv_open with bare symbol checks,
which succeed against libc even when a standalone GNU libintl or
libiconv is on the include path. Their headers redirect the calls to
libintl_* and libiconv_* symbols, so the objects then need -lintl,
which the Makefile supplied through TARGET_LDFLAGS for every link,
and the standalone libiconv was bypassed through LIBICONV_PLUG.

Add the two patches from upstream merge request 877, which switch the
probes to meson's intl and iconv dependency objects. These compile a
test including the header, so they fall back to linking the library
exactly when the header requires it. With BUILD_NLS this links
libintl-full and libiconv-full where they are used; without it, the
libc implementations are used as before. The second patch makes the
libm link conditional in the same way. Drop the -lintl workaround.

Patches taken from merge request currently under review upstream:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/877

Signed-off-by: Mirko Vogt <redacted>
sound/pulseaudio/Makefile
sound/pulseaudio/patches/100-meson-use-intl-and-iconv-dependencies.patch [new file with mode: 0644]
sound/pulseaudio/patches/101-meson-conditionally-use-libm.patch [new file with mode: 0644]

index d6c27bbaaadd7733ea436b6796611af460c75db8..1a7fb206cbeb9baa33444065864955391a362f24 100644 (file)
@@ -151,7 +151,7 @@ MESON_ARGS += \
        -Dbluez5=disabled
 endif
 
-TARGET_LDFLAGS += -Wl,--gc-sections $(if $(INTL_FULL),-lintl)
+TARGET_LDFLAGS += -Wl,--gc-sections
 
 define Build/Prepare
        $(call Build/Prepare/Default)
diff --git a/sound/pulseaudio/patches/100-meson-use-intl-and-iconv-dependencies.patch b/sound/pulseaudio/patches/100-meson-use-intl-and-iconv-dependencies.patch
new file mode 100644 (file)
index 0000000..ce63f7a
--- /dev/null
@@ -0,0 +1,62 @@
+From 2535498c5109f6a5d55544c29528c99fd5781761 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Fri, 11 Sep 2026 15:17:42 -0700
+Subject: [PATCH] meson: use intl and iconv dependencies
+
+There's currently some issue with musl + external libintl where linking
+is required but it's not doing it. Instead of adjusting, update meson to
+61.2 (version in Ubuntu 22.04) and use iconv and intl dependencies,
+which tend to work better.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ meson.build | 25 ++++---------------------
+ 1 file changed, 4 insertions(+), 21 deletions(-)
+
+--- a/meson.build
++++ b/meson.build
+@@ -1,6 +1,6 @@
+ project('pulseaudio', 'c',
+         version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version'), check : false).stdout().strip(),
+-        meson_version : '>= 0.56.0',
++        meson_version : '>= 0.61.2',
+         default_options : [ 'c_std=gnu11', 'cpp_std=c++17' ]
+         )
+@@ -373,15 +373,7 @@ if cc.has_header_symbol('sys/syscall.h',
+   cdata.set('HAVE_MEMFD', 1)
+ endif
+-if cc.has_function('dgettext')
+-  if host_machine.system() != 'windows'
+-    libintl_dep = []
+-  else
+-    libintl_dep = cc.find_library('intl')
+-  endif
+-else
+-  libintl_dep = cc.find_library('intl')
+-endif
++libintl_dep = dependency('intl')
+ # Symbols
+@@ -472,17 +464,8 @@ if cc.has_function('dladdr', dependencie
+   cdata.set('HAVE_DLADDR', 1)
+ endif
+-have_iconv = false
+-if cc.has_function('iconv_open')
+-  iconv_dep = dependency('', required : false)
+-  have_iconv = true
+-  # tell the libiconv header to pretend to be libc iconv
+-  cdata.set('LIBICONV_PLUG', 1)
+-else
+-  iconv_dep = cc.find_library('iconv', required : false)
+-  have_iconv = iconv_dep.found()
+-endif
+-if have_iconv
++iconv_dep = dependency('iconv', required: false)
++if iconv_dep.found()
+   cdata.set('HAVE_ICONV', 1)
+   iconvconsttest = '''#include <iconv.h>
+ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
diff --git a/sound/pulseaudio/patches/101-meson-conditionally-use-libm.patch b/sound/pulseaudio/patches/101-meson-conditionally-use-libm.patch
new file mode 100644 (file)
index 0000000..1f49ea4
--- /dev/null
@@ -0,0 +1,27 @@
+From 3514b5f7c16d8d303b74f0311352f87793c7fea1 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Fri, 11 Sep 2026 15:23:09 -0700
+Subject: [PATCH] meson: conditionally use libm
+
+Add a small compile test to figure out whether libm is needed or not.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ meson.build | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/meson.build
++++ b/meson.build
+@@ -438,7 +438,11 @@ endif
+ # Core Dependencies
+-libm_dep = cc.find_library('m', required : true)
++if cc.links('#include <math.h>\nint main(){log(0);}')
++  libm_dep = declare_dependency()
++else
++  libm_dep = cc.find_library('m')
++endif
+ thread_dep = dependency('threads')
+ foreach f : [
git clone https://git.99rst.org/PROJECT