From 3e84e10daf7282c61b6a557a8e97af84d8ab3e15 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 23 Mar 2010 10:00:48 -0400 Subject: [PATCH] build: finer grained rpath checking for binary/install --- buildtools/wafsamba/samba_utils.py | 23 +++++++++++++---------- buildtools/wafsamba/wafsamba.py | 12 +++++++----- lib/replace/wscript | 2 -- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py index 564b5b82e31..8bd913f7202 100644 --- a/buildtools/wafsamba/samba_utils.py +++ b/buildtools/wafsamba/samba_utils.py @@ -59,23 +59,26 @@ def runonce(function): return wrapper - -def set_rpath(bld): - '''setup the default rpath''' - if bld.env.RPATH_ON_BUILD: - rpath = os.path.normpath('%s/%s' % (bld.env['BUILD_DIRECTORY'], LIB_PATH)) - bld.env.append_value('RPATH', '-Wl,-rpath=%s' % rpath) - else: - os.environ['LD_LIBRARY_PATH'] = os.path.normpath('%s/../shared' % bld.srcnode.abspath(bld.env)) -Build.BuildContext.set_rpath = set_rpath - def install_rpath(bld): '''the rpath value for installation''' + bld.env['RPATH'] = [] + bld.env['RPATH_ST'] = [] if bld.env.RPATH_ON_INSTALL: return ['-Wl,-rpath=%s/lib' % bld.env.PREFIX] return [] +def build_rpath(bld): + '''the rpath value for build''' + rpath = os.path.normpath('%s/%s' % (bld.env['BUILD_DIRECTORY'], LIB_PATH)) + bld.env['RPATH'] = [] + bld.env['RPATH_ST'] = [] + if bld.env.RPATH_ON_BUILD: + return ['-Wl,-rpath=%s' % rpath] + os.environ['LD_LIBRARY_PATH'] = rpath + return [] + + ############################################################# # return a named build cache dictionary, used to store # state inside the following functions diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py index 8a37edfb885..90006e46cfb 100644 --- a/buildtools/wafsamba/wafsamba.py +++ b/buildtools/wafsamba/wafsamba.py @@ -121,7 +121,8 @@ def SAMBA_LIBRARY(bld, libname, source, samba_includes = includes, local_include = local_include, vnum = vnum, - install_path = None + install_path = None, + ldflags = build_rpath(bld) ) if install_path is None: @@ -151,8 +152,8 @@ def SAMBA_LIBRARY(bld, libname, source, vnum = vnum, install_as = libname, install_path = None, + ldflags = install_rpath(bld) ) - t.env['RPATH'] = install_rpath(bld) if install: if vnum: @@ -235,7 +236,8 @@ def SAMBA_BINARY(bld, binname, source, samba_modules = modules, top = True, samba_subsystem= subsystem_name, - install_path = None + install_path = None, + ldflags = build_rpath(bld) ) if install_path is None: @@ -264,9 +266,9 @@ def SAMBA_BINARY(bld, binname, source, samba_modules = modules, top = True, samba_subsystem= subsystem_name, - install_path = None + install_path = None, + ldflags = install_rpath(bld) ) - t.env['RPATH'] = install_rpath(bld) if install: bld.install_as(os.path.join(install_path, binname), diff --git a/lib/replace/wscript b/lib/replace/wscript index 39e75c06c7a..d8d690f5e14 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -374,8 +374,6 @@ def configure(conf): def build(bld): - bld.set_rpath() - # libreplace needs to put the library in the right build groups # as libreplace is a base library for everything, even for our # compilers, we need libreplace to build very early -- 2.34.1