diff options
Diffstat (limited to 'buildtools')
-rw-r--r-- | buildtools/wafsamba/samba_bundled.py | 7 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_deps.py | 14 |
2 files changed, 19 insertions, 2 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): |