git: 86f04dd9a2c5 - main - audio/pulseaudio: fix build with lld 17

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Fri, 06 Oct 2023 17:51:01 UTC
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=86f04dd9a2c58f159b050b6043b919da2d120e6f

commit 86f04dd9a2c58f159b050b6043b919da2d120e6f
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-09-26 18:54:05 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-10-06 17:48:54 +0000

    audio/pulseaudio: fix build with lld 17
    
    Building audio/pulseaudio with lld 17 results in the following link
    errors:
    
      cc  -o src/pulse/libpulse.so.0.24.2 src/pulse/libpulse.so.0.24.2.p/channelmap.c.o src/pulse/libpulse.so.0.24.2.p/context.c.o src/pulse/libpulse.so.0.24.2.p/direction.c.o src/pulse/libpulse.so.0.24.2.p/error.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-manager.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-restore.c.o src/pulse/libpulse.so.0.24.2.p/ext-stream-restore.c.o src/pulse/libpulse.so.0.24.2.p/format.c.o src/pulse/libpulse.so.0.24.2.p/introspect.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-api.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-signal.c.o src/pulse/libpulse.so.0.24.2.p/mainloop.c.o src/pulse/libpulse.so.0.24.2.p/operation.c.o src/pulse/libpulse.so.0.24.2.p/proplist.c.o src/pulse/libpulse.so.0.24.2.p/rtclock.c.o src/pulse/libpulse.so.0.24.2.p/sample.c.o src/pulse/libpulse.so.0.24.2.p/scache.c.o src/pulse/libpulse.so.0.24.2.p/stream.c.o src/pulse/libpulse.so.0.24.2.p/subscribe.c.o src/pulse/libpulse.so.0.24.2.p/thread-mainloop.c.o src/pulse/libpulse.so.0.24.2.p/tim
 eval.c.o src/pulse/libpulse.so.0.24.2.p/utf8.c.o src/pulse/libpulse.so.0.24.2.p/util.c.o src/pulse/libpulse.so.0.24.2.p/volume.c.o src/pulse/libpulse.so.0.24.2.p/xmalloc.c.o -L/usr/local/lib -Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,libpulse.so.0 -fstack-protector-strong -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -DLIBICONV_PLUG -isystem /usr/local/include '-Wl,-rpath,$ORIGIN/..:/usr/local/lib' -Wl,-rpath-link,/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/_build/src -Wl,-rpath-link,/usr/local/lib src/libpulsecommon-16.1.so -Wl,-z,nodelete -Wl,-version-script=/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/src/pulse/map-file -lm -pthread /usr/local/lib/libdbus-1.so -ldl -lintl -Wl,--end-group
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_free' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_get_api' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_new' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_drain' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_flush' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_free' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_get_latency' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_new' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_read' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_write' failed: symbol not defined
      cc: error: linker command failed with exit code 1 (use -v to see invocation)
    
    This is because lld 17 defaults to errors when undefined symbols are
    referenced in linker version scripts. Since pulseaudio uses the same
    linker version script for both the regular libpulse.so, and the other
    variants, libpulse-mainloop-glib.so and libpulse-simple.so, some of the
    symbols are expected to be undefined, so suppress the errors by adding
    -Wl,--undefined-version to LDFLAGS.
    
    PR:             274111
    Approved by:    blanket (for desktop and kde)
    MFH:            2023Q4
---
 audio/pulseaudio/Makefile | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/audio/pulseaudio/Makefile b/audio/pulseaudio/Makefile
index d1a5078aeaa3..f4060e63407e 100644
--- a/audio/pulseaudio/Makefile
+++ b/audio/pulseaudio/Makefile
@@ -29,6 +29,11 @@ USES=		compiler:c11 cpe gettext-tools gmake gnome iconv localbase:ldflags \
 USE_GNOME=	glib20
 USE_LDCONFIG=	yes
 
+# Some symbols in the linker version script map-file are only defined when
+# building the mainloop-glib shared library. Suppress errors with lld >= 17 due
+# to these undefined symbols.
+LDFLAGS+=	-Wl,--undefined-version
+
 SHEBANG_FILES=	shell-completion/bash/pactl \
 		src/utils/pa-info \
 		src/utils/qpaeq