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 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("//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 } 61