diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-03-20 23:41:15 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-04-06 20:26:58 +1000 |
commit | dc9010572c1d32a4e1c82afbee2a359c429cc9aa (patch) | |
tree | bef5d94aba307ca55c9768f8d6af2f35d7f2bb35 | |
parent | 9a2ea72d2d1affa853a70131301de96f258178a8 (diff) | |
download | samba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.tar.gz samba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.tar.bz2 samba-dc9010572c1d32a4e1c82afbee2a359c429cc9aa.zip |
build: support systems without rpath
-rw-r--r-- | buildtools/wafsamba/samba_autoconf.py | 9 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_utils.py | 9 | ||||
-rw-r--r-- | lib/replace/wscript | 18 | ||||
-rw-r--r-- | source4/selftest/wscript | 3 |
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) |