diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-03-28 17:24:05 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-04-06 20:27:13 +1000 |
commit | ab1b0965380e927faa39ce4bf7f7de14e2d29afc (patch) | |
tree | aa3143f5349dd1fe0140193eb26689f155535c90 | |
parent | 28a734829485f74ecff7fa922059c716893bbdc8 (diff) | |
download | samba-ab1b0965380e927faa39ce4bf7f7de14e2d29afc.tar.gz samba-ab1b0965380e927faa39ce4bf7f7de14e2d29afc.tar.bz2 samba-ab1b0965380e927faa39ce4bf7f7de14e2d29afc.zip |
build: auto-detect platforms which don't support shared libs
-rw-r--r-- | buildtools/wafsamba/samba_conftests.py | 33 | ||||
-rw-r--r-- | buildtools/wafsamba/wscript | 6 |
2 files changed, 32 insertions, 7 deletions
diff --git a/buildtools/wafsamba/samba_conftests.py b/buildtools/wafsamba/samba_conftests.py index 8a9e3f5cd2..47bef40a3d 100644 --- a/buildtools/wafsamba/samba_conftests.py +++ b/buildtools/wafsamba/samba_conftests.py @@ -1,7 +1,9 @@ # a set of config tests that use the samba_autoconf functions # to test for commonly needed configuration options + import os, Build, shutil, Utils from Configure import conf +from samba_utils import * @conf def CHECK_ICONV(conf, define='HAVE_NATIVE_ICONV'): @@ -67,8 +69,15 @@ def CHECK_CHARSET_EXISTS(conf, charset, outcharset='UCS-2LE', headers=None, defi # into several parts. I'd quite like to create a set of CHECK_COMPOUND() # functions that make writing complex compound tests like this much easier @conf -def CHECK_RPATH_SUPPORT(conf): - '''see if the platform supports rpath for libraries''' +def CHECK_LIBRARY_SUPPORT(conf, rpath=False, msg=None): + '''see if the platform supports building libraries''' + + if msg is None: + if rpath: + msg = "rpath library support" + else: + msg = "building library support" + k = 0 while k < 10000: dir = os.path.join(conf.blddir, '.conf_check_%d' % k) @@ -127,19 +136,28 @@ def CHECK_RPATH_SUPPORT(conf): o = bld(features='cc cprogram', source='main.c', target='prog1', - uselib_local='lib1', - rpath=os.path.join(bdir, 'default/libdir')) + uselib_local='lib1') + + if rpath: + o.rpath=os.path.join(bdir, 'default/libdir') # compile the program try: bld.compile() except: - conf.check_message('rpath support', '', False) + conf.check_message(msg, '', False) return False # path for execution lastprog = o.link_task.outputs[0].abspath(env) + if not rpath: + if 'LD_LIBRARY_PATH' in os.environ: + old_ld_library_path = os.environ['LD_LIBRARY_PATH'] + else: + old_ld_library_path = None + ADD_LD_LIBRARY_PATH(os.path.join(bdir, 'default/libdir')) + # we need to run the program, try to get its result args = [] proc = Utils.pproc.Popen([lastprog] + args, stdout=Utils.pproc.PIPE, stderr=Utils.pproc.PIPE) @@ -151,5 +169,8 @@ def CHECK_RPATH_SUPPORT(conf): w('\nreturncode %r\n' % proc.returncode) ret = (proc.returncode == 0) - conf.check_message('rpath support', '', ret) + if not rpath: + os.environ['LD_LIBRARY_PATH'] = old_ld_library_path or '' + + conf.check_message(msg, '', ret) return ret diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index 5a24eeb283..b2a11064fe 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -109,8 +109,12 @@ def configure(conf): headers='stdio.h', msg='Checking simple C program') + # see if we can build shared libs + if not conf.CHECK_LIBRARY_SUPPORT(): + conf.env.DISABLE_SHARED = True + # check for rpath - if not conf.env.DISABLE_SHARED and conf.CHECK_RPATH_SUPPORT(): + if not conf.env.DISABLE_SHARED and conf.CHECK_LIBRARY_SUPPORT(rpath=True): 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) |