1 """This module contains helper functions for configuration using pkg-config."""
2
3 from output import get_status_output
4
6 """This function returns list of include files, flags, libraries and library directories obtain from a pkgconfig file.
7
8 The usage is:
9 (includes, flags, libraries, libdirs) = header_and_libs_from_pkgconfig(*list_of_packages)
10 """
11 returnLinkFlags = kwargs.get("returnLinkFlags", False)
12 result, output = get_status_output("pkg-config --version ")
13 if result != 0:
14 raise OSError("The pkg-config package is not installed on the system.")
15
16 includes = []
17 flags = []
18 libs = []
19 libdirs = []
20 linkflags = []
21 for pack in packages:
22 result, output = get_status_output("pkg-config --exists %s " % pack)
23 if result == 0:
24 tmp = get_status_output("pkg-config --cflags-only-I %s " % pack)[1].split()
25 includes.extend(i[2:] for i in tmp)
26
27 tmp = get_status_output("pkg-config --cflags-only-other %s " % pack)[1].split()
28 flags.extend(tmp)
29
30 tmp = get_status_output("pkg-config --libs-only-l %s " % pack)[1].split()
31 libs.extend(i[2:] for i in tmp)
32
33 tmp = get_status_output("pkg-config --libs-only-L %s " % pack)[1].split()
34 libdirs.extend(i[2:] for i in tmp)
35
36 tmp = get_status_output("pkg-config --libs-only-other %s " % pack)[1].split()
37 linkflags.extend(tmp)
38
39 else:
40 raise OSError("The pkg-config file %s does not exist" % pack)
41
42 if returnLinkFlags: return (includes,flags,libs, libdirs, linkflags)
43 return (includes,flags,libs, libdirs)
44