scripts: Use special ${LIB} token for architecture-independence

On GNU/Linux systems, the literal string '${LIB}' in dynamic linker
paths expands to "lib", a biarch libQUAL directory such as "lib64", or
a Debian-style multiarch directory such as "lib/x86_64-linux-gnu".
If we're installing libraries to such a directory, and we have both
word-sizes' compatibility libraries available, then pw-pulse can
use LD_LIBRARY_PATH='/usr/${LIB}/pipewire-0.3/pulse' to make both
i386 and x86_64 programs load the correct version.

Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
Simon McVittie 2020-06-03 11:03:35 +01:00 committed by Wim Taymans
parent 96eb6e4df8
commit e493be3844
3 changed files with 23 additions and 2 deletions

View file

@ -35,6 +35,21 @@ pipewire_sysconfdir = join_paths(prefix, get_option('sysconfdir'))
pipewire_configdir = join_paths(pipewire_sysconfdir, 'pipewire')
modules_install_dir = join_paths(pipewire_libdir, pipewire_name)
if host_machine.system() == 'linux'
# glibc ld.so interprets ${LIB} in a library loading path with an
# appropriate value for the current architecture, typically something
# like lib, lib64 or lib/x86_64-linux-gnu.
# This allows the same pw-pulse script to work for both 32- and 64-bit
# applications on biarch/multiarch distributions, by setting something
# like LD_LIBRARY_PATH='/usr/${LIB}/pipewire-0.3/pulse'.
# Note that ${LIB} is a special token expanded by the runtime linker,
# not an environment variable, and must be passed through literally.
modules_install_dir_dlopen = join_paths(prefix, '${LIB}', pipewire_name)
else
modules_install_dir_dlopen = modules_install_dir
endif
spa_plugindir = join_paths(pipewire_libdir, spa_name)
pipewire_headers_dir = join_paths(pipewire_name, 'pipewire')

View file

@ -20,10 +20,13 @@ jack_dep = dependency('jack', version : '>= 1.9.10', required : false)
libjack_path = get_option('libjack-path')
if libjack_path == ''
libjack_path = join_paths(modules_install_dir, 'jack')
libjack_path_dlopen = join_paths(modules_install_dir_dlopen, 'jack')
else
libjack_path_dlopen = libjack_path
endif
tools_config = configuration_data()
tools_config.set('LIBJACK_PATH', libjack_path)
tools_config.set('LIBJACK_PATH', libjack_path_dlopen)
configure_file(input : 'pw-jack.in',
output : 'pw-jack',

View file

@ -51,10 +51,13 @@ vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfil
libpulse_path = get_option('libpulse-path')
if libpulse_path == ''
libpulse_path = join_paths(modules_install_dir, 'pulse')
libpulse_path_dlopen = join_paths(modules_install_dir_dlopen, 'pulse')
else
libpulse_path_dlopen = libpulse_path
endif
tools_config = configuration_data()
tools_config.set('LIBPULSE_PATH', libpulse_path)
tools_config.set('LIBPULSE_PATH', libpulse_path_dlopen)
configure_file(input : 'pw-pulse.in',
output : 'pw-pulse',