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 # |
| 21 # You can also use "extra args" to filter out results (see pkg-config.py): |
| 22 # extra_args = [ "-v, "foo" ] |
20 | 23 |
21 template("pkg_config") { | 24 template("pkg_config") { |
22 assert(defined(invoker.packages), | 25 assert(defined(invoker.packages), |
23 "Variable |packages| must be defined to be a list in pkg_config.") | 26 "Variable |packages| must be defined to be a list in pkg_config.") |
24 config(target_name) { | 27 config(target_name) { |
25 if (sysroot != "") { | 28 if (sysroot != "") { |
26 # Pass the sysroot if we're using one (it requires the CPU arch also). | 29 # Pass the sysroot if we're using one (it requires the CPU arch also). |
27 args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages | 30 args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages |
28 } else { | 31 } else { |
29 args = invoker.packages | 32 args = invoker.packages |
30 } | 33 } |
| 34 |
| 35 if (defined(invoker.extra_args)) { |
| 36 args += invoker.extra_args |
| 37 } |
| 38 |
31 pkgresult = exec_script("//build/config/linux/pkg-config.py", | 39 pkgresult = exec_script("//build/config/linux/pkg-config.py", |
32 args, "value") | 40 args, "value") |
33 include_dirs = pkgresult[0] | 41 include_dirs = pkgresult[0] |
34 cflags = pkgresult[1] | 42 cflags = pkgresult[1] |
35 libs = pkgresult[2] | 43 libs = pkgresult[2] |
36 lib_dirs = pkgresult[3] | 44 lib_dirs = pkgresult[3] |
37 ldflags = pkgresult[4] | 45 ldflags = pkgresult[4] |
38 | 46 |
39 if (defined(invoker.defines)) { | 47 if (defined(invoker.defines)) { |
40 defines = invoker.defines | 48 defines = invoker.defines |
41 } | 49 } |
42 if (defined(invoker.visibility)) { | 50 if (defined(invoker.visibility)) { |
43 visibility = invoker.visibility | 51 visibility = invoker.visibility |
44 } | 52 } |
45 } | 53 } |
46 } | 54 } |
OLD | NEW |