Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2443)

Unified Diff: build/json_schema_api.gni

Issue 1122613002: Make the Windows multi_dll build work in GN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@buildflags
Patch Set: chromeos and android Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/trace_event/etw_manifest/BUILD.gn ('k') | chrome/browser/devtools/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/json_schema_api.gni
diff --git a/build/json_schema_api.gni b/build/json_schema_api.gni
index 68a9fdd57ab4bd116ff39c7255c994c64250e213..aa6365b948ee505484650961634ee9aee2c35055 100644
--- a/build/json_schema_api.gni
+++ b/build/json_schema_api.gni
@@ -46,7 +46,10 @@
# If any deps are specified they will be inherited by the static library
# target.
#
-# The static library target also inherits the visibility and output_name
+# generate_static_library [optional, defaults to false]
+# Produces a static library instead of a source_set.
+#
+# The generated library target also inherits the visibility and output_name
# of its invoker.
template("json_schema_api") {
@@ -75,7 +78,6 @@ template("json_schema_api") {
visibility = target_visibility
}
- sources = invoker.sources
root_namespace = invoker.root_namespace
compiler_root = "//tools/json_schema_compiler"
@@ -97,6 +99,7 @@ template("json_schema_api") {
schema_generator_name = target_name + "_schema_generator"
action_foreach(schema_generator_name) {
script = compiler_script
+ sources = invoker.sources
inputs = compiler_sources
outputs = [
"$target_gen_dir/{{source_name_part}}.cc",
@@ -127,7 +130,7 @@ template("json_schema_api") {
bundle_generator_schema_name = target_name + "_bundle_generator_schema"
action(bundle_generator_schema_name) {
script = compiler_script
- inputs = compiler_sources + sources + uncompiled_sources
+ inputs = compiler_sources + invoker.sources + uncompiled_sources
outputs = [
"$target_gen_dir/generated_schemas.cc",
"$target_gen_dir/generated_schemas.h",
@@ -138,7 +141,7 @@ template("json_schema_api") {
"--namespace=$root_namespace",
"--generator=cpp-bundle-schema",
"--include-rules=$schema_include_rules",
- ] + rebase_path(sources, root_build_dir) +
+ ] + rebase_path(invoker.sources, root_build_dir) +
rebase_path(uncompiled_sources, root_build_dir)
}
}
@@ -157,7 +160,7 @@ template("json_schema_api") {
target_name + "_bundle_generator_registration"
action(bundle_generator_registration_name) {
script = compiler_script
- inputs = compiler_sources + sources + uncompiled_sources
+ inputs = compiler_sources + invoker.sources + uncompiled_sources
outputs = [
"$root_gen_dir/$impl_dir/generated_api_registration.cc",
"$root_gen_dir/$impl_dir/generated_api_registration.h",
@@ -169,43 +172,69 @@ template("json_schema_api") {
"--generator=cpp-bundle-registration",
"--impl-dir=" + rebase_path(impl_dir, "//"),
"--include-rules=$schema_include_rules",
- ] + rebase_path(sources, root_build_dir) +
+ ] + rebase_path(invoker.sources, root_build_dir) +
rebase_path(uncompiled_sources, root_build_dir)
}
}
- source_set(target_name) {
- sources = []
- deps = []
- public_deps = []
+ # Compute the contents of the library/source set.
+ lib_sources = invoker.sources
+ lib_deps = []
+ lib_public_deps = []
+ lib_extra_configs = []
- if (schemas) {
- sources += get_target_outputs(":$schema_generator_name")
- public_deps += [ ":$schema_generator_name" ]
- deps += [ "//tools/json_schema_compiler:generated_api_util" ]
- configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
- }
+ if (schemas) {
+ lib_sources += get_target_outputs(":$schema_generator_name")
+ lib_public_deps += [ ":$schema_generator_name" ]
+ lib_deps += [ "//tools/json_schema_compiler:generated_api_util" ]
+ lib_extra_configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+ }
- if (bundle) {
- sources += get_target_outputs(":$bundle_generator_schema_name")
- deps += [ ":$bundle_generator_schema_name" ]
- }
+ if (bundle) {
+ lib_sources += get_target_outputs(":$bundle_generator_schema_name")
+ lib_deps += [ ":$bundle_generator_schema_name" ]
+ }
- if (bundle_registration) {
- sources += get_target_outputs(":$bundle_generator_registration_name")
- deps += [ ":$bundle_generator_registration_name" ]
- }
+ if (bundle_registration) {
+ lib_sources += get_target_outputs(":$bundle_generator_registration_name")
+ lib_deps += [ ":$bundle_generator_registration_name" ]
+ }
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- public_configs = [ ":$generated_config_name" ]
+ if (defined(invoker.deps)) {
+ lib_deps += invoker.deps
+ }
+
+ # Generate either a static library or a source set.
+ if (defined(invoker.generate_static_library) &&
+ invoker.generate_static_library) {
+ static_library(target_name) {
+ sources = lib_sources
+ deps = lib_deps
+ public_deps = lib_public_deps
+ configs += lib_extra_configs
+ public_configs = [ ":$generated_config_name" ]
- if (defined(invoker.visibility)) {
- visibility = invoker.visibility
+ if (defined(invoker.visibility)) {
+ visibility = invoker.visibility
+ }
+ if (defined(invoker.output_name)) {
+ output_name = invoker.output_name
+ }
}
- if (defined(invoker.output_name)) {
- output_name = invoker.output_name
+ } else {
+ source_set(target_name) {
+ sources = lib_sources
+ deps = lib_deps
+ public_deps = lib_public_deps
+ configs += lib_extra_configs
+ public_configs = [ ":$generated_config_name" ]
+
+ if (defined(invoker.visibility)) {
+ visibility = invoker.visibility
+ }
+ if (defined(invoker.output_name)) {
+ output_name = invoker.output_name
+ }
}
}
}
« no previous file with comments | « base/trace_event/etw_manifest/BUILD.gn ('k') | chrome/browser/devtools/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698