wafsamba: Only use private library rpath when linking against private
authorJelmer Vernooij <jelmer@samba.org>
Tue, 30 Nov 2010 00:10:31 +0000 (01:10 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 30 Nov 2010 01:23:37 +0000 (02:23 +0100)
libraries.

Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Tue Nov 30 02:23:37 CET 2010 on sn-devel-104

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

index 0196bd9535f0d5b37c5eba066b77893a1d52620c..fcbf4ea40f4dc118c1be9de3f32b24f7357f7ccc 100644 (file)
@@ -15,7 +15,7 @@ def install_binary(self):
     bld = self.bld
 
     # get the ldflags we will use for install and build
-    install_ldflags = install_rpath(bld)
+    install_ldflags = install_rpath(self)
     build_ldflags   = build_rpath(bld)
 
     if not Options.is_install:
@@ -59,7 +59,7 @@ def install_library(self):
 
     bld = self.bld
 
-    install_ldflags = install_rpath(bld)
+    install_ldflags = install_rpath(self)
     build_ldflags   = build_rpath(bld)
 
     if not Options.is_install or not getattr(self, 'samba_install', True):
index 7006381ae6034a4a54e362d03050514825a6515f..1e360f08563a5ef8b19138fe69fc0bdef9d63a93 100644 (file)
@@ -63,13 +63,23 @@ def ADD_LD_LIBRARY_PATH(path):
         os.environ['LD_LIBRARY_PATH'] = ':'.join(newpath)
 
 
-def install_rpath(bld):
+def needs_private_lib(bld, target):
+    '''return True if a target links to a private library'''
+    for lib in getattr(target, "uselib_local", []):
+        t = bld.name_to_obj(lib, bld.env)
+        if t and getattr(t, 'private_library', False):
+            return True
+        return False
+
+
+def install_rpath(target):
     '''the rpath value for installation'''
+    bld = target.bld
     bld.env['RPATH'] = []
     ret = set()
     if bld.env.RPATH_ON_INSTALL:
         ret.add(bld.EXPAND_VARIABLES(bld.env.LIBDIR))
-    if bld.env.RPATH_ON_INSTALL_PRIVATE:
+    if bld.env.RPATH_ON_INSTALL_PRIVATE and needs_private_lib(bld, target):
         ret.add(bld.EXPAND_VARIABLES(bld.env.PRIVATELIBDIR))
     return list(ret)