OLD | NEW |
(Empty) | |
| 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 |
| 3 # found in the LICENSE file. |
| 4 |
| 5 import("//build/config/sysroot.gni") |
| 6 |
| 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 |
| 9 # inside the template invocation. |
| 10 # |
| 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 |
| 13 # users of its headers. |
| 14 # |
| 15 # Example: |
| 16 # pkg_config("mything") { |
| 17 # packages = [ "mything1", "mything2" ] |
| 18 # defines = [ "ENABLE_AWESOME" ] |
| 19 # } |
| 20 # |
| 21 # You can also use "extra args" to filter out results (see pkg-config.py): |
| 22 # extra_args = [ "-v, "foo" ] |
| 23 # To ignore libs and ldflags (only cflags/defines will be set, which is useful |
| 24 # when doing manual dynamic linking), set: |
| 25 # ignore_libs = true |
| 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 |
| 36 pkg_config_script = "//build/config/linux/pkg-config.py" |
| 37 |
| 38 # Define the args we pass to the pkg-config script for other build files that |
| 39 # need to invoke it manually. |
| 40 if (sysroot != "") { |
| 41 # Pass the sysroot if we're using one (it requires the CPU arch also). |
| 42 pkg_config_args = [ |
| 43 "-s", |
| 44 sysroot, |
| 45 "-a", |
| 46 current_cpu, |
| 47 ] |
| 48 } else if (pkg_config != "") { |
| 49 pkg_config_args = [ |
| 50 "-p", |
| 51 pkg_config, |
| 52 ] |
| 53 } else { |
| 54 pkg_config_args = [] |
| 55 } |
| 56 |
| 57 template("pkg_config") { |
| 58 assert(defined(invoker.packages), |
| 59 "Variable |packages| must be defined to be a list in pkg_config.") |
| 60 config(target_name) { |
| 61 args = pkg_config_args + invoker.packages |
| 62 if (defined(invoker.extra_args)) { |
| 63 args += invoker.extra_args |
| 64 } |
| 65 |
| 66 pkgresult = exec_script(pkg_config_script, args, "value") |
| 67 include_dirs = pkgresult[0] |
| 68 cflags = pkgresult[1] |
| 69 |
| 70 if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) { |
| 71 libs = pkgresult[2] |
| 72 lib_dirs = pkgresult[3] |
| 73 ldflags = pkgresult[4] |
| 74 } |
| 75 |
| 76 if (defined(invoker.defines)) { |
| 77 defines = invoker.defines |
| 78 } |
| 79 if (defined(invoker.visibility)) { |
| 80 visibility = invoker.visibility |
| 81 } |
| 82 } |
| 83 } |
OLD | NEW |