# check go a library config check and at that point the test
# will fail if libprotobuf cannot be found.
if have_pkg_config:
- try:
- # Attempt to establish what linking flags to add for
- # protobuf
- # using pkg-config
- main.ParseConfig(
- 'pkg-config --cflags --libs-only-L protobuf')
- except:
- warning('pkg-config could not get protobuf flags.')
+ conf.CheckPkgConfig('protobuf', '--cflags', '--libs-only-L')
except Exception as e:
warning('While checking protoc version:', str(e))
main['HAVE_PROTOC'] = False
main['HAVE_PERF_ATTR_EXCLUDE_HOST'] = conf.CheckMember(
'linux/perf_event.h', 'struct perf_event_attr', 'exclude_host')
-def check_hdf5_pkg(name):
- print("Checking for %s using pkg-config..." % name, end="")
- try:
- main.ParseConfig('pkg-config --cflags-only-I --libs-only-L %s' % name)
- except:
- print(" no")
- return False
- print(" yes")
- return True
-
# Check if there is a pkg-config configuration for hdf5. If we find
# it, setup the environment to enable linking and header inclusion. We
# don't actually try to include any headers or link with hdf5 at this
# stage.
if have_pkg_config:
- if not check_hdf5_pkg('hdf5-serial'):
- check_hdf5_pkg('hdf5')
+ conf.CheckPkgConfig(['hdf5-serial', 'hdf5'],
+ '--cflags-only-I', '--libs-only-L')
# Check if the HDF5 libraries can be found. This check respects the
# include path and library path provided by pkg-config. We perform
import os
import SCons.Script
+import SCons.Util
def CheckCxxFlag(context, flag, autoadd=True):
context.Message("Checking for compiler %s support... " % flag)
else:
return tuple(map(int, ret[1].split(".")))
+def CheckPkgConfig(context, pkgs, *args):
+ if not SCons.Util.is_List(pkgs):
+ pkgs = [pkgs]
+ assert(pkgs)
+
+ for pkg in pkgs:
+ context.Message('Checking for pkg-config package %s... ' % pkg)
+ ret = context.TryAction('pkg-config %s' % pkg)[0]
+ if not ret:
+ context.Result(ret)
+ continue
+
+ if len(args) == 0:
+ break
+
+ cmd = ' '.join(['pkg-config'] + list(args) + [pkg])
+ try:
+ context.env.ParseConfig(cmd)
+ ret = 1
+ context.Result(ret)
+ break
+ except Exception as e:
+ ret = 0
+ context.Result(ret)
+
+ return ret
+
def Configure(env, *args, **kwargs):
kwargs.setdefault('conf_dir',
os.path.join(env['BUILDROOT'], '.scons_config'))
os.path.join(env['BUILDROOT'], 'scons_config.log'))
kwargs.setdefault('custom_tests', {})
kwargs['custom_tests'].update({
- 'CheckMember' : CheckMember,
- 'CheckPythonLib' : CheckPythonLib,
'CheckCxxFlag' : CheckCxxFlag,
'CheckLinkFlag' : CheckLinkFlag,
+ 'CheckMember' : CheckMember,
+ 'CheckPkgConfig' : CheckPkgConfig,
+ 'CheckPythonLib' : CheckPythonLib,
})
conf = SCons.Script.Configure(env, *args, **kwargs)