From: Mirko Vogt Date: Sat, 12 Sep 2026 12:15:15 +0000 (+0000) Subject: pulseaudio: detect intl and iconv through meson dependency objects X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=74fbbb485adc2af69f378b736974972f82e351fa;p=openwrt-packages.git pulseaudio: detect intl and iconv through meson dependency objects 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 --- diff --git a/sound/pulseaudio/Makefile b/sound/pulseaudio/Makefile index d6c27bbaa..1a7fb206c 100644 --- a/sound/pulseaudio/Makefile +++ b/sound/pulseaudio/Makefile @@ -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 index 000000000..ce63f7adc --- /dev/null +++ b/sound/pulseaudio/patches/100-meson-use-intl-and-iconv-dependencies.patch @@ -0,0 +1,62 @@ +From 2535498c5109f6a5d55544c29528c99fd5781761 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +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 +--- + 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 + 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 index 000000000..1f49ea425 --- /dev/null +++ b/sound/pulseaudio/patches/101-meson-conditionally-use-libm.patch @@ -0,0 +1,27 @@ +From 3514b5f7c16d8d303b74f0311352f87793c7fea1 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +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 +--- + 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 \nint main(){log(0);}') ++ libm_dep = declare_dependency() ++else ++ libm_dep = cc.find_library('m') ++endif + + thread_dep = dependency('threads') + foreach f : [