wafsamba: support 'soname' attribute on SAMBA_LIBRARY()
authorStefan Metzmacher <metze@samba.org>
Wed, 27 Oct 2010 00:54:56 +0000 (02:54 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 27 Oct 2010 03:07:22 +0000 (05:07 +0200)
It's sometimes needed to specifiy the soname directly.

metze

buildtools/wafsamba/samba_install.py
buildtools/wafsamba/wafsamba.py

index 56e979ed535ea52f893caa63410c9fd3eca2ccf9..0d43236d97464fc26c39313a39cbd324fe16d5c5 100644 (file)
@@ -98,6 +98,10 @@ def install_library(self):
         if not self.private_library:
             # only generate the dev link for non-bundled libs
             dev_link     = bld.make_libname(self.target)
+    elif getattr(self, 'soname', ''):
+        install_name = bld.make_libname(self.target)
+        install_link = self.soname
+        inst_name    = bld.make_libname(t.target)
     else:
         install_name = bld.make_libname(self.target)
         install_link = None
@@ -119,6 +123,15 @@ def install_library(self):
                        install_name)
 
 
+@feature('cshlib')
+@after('apply_implib')
+@before('apply_vnum')
+def apply_soname(self):
+    '''install a library, taking account of the different rpath varients'''
+
+    if self.env.SONAME_ST and getattr(self, 'soname', ''):
+        self.env.append_value('LINKFLAGS', self.env.SONAME_ST % self.soname)
+        self.env.SONAME_ST = ''
 
 ##############################
 # handle the creation of links for libraries and binaries in the build tree
index 6ba0f3727cd200350d8448bedd0ea865097f0394..d19b045da455cc44c96888d551a2bb242b992393 100644 (file)
@@ -97,6 +97,7 @@ def SAMBA_LIBRARY(bld, libname, source,
                   header_path=None,
                   pc_files=None,
                   vnum=None,
+                  soname=None,
                   cflags='',
                   external_library=False,
                   realname=None,
@@ -170,7 +171,7 @@ def SAMBA_LIBRARY(bld, libname, source,
     link_name = bld.map_shlib_extension(link_name, python=(target_type=='PYTHON'))
 
     # we don't want any public libraries without version numbers
-    if not private_library and vnum is None and target_type != 'PYTHON' and not realname:
+    if not private_library and vnum is None and soname is None and target_type != 'PYTHON' and not realname:
         raise Utils.WafError("public library '%s' must have a vnum" % libname)
 
     if target_type == 'PYTHON' or realname or not private_library:
@@ -207,6 +208,7 @@ def SAMBA_LIBRARY(bld, libname, source,
         samba_includes  = includes,
         local_include   = local_include,
         vnum            = vnum,
+        soname          = soname,
         install_path    = None,
         samba_inst_path = install_path,
         name            = libname,