# 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 template("pkg_config") { assert(defined(invoker.packages), "Variable |packages| must be defined to be a list in pkg_config.") config(target_name) { if (sysroot != "") { # Pass the sysroot if we're using one (it requires the CPU arch also). args = ["-s", sysroot, "-a", cpu_arch] + invoker.packages } else { args = invoker.packages } if (defined(invoker.extra_args)) { args += invoker.extra_args } pkgresult = exec_script("//build/config/linux/pkg-config.py", 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 } } }