Home | History | Annotate | Download | only in linux
      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