| Index: build/config/linux/pkg_config.gni
|
| diff --git a/build/config/linux/pkg_config.gni b/build/config/linux/pkg_config.gni
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..34ed1afa17c1ce004aa461bab258c564b23d91bb
|
| --- /dev/null
|
| +++ b/build/config/linux/pkg_config.gni
|
| @@ -0,0 +1,83 @@
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import("//build/config/sysroot.gni")
|
| +
|
| +# Defines a config specifying the result of running pkg-config for the given
|
| +# packages. Put the package names you want to query in the "packages" variable
|
| +# inside the template invocation.
|
| +#
|
| +# You can also add defines via the "defines" variable. This can be useful to
|
| +# add this to the config to pass defines that the library expects to get by
|
| +# users of its headers.
|
| +#
|
| +# Example:
|
| +# pkg_config("mything") {
|
| +# packages = [ "mything1", "mything2" ]
|
| +# defines = [ "ENABLE_AWESOME" ]
|
| +# }
|
| +#
|
| +# You can also use "extra args" to filter out results (see pkg-config.py):
|
| +# extra_args = [ "-v, "foo" ]
|
| +# To ignore libs and ldflags (only cflags/defines will be set, which is useful
|
| +# when doing manual dynamic linking), set:
|
| +# ignore_libs = true
|
| +
|
| +declare_args() {
|
| + # A pkg-config wrapper to call instead of trying to find and call the right
|
| + # pkg-config directly. Wrappers like this are common in cross-compilation
|
| + # environments.
|
| + # Leaving it blank defaults to searching PATH for 'pkg-config' and relying on
|
| + # the sysroot mechanism to find the right .pc files.
|
| + pkg_config = ""
|
| +}
|
| +
|
| +pkg_config_script = "//build/config/linux/pkg-config.py"
|
| +
|
| +# Define the args we pass to the pkg-config script for other build files that
|
| +# need to invoke it manually.
|
| +if (sysroot != "") {
|
| + # Pass the sysroot if we're using one (it requires the CPU arch also).
|
| + pkg_config_args = [
|
| + "-s",
|
| + sysroot,
|
| + "-a",
|
| + current_cpu,
|
| + ]
|
| +} else if (pkg_config != "") {
|
| + pkg_config_args = [
|
| + "-p",
|
| + pkg_config,
|
| + ]
|
| +} else {
|
| + pkg_config_args = []
|
| +}
|
| +
|
| +template("pkg_config") {
|
| + assert(defined(invoker.packages),
|
| + "Variable |packages| must be defined to be a list in pkg_config.")
|
| + config(target_name) {
|
| + args = pkg_config_args + invoker.packages
|
| + if (defined(invoker.extra_args)) {
|
| + args += invoker.extra_args
|
| + }
|
| +
|
| + pkgresult = exec_script(pkg_config_script, args, "value")
|
| + include_dirs = pkgresult[0]
|
| + cflags = pkgresult[1]
|
| +
|
| + if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) {
|
| + libs = pkgresult[2]
|
| + lib_dirs = pkgresult[3]
|
| + ldflags = pkgresult[4]
|
| + }
|
| +
|
| + if (defined(invoker.defines)) {
|
| + defines = invoker.defines
|
| + }
|
| + if (defined(invoker.visibility)) {
|
| + visibility = invoker.visibility
|
| + }
|
| + }
|
| +}
|
|
|