summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildtools/wafsamba/samba_conftests.py10
-rw-r--r--buildtools/wafsamba/samba_install.py3
-rw-r--r--buildtools/wafsamba/wscript9
3 files changed, 21 insertions, 1 deletions
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":