Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / native_client / build / config / linux / pkg_config.gni
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("//native_client/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 template("pkg_config") {
28   assert(defined(invoker.packages),
29         "Variable |packages| must be defined to be a list in pkg_config.")
30   config(target_name) {
31     if (sysroot != "") {
32       # Pass the sysroot if we're using one (it requires the CPU arch also).
33       args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages
34     } else {
35       args = invoker.packages
36     }
37
38     if (defined(invoker.extra_args)) {
39       args += invoker.extra_args
40     }
41
42     pkgresult = exec_script("//native_client/build/config/linux/pkg-config.py",
43                             args, "value")
44     include_dirs = pkgresult[0]
45     cflags = pkgresult[1]
46
47     if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) {
48       libs = pkgresult[2]
49       lib_dirs = pkgresult[3]
50       ldflags = pkgresult[4]
51     }
52
53     if (defined(invoker.defines)) {
54       defines = invoker.defines
55     }
56     if (defined(invoker.visibility)) {
57       visibility = invoker.visibility
58     }
59   }
60 }