summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildtools/wafsamba/samba_bundled.py72
1 files changed, 64 insertions, 8 deletions
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index 39edad060d..aeaf8ca1c6 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -82,6 +82,64 @@ def LIB_MUST_BE_BUNDLED(conf, libname):
libname in conf.env.BUNDLED_LIBS)
+@conf
+def CHECK_PREREQUISITES(conf, prereqs):
+ for syslib in TO_LIST(prereqs):
+ f = 'FOUND_SYSTEMLIB_%s' % syslib
+ if not f in conf.env:
+ return False
+ return True
+
+
+@runonce
+@conf
+def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0',
+ onlyif=None, implied_deps=None, pkg=None):
+ '''check if a library is available as a system library.
+
+ This only tries using pkg-config
+ '''
+ if conf.LIB_MUST_BE_BUNDLED(libname):
+ return False
+ found = 'FOUND_SYSTEMLIB_%s' % libname
+ if found in conf.env:
+ return conf.env[found]
+
+ # see if the library should only use a system version if another dependent
+ # system version is found. That prevents possible use of mixed library
+ # versions
+ if onlyif:
+ if not conf.CHECK_PREREQUISITES(onlyif):
+ if not conf.LIB_MAY_BE_BUNDLED(libname):
+ Logs.error('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
+ sys.exit(1)
+ conf.env[found] = False
+ return False
+
+ minversion = minimum_library_version(conf, libname, minversion)
+
+ msg = 'Checking for system %s' % libname
+ if minversion != '0.0.0':
+ msg += ' >= %s' % minversion
+
+ if pkg is None:
+ pkg = libname
+
+ if conf.check_cfg(package=pkg,
+ args='"%s >= %s" --cflags --libs' % (libname, minversion),
+ msg=msg):
+ conf.SET_TARGET_TYPE(libname, 'SYSLIB')
+ conf.env[found] = True
+ if implied_deps:
+ conf.SET_SYSLIB_DEPS(libname, implied_deps)
+ return True
+ conf.env[found] = False
+ if not conf.LIB_MAY_BE_BUNDLED(libname):
+ Logs.error('ERROR: System library %s of version %s not found, and bundling disabled' % (libname, minversion))
+ sys.exit(1)
+ return False
+
+
@runonce
@conf
def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
@@ -111,14 +169,12 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
# system version is found. That prevents possible use of mixed library
# versions
if onlyif:
- for syslib in TO_LIST(onlyif):
- f = 'FOUND_SYSTEMLIB_%s' % syslib
- if not f in conf.env:
- if not conf.LIB_MAY_BE_BUNDLED(libname):
- Logs.error('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
- sys.exit(1)
- conf.env[found] = False
- return False
+ if not conf.CHECK_PREREQUISITES(onlyif):
+ if not conf.LIB_MAY_BE_BUNDLED(libname):
+ Logs.error('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
+ sys.exit(1)
+ conf.env[found] = False
+ return False
minversion = minimum_library_version(conf, libname, minversion)