summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildtools/wafsamba/samba_autoconf.py17
-rw-r--r--buildtools/wafsamba/samba_bundled.py15
-rw-r--r--buildtools/wafsamba/wscript6
-rw-r--r--lib/talloc/wscript15
-rw-r--r--lib/tdb/wscript15
-rw-r--r--lib/tevent/wscript13
-rw-r--r--source4/lib/ldb/wscript18
7 files changed, 71 insertions, 28 deletions
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
index b2f1d82040..ff2fa012c4 100644
--- a/buildtools/wafsamba/samba_autoconf.py
+++ b/buildtools/wafsamba/samba_autoconf.py
@@ -399,8 +399,9 @@ def CHECK_LIB(conf, libs, mandatory=False):
(ccflags, ldflags) = library_flags(conf, lib)
if not conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags):
- conf.ASSERT(not mandatory,
- "Mandatory library '%s' not found for functions '%s'" % (lib, list))
+ if mandatory:
+ print("Mandatory library '%s' not found for functions '%s'" % (lib, list))
+ sys.exit(1)
# if it isn't a mandatory library, then remove it from dependency lists
SET_TARGET_TYPE(conf, lib, 'EMPTY')
ret = False
@@ -449,8 +450,9 @@ def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False, header
conf.CHECK_LIB(liblist)
for lib in liblist[:]:
if not GET_TARGET_TYPE(conf, lib) == 'SYSLIB':
- conf.ASSERT(not mandatory,
- "Mandatory library '%s' not found for functions '%s'" % (lib, list))
+ if mandatory:
+ print("Mandatory library '%s' not found for functions '%s'" % (lib, list))
+ sys.exit(1)
# if it isn't a mandatory library, then remove it from dependency lists
liblist.remove(lib)
continue
@@ -462,6 +464,11 @@ def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False, header
return ret
+@conf
+def IN_LAUNCH_DIR(conf):
+ '''return True if this rule is being run from the launch directory'''
+ return os.path.realpath(conf.curdir) == os.path.realpath(Options.launch_dir)
+
#################################################
# write out config.h in the right directory
@@ -469,7 +476,7 @@ def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False, header
def SAMBA_CONFIG_H(conf, path=None):
# we don't want to produce a config.h in places like lib/replace
# when we are building projects that depend on lib/replace
- if os.path.realpath(conf.curdir) != os.path.realpath(Options.launch_dir):
+ if not IN_LAUNCH_DIR(conf):
return
if Options.options.developer:
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index d4dbe221db..2a6d75f7c9 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -40,3 +40,18 @@ def BUNDLED_EXTENSION_DEFAULT(opt, extension, noextenion=''):
Options.options['BUNDLED_EXTENSION_DEFAULT'] = extension
Options.options['BUNDLED_EXTENSION_EXCEPTION'] = noextenion
Options.Handler.BUNDLED_EXTENSION_DEFAULT = BUNDLED_EXTENSION_DEFAULT
+
+
+@conf
+def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0'):
+ if 'ALL' in conf.env.BUNDLED_LIBS or libname in conf.env.BUNDLED_LIBS:
+ return False
+ if conf.check_cfg(package=libname,
+ args='"%s >= %s" --cflags --libs' % (libname, minversion),
+ msg='Checking for system %s >= %s' % (libname, minversion)):
+ conf.SET_TARGET_TYPE(libname, 'SYSLIB')
+ return True
+ if 'NONE' in conf.env.BUNDLED_LIBS or '!'+libname in conf.env.BUNDLED_LIBS:
+ print('ERROR: System library %s of version %s not found, and bundling disabled' % (libname, minversion))
+ sys.exit(1)
+ return False
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
index 315c3e58a9..1ff0fd3cb3 100644
--- a/buildtools/wafsamba/wscript
+++ b/buildtools/wafsamba/wscript
@@ -12,7 +12,7 @@ def set_options(opt):
opt.tool_options('gnu_dirs')
opt.add_option('--bundled-libraries',
- help=("list of bundled libraries. Can be 'NONE' or 'ALL' [auto]"),
+ help=("comma separated list of bundled libraries. May include !LIBNAME to disable bundling a library. Can be 'NONE' or 'ALL' [auto]"),
action="store", dest='BUNDLED_LIBS', default='')
extension_default = Options.options['BUNDLED_EXTENSION_DEFAULT']
@@ -22,12 +22,12 @@ def set_options(opt):
extension_exception = Options.options['BUNDLED_EXTENSION_EXCEPTION']
opt.add_option('--bundled-extension-exception',
- help=("list of libraries to not apply extension to [%s]" % extension_exception),
+ help=("comman separated list of libraries to not apply extension to [%s]" % extension_exception),
action="store", dest='BUNDLED_EXTENSION_EXCEPTION', default=extension_exception)
builtin_defauilt = Options.options['BUILTIN_LIBRARIES_DEFAULT']
opt.add_option('--builtin-libraries',
- help=("list of libraries to build directly into binaries [%s]" % builtin_defauilt),
+ help=("command separated list of libraries to build directly into binaries [%s]" % builtin_defauilt),
action="store", dest='BUILTIN_LIBRARIES', default=builtin_defauilt)
opt.add_option('--libdir',
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 6d16e15d53..be21bde18c 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -18,15 +18,22 @@ def set_options(opt):
def configure(conf):
conf.sub_config(LIBREPLACE_DIR)
+
+ if conf.CHECK_BUNDLED_SYSTEM('talloc', minversion=VERSION):
+ conf.define('USING_SYSTEM_TALLOC', 1)
+
conf.SAMBA_CONFIG_H()
+
+
def build(bld):
bld.BUILD_SUBDIR(LIBREPLACE_DIR)
- bld.SAMBA_LIBRARY('talloc',
- 'talloc.c',
- deps='replace',
- vnum=VERSION)
+ if not bld.CONFIG_SET('USING_SYSTEM_TALLOC'):
+ bld.SAMBA_LIBRARY('talloc',
+ 'talloc.c',
+ deps='replace',
+ vnum=VERSION)
bld.SAMBA_BINARY('talloc_testsuite',
'testsuite.c testsuite_main.c',
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index e146ba79b0..365c384201 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -19,6 +19,10 @@ def set_options(opt):
def configure(conf):
conf.sub_config(LIBREPLACE_DIR)
+
+ if conf.CHECK_BUNDLED_SYSTEM('tdb', minversion=VERSION):
+ conf.define('USING_SYSTEM_TDB', 1)
+
conf.SAMBA_CONFIG_H()
def build(bld):
@@ -29,11 +33,12 @@ def build(bld):
freelistcheck.c lock.c dump.c freelist.c
io.c open.c transaction.c''')
- bld.SAMBA_LIBRARY('tdb',
- COMMON_SRC,
- deps='replace rt',
- includes='include',
- vnum=VERSION)
+ if not bld.CONFIG_SET('USING_SYSTEM_TDB'):
+ bld.SAMBA_LIBRARY('tdb',
+ COMMON_SRC,
+ deps='replace rt',
+ includes='include',
+ vnum=VERSION)
bld.SAMBA_BINARY('tdbtorture',
'tools/tdbtorture.c',
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index f017581fae..e6ef67a8d6 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -22,6 +22,9 @@ def configure(conf):
conf.sub_config(LIBREPLACE_DIR)
conf.sub_config(LIBTALLOC_DIR)
+ if conf.CHECK_BUNDLED_SYSTEM('tevent', minversion=VERSION):
+ conf.define('USING_SYSTEM_TEVENT', 1)
+
if conf.CHECK_FUNCS('epoll_create', headers='sys/epoll.h'):
conf.DEFINE('HAVE_EPOLL', 1)
@@ -38,7 +41,9 @@ def build(bld):
if bld.CONFIG_SET('HAVE_EPOLL'):
SRC += ' tevent_epoll.c'
- bld.SAMBA_LIBRARY('tevent',
- SRC,
- deps='replace talloc',
- vnum=VERSION)
+ if not bld.CONFIG_SET('USING_SYSTEM_TEVENT'):
+ bld.SAMBA_LIBRARY('tevent',
+ SRC,
+ deps='replace talloc',
+ enabled= not bld.CONFIG_SET('USING_SYSTEM_TEVENT'),
+ vnum=VERSION)
diff --git a/source4/lib/ldb/wscript b/source4/lib/ldb/wscript
index ad875374db..97e345b834 100644
--- a/source4/lib/ldb/wscript
+++ b/source4/lib/ldb/wscript
@@ -27,7 +27,10 @@ def configure(conf):
s4_build = getattr(conf.env, '_SAMBA_BUILD_', 0) == 4
+
if not s4_build:
+ if conf.CHECK_BUNDLED_SYSTEM('ldb', minversion=VERSION):
+ conf.define('USING_SYSTEM_LDB', 1)
# we need this for the ldap backend
conf.CHECK_FUNCS_IN('ber_flush ldap_open', 'lber ldap', headers='lber.h ldap.h', mandatory=True)
@@ -130,13 +133,14 @@ def build(bld):
if s4_build:
ldb_deps += ' LDBSAMBA POPT_CREDENTIALS POPT_SAMBA LIBCMDLINE_CREDENTIALS gensec'
- bld.SAMBA_LIBRARY('ldb',
- COMMON_SRC + ' ' + LDB_MAP_SRC,
- deps=ldb_deps,
- includes='include',
- public_headers='include/ldb.h include/ldb_errors.h',
- pc_files='ldb.pc',
- vnum=VERSION)
+ if not bld.CONFIG_SET('USING_SYSTEM_LDB'):
+ bld.SAMBA_LIBRARY('ldb',
+ COMMON_SRC + ' ' + LDB_MAP_SRC,
+ deps=ldb_deps,
+ includes='include',
+ public_headers='include/ldb.h include/ldb_errors.h',
+ pc_files='ldb.pc',
+ vnum=VERSION)
bld.SAMBA_SUBSYSTEM('LIBLDB_CMDLINE',
'tools/ldbutil.c tools/cmdline.c',