1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

build: support systems without rpath

This commit is contained in:
Andrew Tridgell 2010-03-20 23:41:15 +11:00
parent 9a2ea72d2d
commit dc9010572c
4 changed files with 32 additions and 7 deletions

View File

@ -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=.')

View File

@ -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 []

View File

@ -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')

View File

@ -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)