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 |