diff options
-rw-r--r-- | buildtools/wafsamba/samba_bundled.py | 7 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_deps.py | 14 | ||||
-rw-r--r-- | lib/talloc/wscript | 3 | ||||
-rw-r--r-- | lib/tdb/wscript | 3 | ||||
-rw-r--r-- | lib/tevent/wscript | 3 | ||||
-rw-r--r-- | source4/lib/ldb/wscript | 3 |
6 files changed, 27 insertions, 6 deletions
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py index b2d1b0ef14..28116fcd69 100644 --- a/buildtools/wafsamba/samba_bundled.py +++ b/buildtools/wafsamba/samba_bundled.py @@ -46,7 +46,8 @@ Options.Handler.BUNDLED_EXTENSION_DEFAULT = BUNDLED_EXTENSION_DEFAULT @runonce @conf def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', - checkfunctions=None, headers=None, onlyif=None): + checkfunctions=None, headers=None, + onlyif=None, implied_deps=None): '''check if a library is available as a system library. this first tries via pkg-config, then if that fails tries by testing for a specified function in the specified lib @@ -76,10 +77,14 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', msg='Checking for system %s >= %s' % (libname, minversion)): conf.SET_TARGET_TYPE(libname, 'SYSLIB') conf.env[found] = True + if implied_deps: + conf.SET_SYSLIB_DEPS(libname, implied_deps) return True if checkfunctions is not None: if conf.CHECK_FUNCS_IN(checkfunctions, libname, headers=headers, empty_decl=False): conf.env[found] = True + if implied_deps: + conf.SET_SYSLIB_DEPS(libname, implied_deps) return True conf.env[found] = False if 'NONE' in conf.env.BUNDLED_LIBS or '!'+libname in conf.env.BUNDLED_LIBS: diff --git a/buildtools/wafsamba/samba_deps.py b/buildtools/wafsamba/samba_deps.py index 02d4c421d5..bc9325f214 100644 --- a/buildtools/wafsamba/samba_deps.py +++ b/buildtools/wafsamba/samba_deps.py @@ -22,6 +22,13 @@ def TARGET_ALIAS(bld, target, alias): Build.BuildContext.TARGET_ALIAS = TARGET_ALIAS +@conf +def SET_SYSLIB_DEPS(conf, target, deps): + '''setup some implied dependencies for a SYSLIB''' + cache = LOCAL_CACHE(conf, 'SYSLIB_DEPS') + cache[target] = deps + + def EXPAND_ALIAS(bld, target): '''expand a target name via an alias''' aliases = LOCAL_CACHE(bld, 'TARGET_ALIAS') @@ -308,6 +315,7 @@ def build_direct_deps(bld, tgt_list): '''build the direct_objects and direct_libs sets for each target''' targets = LOCAL_CACHE(bld, 'TARGET_TYPE') + syslib_deps = LOCAL_CACHE(bld, 'SYSLIB_DEPS') global_deps = bld.env.GLOBAL_DEPENDENCIES for t in tgt_list: @@ -326,6 +334,10 @@ def build_direct_deps(bld, tgt_list): continue if targets[d] == 'SYSLIB': t.direct_syslibs.add(d) + if d in syslib_deps: + for implied in TO_LIST(syslib_deps[d]): + print("Adding implied lib %s to %s" % (implied, t.sname)) + t.direct_libs.add(implied) continue t2 = bld.name_to_obj(d, bld.env) if t2 is None: @@ -622,7 +634,7 @@ savedeps_version = 3 savedeps_inputs = ['samba_deps', 'samba_includes', 'local_include', 'local_include_first', 'samba_cflags', 'source'] savedeps_outputs = ['uselib', 'uselib_local', 'add_objects', 'includes', 'ccflags'] savedeps_outenv = ['INC_PATHS'] -savedeps_caches = ['GLOBAL_DEPENDENCIES', 'TARGET_ALIAS', 'TARGET_TYPE', 'INIT_FUNCTIONS'] +savedeps_caches = ['GLOBAL_DEPENDENCIES', 'TARGET_ALIAS', 'TARGET_TYPE', 'INIT_FUNCTIONS', 'SYSLIB_DEPS'] savedeps_files = ['buildtools/wafsamba/samba_deps.py'] def save_samba_deps(bld, tgt_list): diff --git a/lib/talloc/wscript b/lib/talloc/wscript index e8aa1774e4..3526d5a730 100644 --- a/lib/talloc/wscript +++ b/lib/talloc/wscript @@ -19,7 +19,8 @@ def set_options(opt): def configure(conf): conf.sub_config(LIBREPLACE_DIR) - if conf.CHECK_BUNDLED_SYSTEM('talloc', minversion=VERSION): + if conf.CHECK_BUNDLED_SYSTEM('talloc', minversion=VERSION, + implied_deps='replace'): conf.define('USING_SYSTEM_TALLOC', 1) conf.SAMBA_CONFIG_H() diff --git a/lib/tdb/wscript b/lib/tdb/wscript index 365c384201..d16516b8b5 100644 --- a/lib/tdb/wscript +++ b/lib/tdb/wscript @@ -20,7 +20,8 @@ def set_options(opt): def configure(conf): conf.sub_config(LIBREPLACE_DIR) - if conf.CHECK_BUNDLED_SYSTEM('tdb', minversion=VERSION): + if conf.CHECK_BUNDLED_SYSTEM('tdb', minversion=VERSION, + implied_deps='replace'): conf.define('USING_SYSTEM_TDB', 1) conf.SAMBA_CONFIG_H() diff --git a/lib/tevent/wscript b/lib/tevent/wscript index a84dad663c..30db216de1 100644 --- a/lib/tevent/wscript +++ b/lib/tevent/wscript @@ -22,7 +22,8 @@ def configure(conf): conf.sub_config(LIBREPLACE_DIR) conf.sub_config(LIBTALLOC_DIR) - if conf.CHECK_BUNDLED_SYSTEM('tevent', minversion=VERSION, onlyif='talloc'): + if conf.CHECK_BUNDLED_SYSTEM('tevent', minversion=VERSION, + onlyif='talloc', implied_deps='replace talloc'): conf.define('USING_SYSTEM_TEVENT', 1) if conf.CHECK_FUNCS('epoll_create', headers='sys/epoll.h'): diff --git a/source4/lib/ldb/wscript b/source4/lib/ldb/wscript index a7419e1981..18a9f4c271 100644 --- a/source4/lib/ldb/wscript +++ b/source4/lib/ldb/wscript @@ -32,7 +32,8 @@ def configure(conf): if not s4_build: if conf.CHECK_BUNDLED_SYSTEM('ldb', minversion=VERSION, - onlyif='talloc tdb tevent'): + onlyif='talloc tdb tevent', + implied_deps='replace talloc tdb tevent'): 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) |