summaryrefslogtreecommitdiff
path: root/buildtools/wafsamba
diff options
context:
space:
mode:
Diffstat (limited to 'buildtools/wafsamba')
-rw-r--r--buildtools/wafsamba/samba_bundled.py8
-rw-r--r--buildtools/wafsamba/samba_deps.py13
-rw-r--r--buildtools/wafsamba/wscript4
3 files changed, 25 insertions, 0 deletions
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index f668d56cb6..f105a2d5ff 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -127,3 +127,11 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
sys.exit(1)
return False
+def NONSHARED_BINARY(bld, name):
+ '''return True if a binary should be built without non-system shared libs'''
+ if bld.env.DISABLE_SHARED:
+ return True
+ return target_in_list(name, bld.env.NONSHARED_BINARIES, False)
+Build.BuildContext.NONSHARED_BINARY = NONSHARED_BINARY
+
+
diff --git a/buildtools/wafsamba/samba_deps.py b/buildtools/wafsamba/samba_deps.py
index 7beec29c1e..8911db3d7c 100644
--- a/buildtools/wafsamba/samba_deps.py
+++ b/buildtools/wafsamba/samba_deps.py
@@ -642,6 +642,19 @@ def calculate_final_deps(bld, tgt_list, loops):
if t.sname in t.final_objects:
t.final_objects.remove(t.sname)
+ # handle any non-shared binaries
+ for t in tgt_list:
+ if t.samba_type == 'BINARY' and bld.NONSHARED_BINARY(t.sname):
+ # replace lib deps with objlist deps
+ for l in t.final_libs:
+ objname = l + '.objlist'
+ t2 = bld.name_to_obj(objname, bld.env)
+ if t2 is None:
+ Logs.error('ERROR: subsystem %s not found' % objname)
+ sys.exit(1)
+ t.final_objects.add(objname)
+ t.final_objects = t.final_objects.union(extended_objects(bld, t2, set()))
+ t.final_libs = set()
# find any library loops
for t in tgt_list:
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
index 72e0e90fbf..76e9b1f357 100644
--- a/buildtools/wafsamba/wscript
+++ b/buildtools/wafsamba/wscript
@@ -46,6 +46,9 @@ def set_options(opt):
gr.add_option('--disable-rpath-install',
help=("Disable use of rpath for installed binaries"),
action="store_true", dest='disable_rpath_install', default=False)
+ gr.add_option('--nonshared-binary',
+ help=("Disable use of shared libs for the listed binaries"),
+ action="store", dest='NONSHARED_BINARIES', default='')
opt.add_option('--with-modulesdir',
help=("modules directory [PREFIX/modules]"),
@@ -149,6 +152,7 @@ def configure(conf):
conf.env.BUNDLED_LIBS = Options.options.BUNDLED_LIBS.split(',')
conf.env.BUILTIN_LIBRARIES = Options.options.BUILTIN_LIBRARIES.split(',')
conf.env.DISABLE_SHARED = Options.options.disable_shared
+ conf.env.NONSHARED_BINARIES = Options.options.NONSHARED_BINARIES.split(',')
conf.env.BUNDLED_EXTENSION = Options.options.BUNDLED_EXTENSION
conf.env.BUNDLED_EXTENSION_EXCEPTION = Options.options.BUNDLED_EXTENSION_EXCEPTION.split(',')