OLD | NEW |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import("//build/config/sysroot.gni") | 5 import("//build/config/sysroot.gni") |
6 | 6 |
7 # Defines a config specifying the result of running pkg-config for the given | 7 # Defines a config specifying the result of running pkg-config for the given |
8 # packages. Put the package names you want to query in the "packages" variable | 8 # packages. Put the package names you want to query in the "packages" variable |
9 # inside the template invocation. | 9 # inside the template invocation. |
10 # | 10 # |
11 # You can also add defines via the "defines" variable. This can be useful to | 11 # You can also add defines via the "defines" variable. This can be useful to |
12 # add this to the config to pass defines that the library expects to get by | 12 # add this to the config to pass defines that the library expects to get by |
13 # users of its headers. | 13 # users of its headers. |
14 # | 14 # |
15 # Example: | 15 # Example: |
16 # pkg_config("mything") { | 16 # pkg_config("mything") { |
17 # packages = [ "mything1", "mything2" ] | 17 # packages = [ "mything1", "mything2" ] |
18 # defines = [ "ENABLE_AWESOME" ] | 18 # defines = [ "ENABLE_AWESOME" ] |
19 # } | 19 # } |
20 # | 20 # |
21 # You can also use "extra args" to filter out results (see pkg-config.py): | 21 # You can also use "extra args" to filter out results (see pkg-config.py): |
22 # extra_args = [ "-v, "foo" ] | 22 # extra_args = [ "-v, "foo" ] |
23 # To ignore libs and ldflags (only cflags/defines will be set, which is useful | 23 # To ignore libs and ldflags (only cflags/defines will be set, which is useful |
24 # when doing manual dynamic linking), set: | 24 # when doing manual dynamic linking), set: |
25 # ignore_libs = true | 25 # ignore_libs = true |
26 | 26 |
| 27 declare_args() { |
| 28 # A pkg-config wrapper to call instead of trying to find and call the right |
| 29 # pkg-config directly. Wrappers like this are common in cross-compilation |
| 30 # environments. |
| 31 # Leaving it blank defaults to searching PATH for 'pkg-config' and relying on |
| 32 # the sysroot mechanism to find the right .pc files. |
| 33 pkg_config = "" |
| 34 } |
| 35 |
27 template("pkg_config") { | 36 template("pkg_config") { |
28 assert(defined(invoker.packages), | 37 assert(defined(invoker.packages), |
29 "Variable |packages| must be defined to be a list in pkg_config.") | 38 "Variable |packages| must be defined to be a list in pkg_config.") |
30 config(target_name) { | 39 config(target_name) { |
31 if (sysroot != "") { | 40 if (sysroot != "") { |
32 # Pass the sysroot if we're using one (it requires the CPU arch also). | 41 # Pass the sysroot if we're using one (it requires the CPU arch also). |
33 args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages | 42 args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages |
| 43 } else if (pkg_config != "") { |
| 44 args = ["-p", pkg_config] + invoker.packages |
34 } else { | 45 } else { |
35 args = invoker.packages | 46 args = invoker.packages |
36 } | 47 } |
37 | 48 |
38 if (defined(invoker.extra_args)) { | 49 if (defined(invoker.extra_args)) { |
39 args += invoker.extra_args | 50 args += invoker.extra_args |
40 } | 51 } |
41 | 52 |
42 pkgresult = exec_script("//build/config/linux/pkg-config.py", | 53 pkgresult = exec_script("//build/config/linux/pkg-config.py", |
43 args, "value") | 54 args, "value") |
44 include_dirs = pkgresult[0] | 55 include_dirs = pkgresult[0] |
45 cflags = pkgresult[1] | 56 cflags = pkgresult[1] |
46 | 57 |
47 if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) { | 58 if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) { |
48 libs = pkgresult[2] | 59 libs = pkgresult[2] |
49 lib_dirs = pkgresult[3] | 60 lib_dirs = pkgresult[3] |
50 ldflags = pkgresult[4] | 61 ldflags = pkgresult[4] |
51 } | 62 } |
52 | 63 |
53 if (defined(invoker.defines)) { | 64 if (defined(invoker.defines)) { |
54 defines = invoker.defines | 65 defines = invoker.defines |
55 } | 66 } |
56 if (defined(invoker.visibility)) { | 67 if (defined(invoker.visibility)) { |
57 visibility = invoker.visibility | 68 visibility = invoker.visibility |
58 } | 69 } |
59 } | 70 } |
60 } | 71 } |
OLD | NEW |