From d0c93ba115a942403982011d01c443aa18513fe7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 8 Dec 2010 11:26:32 +1100 Subject: waf: added configure test for -Wl,--version-script this checks that the linker supports --version-script Pair-Programmed-With: Andrew Bartlett --- buildtools/wafsamba/samba_conftests.py | 10 +++++++++- buildtools/wafsamba/samba_install.py | 3 +++ buildtools/wafsamba/wscript | 9 +++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) (limited to 'buildtools/wafsamba') diff --git a/buildtools/wafsamba/samba_conftests.py b/buildtools/wafsamba/samba_conftests.py index 4811614ab7..2246ac3fa5 100644 --- a/buildtools/wafsamba/samba_conftests.py +++ b/buildtools/wafsamba/samba_conftests.py @@ -133,7 +133,7 @@ int foo(int v) { # 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_LIBRARY_SUPPORT(conf, rpath=False, msg=None): +def CHECK_LIBRARY_SUPPORT(conf, rpath=False, version_script=False, msg=None): '''see if the platform supports building libraries''' if msg is None: @@ -171,9 +171,17 @@ def CHECK_LIBRARY_SUPPORT(conf, rpath=False, msg=None): bld.rescan(bld.srcnode) + ldflags = [] + if version_script: + ldflags.append("-Wl,--version-script=%s/vscript" % bld.path.abspath()) + dest = open(os.path.join(dir,'vscript'), 'w') + dest.write('TEST_1.0A2 { global: *; };\n') + dest.close() + bld(features='cc cshlib', source='libdir/lib1.c', target='libdir/lib1', + ldflags=ldflags, name='lib1') o = bld(features='cc cprogram', diff --git a/buildtools/wafsamba/samba_install.py b/buildtools/wafsamba/samba_install.py index fcbf4ea40f..327227f7f5 100644 --- a/buildtools/wafsamba/samba_install.py +++ b/buildtools/wafsamba/samba_install.py @@ -128,6 +128,9 @@ def install_library(self): t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_link) t.env.SONAME_ST = '' + if install_name == install_link: + install_link = None + # tell waf to install the library bld.install_as(os.path.join(install_path, install_name), os.path.join(self.path.abspath(bld.env), inst_name)) diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index 0d91237d48..f3551253c6 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -269,6 +269,7 @@ def configure(conf): # check for rpath if not conf.env.DISABLE_SHARED and conf.CHECK_LIBRARY_SUPPORT(rpath=True): + 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) @@ -277,6 +278,7 @@ def configure(conf): conf.env.RPATH_ON_INSTALL_PRIVATE = ( not Options.options.disable_rpath_private_install) else: + support_rpath = False conf.env.RPATH_ON_INSTALL = False conf.env.RPATH_ON_BUILD = False conf.env.RPATH_ON_INSTALL_PRIVATE = False @@ -286,6 +288,13 @@ def configure(conf): # the user can of course always override it. conf.env.PRIVATELIBDIR = conf.env.LIBDIR + if not conf.env.DISABLE_SHARED and conf.CHECK_LIBRARY_SUPPORT(rpath=support_rpath, + version_script=True, + msg='-Wl,--version-script support'): + conf.env.HAVE_LD_VERSION_SCRIPT = True + else: + conf.env.HAVE_LD_VERSION_SCRIPT = False + # we should use the PIC options in waf instead # Some compilo didn't support -fPIC but just print a warning if conf.env['COMPILER_CC'] == "suncc": -- cgit