Skip to content

Commit

Permalink
audio/pulseaudio: fix build with lld 17
Browse files Browse the repository at this point in the history
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/timeval.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
  • Loading branch information
DimitryAndric committed Oct 6, 2023
1 parent 2bd641c commit 86f04dd
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions audio/pulseaudio/Makefile
Expand Up @@ -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
Expand Down

0 comments on commit 86f04dd

Please sign in to comment.