From 7f44a623e0a8a91cd14bcf13ec67da1bd53e5dff Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Sat, 3 Aug 2019 02:41:55 +0530 Subject: [PATCH] build-sys: meson: Correctly set up RPATH This was being done automatically by autotools, now we need to manually specify this for each executable/library with a dependency in a non-standard directory. --- src/daemon/meson.build | 1 + src/modules/alsa/meson.build | 1 + src/modules/bluetooth/meson.build | 1 + src/modules/echo-cancel/meson.build | 1 + src/modules/gsettings/meson.build | 1 + src/modules/meson.build | 5 +++++ src/modules/oss/meson.build | 1 + src/modules/raop/meson.build | 4 ++++ src/modules/rtp/meson.build | 1 + src/pulse/meson.build | 3 +++ src/pulsecore/meson.build | 10 ++++++++++ src/utils/meson.build | 6 ++++++ 12 files changed, 35 insertions(+) diff --git a/src/daemon/meson.build b/src/daemon/meson.build index f246153..571c5e2 100644 --- a/src/daemon/meson.build +++ b/src/daemon/meson.build @@ -27,6 +27,7 @@ executable('pulseaudio', pulseaudio_sources, pulseaudio_headers, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_args : ['-ffast-math'], link_with : [libpulsecore, libpulsecommon, libpulse], diff --git a/src/modules/alsa/meson.build b/src/modules/alsa/meson.build index 8e8994c..d8d46fa 100644 --- a/src/modules/alsa/meson.build +++ b/src/modules/alsa/meson.build @@ -34,6 +34,7 @@ libalsa_util = shared_library('alsa-util', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, alsa_dep, dbus_dep, libm_dep, udev_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/modules/bluetooth/meson.build b/src/modules/bluetooth/meson.build index 1758735..7b3de6b 100644 --- a/src/modules/bluetooth/meson.build +++ b/src/modules/bluetooth/meson.build @@ -28,5 +28,6 @@ libbluez5_util = shared_library('bluez5-util', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep, sbc_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/modules/echo-cancel/meson.build b/src/modules/echo-cancel/meson.build index 03d5221..cdb53d6 100644 --- a/src/modules/echo-cancel/meson.build +++ b/src/modules/echo-cancel/meson.build @@ -17,5 +17,6 @@ libwebrtc_util = shared_library('webrtc-util', dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, webrtc_dep], link_args : [nodelete_link_args, '-Wl,--unresolved-symbols=ignore-in-object-files'], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/modules/gsettings/meson.build b/src/modules/gsettings/meson.build index 7a0a034..f39fb65 100644 --- a/src/modules/gsettings/meson.build +++ b/src/modules/gsettings/meson.build @@ -11,6 +11,7 @@ gsettings_helper = executable('gsettings-helper', link_with : [libpulsecommon, libpulse], dependencies : [gio_dep], install_dir : pulselibexecdir, + install_rpath : privlibdir, install : true, ) diff --git a/src/modules/meson.build b/src/modules/meson.build index 89aa6b6..7192c1b 100644 --- a/src/modules/meson.build +++ b/src/modules/meson.build @@ -259,6 +259,10 @@ all_modules += [ # Generate a shared module object for each modules +# FIXME: Not all modules actually have a dep in modlibexecdir +# FIXME: meson doesn't support multiple RPATH arguments currently +rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir) + foreach m : all_modules name = m[0] sources = m[1] @@ -273,6 +277,7 @@ foreach m : all_modules include_directories : [configinc, topinc], c_args : [pa_c_args, server_c_args, '-DPA_MODULE_NAME=' + name.underscorify()] + extra_flags, install : true, + install_rpath : rpath_dirs, install_dir : modlibexecdir, dependencies : [thread_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep] + extra_deps, link_args : [nodelete_link_args, '-Wl,--no-undefined' ], diff --git a/src/modules/oss/meson.build b/src/modules/oss/meson.build index 3e9603c..cb3e08a 100644 --- a/src/modules/oss/meson.build +++ b/src/modules/oss/meson.build @@ -13,5 +13,6 @@ liboss_util = shared_library('oss-util', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/modules/raop/meson.build b/src/modules/raop/meson.build index d150112..e98bb45 100644 --- a/src/modules/raop/meson.build +++ b/src/modules/raop/meson.build @@ -14,6 +14,9 @@ libraop_headers = [ 'raop-util.h', ] +# FIXME: meson doesn't support multiple RPATH arguments currently +rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir) + libraop = shared_library('raop', libraop_sources, libraop_headers, @@ -22,5 +25,6 @@ libraop = shared_library('raop', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, librtp_dep, openssl_dep], install : true, + install_rpath : rpath_dirs, install_dir : modlibexecdir, ) diff --git a/src/modules/rtp/meson.build b/src/modules/rtp/meson.build index 2180540..29ab195 100644 --- a/src/modules/rtp/meson.build +++ b/src/modules/rtp/meson.build @@ -22,6 +22,7 @@ librtp = shared_library('rtp', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/pulse/meson.build b/src/pulse/meson.build index 7920a78..767db7f 100644 --- a/src/pulse/meson.build +++ b/src/pulse/meson.build @@ -78,6 +78,7 @@ libpulse = shared_library('pulse', c_args : [pa_c_args], link_args : [nodelete_link_args], install : true, + install_rpath : privlibdir, dependencies : [libm_dep, thread_dep, libpulsecommon_dep, dbus_dep], implicit_include_directories : false) @@ -97,6 +98,7 @@ libpulse_simple = shared_library('pulse-simple', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep], install : true, + install_rpath : privlibdir, ) libpulse_simple_dep = declare_dependency(link_with: libpulse_simple) @@ -111,6 +113,7 @@ if glib_dep.found() include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, glib_dep], install : true, + install_rpath : privlibdir, ) libpulse_mainloop_glib_dep = declare_dependency(link_with: libpulse_mainloop_glib) diff --git a/src/pulsecore/meson.build b/src/pulsecore/meson.build index 99dbe77..47874c3 100644 --- a/src/pulsecore/meson.build +++ b/src/pulsecore/meson.build @@ -191,6 +191,7 @@ libpulsecore = shared_library('pulsecore-' + pa_version_major_minor, c_args : [pa_c_args, server_c_args], link_args : [nodelete_link_args], install : true, + install_rpath : privlibdir, install_dir : privlibdir, link_with : libpulsecore_simd_lib, dependencies : [libm_dep, libpulsecommon_dep, libpulse_dep, ltdl_dep, shm_dep, sndfile_dep, database_dep, dbus_dep, orc_dep, samplerate_dep, soxr_dep, speex_dep, x11_dep], @@ -210,6 +211,7 @@ libavahi_wrap = shared_library('avahi-wrap', dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, avahi_dep], implicit_include_directories : false, # pulsecore/poll.h /usr/include/poll.h install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) @@ -221,11 +223,15 @@ libcli = shared_library('cli', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) libcli_dep = declare_dependency(link_with: libcli) +# FIXME: meson doesn't support multiple RPATH arguments currently +rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir) + libprotocol_cli = shared_library('protocol-cli', 'protocol-cli.c', 'protocol-cli.h', @@ -234,6 +240,7 @@ libprotocol_cli = shared_library('protocol-cli', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libcli_dep], install : true, + install_rpath : rpath_dirs, install_dir : modlibexecdir, ) @@ -245,6 +252,7 @@ libprotocol_http = shared_library('protocol-http', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) @@ -256,6 +264,7 @@ libprotocol_native = shared_library('protocol-native', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) @@ -267,5 +276,6 @@ libprotocol_simple = shared_library('protocol-simple', include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep], install : true, + install_rpath : privlibdir, install_dir : modlibexecdir, ) diff --git a/src/utils/meson.build b/src/utils/meson.build index e82e6ea..0f87a18 100644 --- a/src/utils/meson.build +++ b/src/utils/meson.build @@ -12,6 +12,7 @@ pacat_aliases = [ executable('pacat', pacat_sources, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], dependencies : [sndfile_dep], @@ -32,6 +33,7 @@ pactl_sources = [ executable('pactl', pactl_sources, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], dependencies : [sndfile_dep], @@ -45,6 +47,7 @@ pasuspender_sources = [ executable('pasuspender', pasuspender_sources, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], c_args : pa_c_args, @@ -57,6 +60,7 @@ pacmd_sources = [ executable('pacmd', pacmd_sources, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], c_args : pa_c_args, @@ -70,6 +74,7 @@ if x11_dep.found() executable('pax11publish', pax11publish_sources, install: true, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], dependencies : [x11_dep], @@ -86,6 +91,7 @@ if cc.has_header('sys/soundcard.h') libpulsecommon_sources, install: true, install_dir : padsplibdir, + install_rpath : privlibdir, include_directories : [configinc, topinc], link_with : [libpulsecommon, libpulse], link_args : [nodelete_link_args, '-ldl'], -- 2.7.4