summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-03-20 23:41:15 +1100
committerAndrew Tridgell <tridge@samba.org>2010-04-06 20:26:58 +1000
commitdc9010572c1d32a4e1c82afbee2a359c429cc9aa (patch)
treebef5d94aba307ca55c9768f8d6af2f35d7f2bb35
parent9a2ea72d2d1affa853a70131301de96f258178a8 (diff)
downloadsamba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.tar.gz
samba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.tar.bz2
samba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.zip
build: support systems without rpath
-rw-r--r--buildtools/wafsamba/samba_autoconf.py9
-rw-r--r--buildtools/wafsamba/samba_utils.py9
-rw-r--r--lib/replace/wscript18
-rw-r--r--source4/selftest/wscript3
4 files changed, 32 insertions, 7 deletions
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
index 4ea29d4058..e91409e0a4 100644
--- a/buildtools/wafsamba/samba_autoconf.py
+++ b/buildtools/wafsamba/samba_autoconf.py
@@ -409,3 +409,12 @@ def CURRENT_CFLAGS(bld, target, cflags):
ret = TO_LIST(cflags)
ret.extend(list)
return ret
+
+@conf
+def CHECK_RPATH_SUPPORT(conf):
+ '''see if the system supports rpath'''
+ return conf.CHECK_CODE('int x',
+ define='HAVE_RPATH_SUPPORT',
+ execute=True,
+ msg='Checking for rpath support',
+ cflags='-Wl,-rpath=.')
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index 9893a86c30..564b5b82e3 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -62,13 +62,16 @@ def runonce(function):
def set_rpath(bld):
'''setup the default rpath'''
- rpath = os.path.normpath('%s/%s' % (bld.env['BUILD_DIRECTORY'], LIB_PATH))
- bld.env.append_value('RPATH', '-Wl,-rpath=%s' % 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'''
- if bld.env['RPATH_ON_INSTALL']:
+ if bld.env.RPATH_ON_INSTALL:
return ['-Wl,-rpath=%s/lib' % bld.env.PREFIX]
return []
diff --git a/lib/replace/wscript b/lib/replace/wscript
index fa0e40d21a..d54e18b26b 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -20,9 +20,12 @@ def set_options(opt):
opt.add_option('--sbindir',
help=("system admin executables [PREFIX/sbin]"),
action="store", dest='SBINDIR', default='${PREFIX}/sbin')
- opt.add_option('--enable-rpath',
- help=("Enable use of rpath for installed binaries"),
- action="store_true", dest='enable_rpath', default=False)
+ opt.add_option('--disable-rpath',
+ help=("Disable use of rpath for build binaries"),
+ action="store_true", dest='disable_rpath_build', default=False)
+ opt.add_option('--disable-rpath-install',
+ help=("Disable use of rpath for installed binaries"),
+ action="store_true", dest='disable_rpath_install', default=False)
opt.add_option('--enable-developer',
help=("Turn on developer warnings and debugging"),
action="store_true", dest='developer', default=False)
@@ -71,7 +74,14 @@ def configure(conf):
conf.env.BINDIR = Options.options.BINDIR
conf.env.SBINDIR = Options.options.SBINDIR
- conf.env.RPATH_ON_INSTALL = Options.options.enable_rpath
+ # check for rpath
+ if conf.CHECK_RPATH_SUPPORT():
+ conf.env.RPATH_ON_BUILD = not Options.options.disable_rpath_build
+ conf.env.RPATH_ON_INSTALL = (conf.env.RPATH_ON_BUILD and
+ not Options.options.disable_rpath_install)
+ else:
+ conf.env.RPATH_ON_INSTALL = False
+ conf.env.RPATH_ON_BUILD = False
# we should use the PIC options in waf instead
conf.ADD_CFLAGS('-fPIC')
diff --git a/source4/selftest/wscript b/source4/selftest/wscript
index 4fea799ecf..858d92a9aa 100644
--- a/source4/selftest/wscript
+++ b/source4/selftest/wscript
@@ -67,6 +67,9 @@ def cmd_testonly(opt):
if Options.options.VALGRIND_SERVER:
os.environ['SAMBA_VALGRIND'] = 'xterm -n server -e ../selftest/valgrind_run A=B '
+ # this is needed for systems without rpath, or with rpath disabled
+ os.environ['LD_LIBRARY_PATH'] = 'bin/shared'
+
st_done = 'st/st_done'
if os.path.exists(st_done):
os.unlink(st_done)