waf-tools/pkgconfig.py
changeset 7487 82cd20da9650
parent 5447 bfa1fc626775
child 7513 c61b72940cc1
equal deleted inserted replaced
7477:4764c1472bd6 7487:82cd20da9650
     1 # -*- mode: python; encoding: utf-8 -*-
     1 # -*- mode: python; encoding: utf-8 -*-
     2 # Gustavo Carneiro (gjamc) 2008
     2 # Gustavo Carneiro (gjamc) 2008
     3 
     3 
     4 import Options
     4 import Options
     5 import Configure
     5 import Configure
     6 import pproc as subprocess
     6 import subprocess
     7 import config_c
     7 import config_c
       
     8 import sys
     8 
     9 
     9 def detect(conf):
    10 def configure(conf):
    10 	pkg_config = conf.find_program('pkg-config', var='PKG_CONFIG')
    11 	pkg_config = conf.find_program('pkg-config', var='PKG_CONFIG')
    11 	if not pkg_config: return
    12 	if not pkg_config: return
    12 
    13 
    13 @Configure.conf
    14 @Configure.conf
    14 def pkg_check_modules(conf, uselib_name, expression, mandatory=True):
    15 def pkg_check_modules(conf, uselib_name, expression, mandatory=True):
    17 		if mandatory:
    18 		if mandatory:
    18 			conf.fatal("pkg-config is not available")
    19 			conf.fatal("pkg-config is not available")
    19 		else:
    20 		else:
    20 			return False
    21 			return False
    21 
    22 
       
    23 	if Options.options.verbose:
       
    24 		extra_msg = ' (%s)' % expression
       
    25 	else:
       
    26 		extra_msg = ''
       
    27 
       
    28 	conf.start_msg('pkg-config flags for %s%s' % (uselib_name, extra_msg))
       
    29 
    22 	argv = [pkg_config, '--cflags', '--libs', expression]
    30 	argv = [pkg_config, '--cflags', '--libs', expression]
    23 	cmd = subprocess.Popen(argv, stdout=subprocess.PIPE)
    31 	cmd = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    24 	out, dummy = cmd.communicate()
    32 	out, err = cmd.communicate()
    25 	retval = cmd.wait()
    33 	retval = cmd.wait()
    26 
    34 
    27 	msg_checking = ("pkg-config flags for %s" % (uselib_name,))
    35 	conf.to_log('%r: %r (exit code %i)\n%s' % (argv, out, retval, err))
    28 	if Options.options.verbose:
    36 
    29 		if retval == 0:
    37 	if retval != 0:
    30 			conf.check_message_custom(msg_checking,
    38 		conf.end_msg(False)
    31 						  ('(%s)' % expression), out)
    39 		sys.stderr.write(err)
       
    40 	else:
       
    41 		if Options.options.verbose:
       
    42 			conf.end_msg(out)
    32 		else:
    43 		else:
    33 			conf.check_message(msg_checking, ('(%s)' % expression), False)
    44 			conf.end_msg(True)
    34 	else:
       
    35 		conf.check_message(msg_checking, '', (retval == 0), '')
       
    36 	conf.log.write('%r: %r (exit code %i)\n' % (argv, out, retval))
       
    37 
    45 
    38 	if retval == 0:
    46 	if retval == 0:
    39 
    47 		conf.parse_flags(out, uselib_name, conf.env)
    40 		config_c.parse_flags(out, uselib_name, conf.env)
       
    41 		conf.env[uselib_name] = True
    48 		conf.env[uselib_name] = True
    42 		return True
    49 		return True
    43 
    50 
    44 	else:
    51 	else:
    45 
    52