summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-04-09 13:11:49 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-04-23 21:47:26 -0400
commit6b30f2801b426dc8a48412f8fd3789fd84521407 (patch)
tree47e0e27e51dff46490a642aa83772a17e571a4c8
parent572baca1d4bad218805b71be7f92b2c0385ec1e6 (diff)
meson: include the library symbol version list in link_depends
This is pretty ugly, because I don't know how to use a single definition for two purposes: - --version-script needs a path relative to the build root - link_depends needs a path relative to source root Also, link_depends does not accept files() output [https://github.com/mesonbuild/meson/issues/1172], and I don't see a way to go from files() output to a string path that can be used to craft the -Wl arg. Ideally, a single files() result could be used in both places. I'm leaving this as a separate commit for now.
-rw-r--r--meson.build14
-rw-r--r--src/libsystemd/meson.build2
-rw-r--r--src/libudev/meson.build6
-rw-r--r--src/login/meson.build2
4 files changed, 16 insertions, 8 deletions
diff --git a/meson.build b/meson.build
index fc03f68d10..ffdd59071f 100644
--- a/meson.build
+++ b/meson.build
@@ -962,17 +962,19 @@ libjournal_core = static_library(
libsystemd_journal_internal],
install : false)
+version_script_arg = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
libsystemd = shared_library(
'systemd',
libsystemd_internal_sources,
version : '0.18.0',
include_directories : includes,
link_args : ['-shared',
- '-Wl,--version-script=' + libsystemd_sym],
+ '-Wl,--version-script=' + version_script_arg],
link_with : [libbasic,
libsystemd_internal,
libsystemd_journal_internal],
dependencies : [threads],
+ link_depends : libsystemd_sym,
install : true,
install_dir : rootlibdir)
@@ -988,7 +990,8 @@ foreach tuple : [['myhostname', 'HAVE_MYHOSTNAME', []],
module = tuple[0]
extra_deps = tuple[2]
- sym = meson.current_source_dir() + '/src/nss-@0@/nss-@0@.sym'.format(module)
+ sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
+ version_script_arg = join_paths(meson.current_source_dir(), sym)
shared_library(
'nss_' + module,
@@ -996,12 +999,13 @@ foreach tuple : [['myhostname', 'HAVE_MYHOSTNAME', []],
version : '2',
include_directories : includes,
link_args : ['-shared',
- '-Wl,--version-script=' + sym,
+ '-Wl,--version-script=' + version_script_arg,
'-Wl,--undefined'],
link_with : [libsystemd_internal,
libbasic],
dependencies : [threads,
librt] + extra_deps,
+ link_depends : sym,
install : true,
install_dir : rootlibdir)
endif
@@ -1207,16 +1211,18 @@ if conf.get('ENABLE_LOGIND', 0) == 1
install_dir : rootbindir)
if conf.get('HAVE_PAM', 0) == 1
+ version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
shared_library(
'pam_systemd',
pam_systemd_c,
name_prefix : '',
include_directories : includes,
link_args : ['-shared',
- '-Wl,--version-script=' + pam_systemd_sym],
+ '-Wl,--version-script=' + version_script_arg],
link_with : [libshared],
dependencies : [libpam,
libpam_misc],
+ link_depends : pam_systemd_sym,
install : true,
install_dir : pamlibdir)
endif
diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build
index 9c6e494b93..5df62ac763 100644
--- a/src/libsystemd/meson.build
+++ b/src/libsystemd/meson.build
@@ -88,7 +88,7 @@ libsystemd_internal = static_library(
dependencies : [threads,
librt])
-libsystemd_sym = meson.current_source_dir() + '/libsystemd.sym'
+libsystemd_sym = 'src/libsystemd/libsystemd.sym'
libsystemd_pc = configure_file(
input : 'libsystemd.pc.in',
diff --git a/src/libudev/meson.build b/src/libudev/meson.build
index 5730522ce0..e303ee8518 100644
--- a/src/libudev/meson.build
+++ b/src/libudev/meson.build
@@ -16,17 +16,19 @@ libudev_sources = '''
############################################################
-libudev_sym = meson.current_source_dir() + '/libudev.sym'
+libudev_sym = 'libudev.sym'
+version_script_arg = '@0@/@1@'.format(meson.current_source_dir(), libudev_sym)
libudev = shared_library(
'udev',
libudev_sources,
version : '1.6.6',
include_directories : includes,
link_args : ['-shared',
- '-Wl,--version-script=' + libudev_sym],
+ '-Wl,--version-script=' + version_script_arg],
link_with : [libbasic,
libsystemd],
+ link_depends : libudev_sym,
install : true,
install_dir : rootlibdir)
diff --git a/src/login/meson.build b/src/login/meson.build
index 5c957063eb..75b8498862 100644
--- a/src/login/meson.build
+++ b/src/login/meson.build
@@ -65,7 +65,7 @@ if conf.get('ENABLE_LOGIND', 0) == 1
install_data(logind_conf,
install_dir : pkgsysconfdir)
- pam_systemd_sym = meson.current_source_dir() + '/pam_systemd.sym'
+ pam_systemd_sym = 'src/login/pam_systemd.sym'
pam_systemd_c = files('pam_systemd.c')
install_data('org.freedesktop.login1.conf',