]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: include the library symbol version list in link_depends
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 9 Apr 2017 17:11:49 +0000 (13:11 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 24 Apr 2017 01:47:26 +0000 (21:47 -0400)
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.

meson.build
src/libsystemd/meson.build
src/libudev/meson.build
src/login/meson.build

index fc03f68d10805b22581603dc9e5c2cb9bb7fc24d..ffdd59071fd35c4f39bc1edbfce43bc26231ce96 100644 (file)
@@ -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
index 9c6e494b93503e119c21492368d6694baa64d185..5df62ac7636dbf450e025f3764fc5196c0adb244 100644 (file)
@@ -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',
index 5730522ce08ca661c2a4d31f1d45e9e69abcb7ef..e303ee8518910c94713029f235b44e946e256851 100644 (file)
@@ -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)
 
index 5c957063eb873a418ef1324b398d0b2cf40fbe7b..75b849886207aa13a769455b5c3762bcbb5b8d75 100644 (file)
@@ -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',