72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
# -*- mode: python; encoding: utf-8 -*-
|
|
# Gustavo Carneiro (gjamc) 2008
|
|
|
|
import Options
|
|
import Configure
|
|
import pproc as subprocess
|
|
import config_c
|
|
|
|
def detect(conf):
|
|
pkg_config = conf.find_program('pkg-config', var='PKG_CONFIG')
|
|
if not pkg_config: return
|
|
|
|
@Configure.conf
|
|
def pkg_check_modules(conf, uselib_name, expression, mandatory=True):
|
|
pkg_config = conf.env['PKG_CONFIG']
|
|
if not pkg_config:
|
|
if mandatory:
|
|
conf.fatal("pkg-config is not available")
|
|
else:
|
|
return False
|
|
|
|
argv = [pkg_config, '--cflags', '--libs', expression]
|
|
cmd = subprocess.Popen(argv, stdout=subprocess.PIPE)
|
|
out, dummy = cmd.communicate()
|
|
retval = cmd.wait()
|
|
|
|
msg_checking = ("pkg-config flags for %s" % (uselib_name,))
|
|
if Options.options.verbose:
|
|
if retval == 0:
|
|
conf.check_message_custom(msg_checking,
|
|
('(%s)' % expression), out)
|
|
else:
|
|
conf.check_message(msg_checking, ('(%s)' % expression), False)
|
|
else:
|
|
conf.check_message(msg_checking, '', (retval == 0), '')
|
|
conf.log.write('%r: %r (exit code %i)\n' % (argv, out, retval))
|
|
|
|
if retval == 0:
|
|
|
|
config_c.parse_flags(out, uselib_name, conf.env)
|
|
conf.env[uselib_name] = True
|
|
return True
|
|
|
|
else:
|
|
|
|
conf.env[uselib_name] = False
|
|
if mandatory:
|
|
raise Configure.ConfigurationError('pkg-config check failed')
|
|
else:
|
|
return False
|
|
|
|
@Configure.conf
|
|
def pkg_check_module_variable(conf, module, variable):
|
|
pkg_config = conf.env['PKG_CONFIG']
|
|
if not pkg_config:
|
|
conf.fatal("pkg-config is not available")
|
|
|
|
argv = [pkg_config, '--variable', variable, module]
|
|
cmd = subprocess.Popen(argv, stdout=subprocess.PIPE)
|
|
out, dummy = cmd.communicate()
|
|
retval = cmd.wait()
|
|
out = out.rstrip() # strip the trailing newline
|
|
|
|
msg_checking = ("pkg-config variable %r in %s" % (variable, module,))
|
|
conf.check_message_custom(msg_checking, '', out)
|
|
conf.log.write('%r: %r (exit code %i)\n' % (argv, out, retval))
|
|
|
|
if retval == 0:
|
|
return out
|
|
else:
|
|
raise Configure.ConfigurationError('pkg-config check failed')
|