| Index: build/config/linux/BUILD.gn
|
| diff --git a/build/config/linux/BUILD.gn b/build/config/linux/BUILD.gn
|
| index e26e397ec0ed85b84fa4eafaae057490426ea577..18b1da4a6482d0977c57b803e2025cf990964fc3 100644
|
| --- a/build/config/linux/BUILD.gn
|
| +++ b/build/config/linux/BUILD.gn
|
| @@ -82,31 +82,63 @@ pkg_config("gconf") {
|
| defines = [ "USE_GCONF" ]
|
| }
|
|
|
| +# name: Name to use for the value of the --name arg.
|
| +# output_h/output_cc: Names for the generated header/cc file with no dir.
|
| +# header: header file to process. Example: "<foo/bar.h>"
|
| +# functions: List of strings for functions to process.
|
| +# config: Label of the config generated by pkgconfig.
|
| +template("generate_library_loader") {
|
| + output_h = "$root_gen_dir/library_loaders/" + invoker.output_h
|
| + output_cc = "$root_gen_dir/library_loaders/" + invoker.output_cc
|
| +
|
| + action_visibility = ":$target_name"
|
| + action("${target_name}_loader") {
|
| + visibility = action_visibility
|
| +
|
| + script = "//tools/generate_library_loader/generate_library_loader.py"
|
| + if (defined(invoker.visibility)) {
|
| + visibility = invoker.visibility
|
| + }
|
| +
|
| + outputs = [ output_h, output_cc ]
|
| +
|
| + args = [
|
| + "--name", invoker.name,
|
| + "--output-h", rebase_path(output_h),
|
| + "--output-cc", rebase_path(output_cc),
|
| + "--header", invoker.header,
|
| + # Note GYP build exposes a per-target variable to control this, which, if
|
| + # manually set to true, will disable dlopen(). Its not clear this is
|
| + # needed, so here we just leave off. If this can be done globally, we
|
| + # can expose one switch for this value, otherwise we need to add a template
|
| + # param for this.
|
| + "--link-directly=0",
|
| + ] + invoker.functions
|
| + }
|
| +
|
| + source_set(target_name) {
|
| + direct_dependent_configs = [ invoker.config ]
|
| + sources = [ output_h, output_cc ]
|
| + deps = [ ":${target_name}_loader" ]
|
| + }
|
| +}
|
| +
|
| pkg_config("gio_config") {
|
| packages = [ "gio-2.0" ]
|
| defines = [ "USE_GIO" ]
|
| + ignore_libs = true # Loader generated below.
|
| }
|
|
|
| -gio_output_h = "$root_gen_dir/library_loaders/libgio.h"
|
| -gio_output_cc = "$root_gen_dir/library_loaders/libgio_loader.cc"
|
| +# This generates a target named "gio".
|
| +generate_library_loader("gio") {
|
| + name = "LibGioLoader"
|
| + output_h = "libgio.h"
|
| + output_cc = "libgio_loader.cc"
|
| + # TODO(brettw) convert ti "<gio/gio.h>" once GN doesn't mangle <>.
|
| + header = "\"gio/gio.h\""
|
| + config = ":gio_config"
|
|
|
| -action("make_gio_headers") {
|
| - visibility = ":gio"
|
| -
|
| - script = "//tools/generate_library_loader/generate_library_loader.py"
|
| -
|
| - outputs = [ gio_output_h, gio_output_cc ]
|
| -
|
| - args = [
|
| - "--name", "LibGioLoader",
|
| - "--output-h", rebase_path(gio_output_h),
|
| - "--output-cc", rebase_path(gio_output_cc),
|
| - # TODO(brettw) convert ti "<gio/gio.h>" once GN doesn't mangle <>.
|
| - "--header", "\"gio/gio.h\"",
|
| - # Note GYP build exposes a variable linux_link_gsettings to control this,
|
| - # which, if manually set to true, will disable dlopen() for this. Its not
|
| - # clear this is needed, so here we just leave off.
|
| - "--link-directly=0",
|
| + functions = [
|
| "g_settings_new",
|
| "g_settings_get_child",
|
| "g_settings_get_string",
|
| @@ -117,8 +149,29 @@ action("make_gio_headers") {
|
| ]
|
| }
|
|
|
| -source_set("gio") {
|
| - direct_dependent_configs = [ ":gio_config" ]
|
| - sources = [ gio_output_h, gio_output_cc ]
|
| - deps = [ ":make_gio_headers" ]
|
| +# pkgconfig doesn't return anything interesting for this other than -lpci
|
| +# on suppotred systems, so we hardcode.
|
| +config("libpci_config") {
|
| + # This is not needed as long as we're setting link_directly=0 for the library
|
| + # loaders.
|
| + #libs = [ "pci" ]
|
| +}
|
| +
|
| +# This generates a target named "libpci".
|
| +generate_library_loader("libpci") {
|
| + name = "LibPciLoader"
|
| + output_h = "libpci.h"
|
| + output_cc = "libpci_loader.cc"
|
| + # TODO(brettw) convert to "<pci/pci.h>" once GN doesn't mangle <>.
|
| + header = "\"pci/pci.h\""
|
| + config = ":libpci_config"
|
| +
|
| + functions = [
|
| + "pci_alloc",
|
| + "pci_init",
|
| + "pci_cleanup",
|
| + "pci_scan_bus",
|
| + "pci_fill_info",
|
| + "pci_lookup_name",
|
| + ]
|
| }
|
|
|