Roll src/third_party/WebKit e0eac24:489c548 (svn 193311:193320)
[chromium-blink-merge.git] / build / config / linux / pkg_config.gni
blob34ed1afa17c1ce004aa461bab258c564b23d91bb
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.
5 import("//build/config/sysroot.gni")
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.
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.
15 # Example:
16 #   pkg_config("mything") {
17 #     packages = [ "mything1", "mything2" ]
18 #     defines = [ "ENABLE_AWESOME" ]
19 #   }
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
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 = ""
36 pkg_config_script = "//build/config/linux/pkg-config.py"
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 = []
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     }
66     pkgresult = exec_script(pkg_config_script, args, "value")
67     include_dirs = pkgresult[0]
68     cflags = pkgresult[1]
70     if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) {
71       libs = pkgresult[2]
72       lib_dirs = pkgresult[3]
73       ldflags = pkgresult[4]
74     }
76     if (defined(invoker.defines)) {
77       defines = invoker.defines
78     }
79     if (defined(invoker.visibility)) {
80       visibility = invoker.visibility
81     }
82   }