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

Unified Diff: extensions/generated_extensions_api.gni

Issue 513633002: Reland 596ff54335b2a1b393af10657bc4945114f3beed - Split API bundle generation steps (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 4 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 | « extensions/extensions.gyp ('k') | extensions/shell/app_shell.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/generated_extensions_api.gni
diff --git a/extensions/generated_extensions_api.gni b/extensions/generated_extensions_api.gni
index 5360711eecec1559ddca9136518ccbd5beed649b..98ddc774f78ab86cece0295bd59d910221fc6a51 100644
--- a/extensions/generated_extensions_api.gni
+++ b/extensions/generated_extensions_api.gni
@@ -16,16 +16,23 @@
# namespace for each API. Use %(namespace)s to replace with the API
# namespace, like "toplevel::%(namespace)s_api".
#
+# schemas [optional, default = false]
+# Boolean indicating if the schema files should be generated.
+#
# bundle [optional, default = false]
-# Boolean indicating if the schema files should be bundled or not.
+# Boolean indicating if the schema bundle files should be generated.
+#
+# bundle_registration [optional, default = false]
+# Boolean indicating if the API registration bundle files should be generated.
#
-# impl_dir [required if bundle = true, otherwise unused]
+# impl_dir [required if bundle_registration = true, otherwise unused]
# The path containing C++ implementations of API functions. This path is
# used as the root path when looking for {schema}/{schema}_api.h headers
-# during the API bundle generation phase. Such headers, if found, are
+# when generating API registration bundles. Such headers, if found, are
# automatically included by the generated code.
#
-# uncompiled_sources [optional, only used when bundle = true]
+# uncompiled_sources [optional, only used when bundle = true or
+# bundle_registration = true]
# A list of schema files which should not be compiled, but which should still
# be processed for API bundle generation.
#
@@ -33,7 +40,7 @@
# If any deps are specified they will be inherited by the static library
# target.
#
-# The static libarary target also inherits the visibility and output_name
+# The static library target also inherits the visibility and output_name
# of its invoker.
template("generated_extensions_api") {
@@ -42,7 +49,10 @@ template("generated_extensions_api") {
assert(defined(invoker.root_namespace),
"\"root_namespace\" must be defined for the $target_name template.")
+ schemas = defined(invoker.schemas) && invoker.schemas
bundle = defined(invoker.bundle) && invoker.bundle
+ bundle_registration = defined(invoker.bundle_registration) &&
+ invoker.bundle_registration
# Keep a copy of the target_name here since it will be trampled
# in nested targets.
@@ -54,7 +64,7 @@ template("generated_extensions_api") {
visibility = target_visibility
}
- schemas = invoker.sources
+ sources = invoker.sources
root_namespace = invoker.root_namespace
compiler_root = "//tools/json_schema_compiler"
@@ -72,41 +82,36 @@ template("generated_extensions_api") {
"$compiler_root/util_cc_helper.py",
]
- schema_generator_name = target_name + "_schema_generator"
- action_foreach(schema_generator_name) {
- script = compiler_script
- inputs = compiler_sources
- sources = schemas
- outputs = [
- "$target_gen_dir/{{source_name_part}}.cc",
- "$target_gen_dir/{{source_name_part}}.h",
- ]
- args = [
- "{{source}}",
- "--root=" + rebase_path("//", root_build_dir),
- "--destdir=" + rebase_path(root_gen_dir, root_build_dir),
- "--namespace=$root_namespace",
- "--generator=cpp" ]
- visibility = target_visibility
+ if (schemas) {
+ schema_generator_name = target_name + "_schema_generator"
+ action_foreach(schema_generator_name) {
+ script = compiler_script
+ inputs = compiler_sources
+ outputs = [
+ "$target_gen_dir/{{source_name_part}}.cc",
+ "$target_gen_dir/{{source_name_part}}.h",
+ ]
+ args = [
+ "{{source}}",
+ "--root=" + rebase_path("//", root_build_dir),
+ "--destdir=" + rebase_path(root_gen_dir, root_build_dir),
+ "--namespace=$root_namespace",
+ "--generator=cpp" ]
+ visibility = target_visibility
+ }
}
if (bundle) {
- assert(defined(invoker.impl_dir),
- "\"impl_dir\" must be defined for the $target_name template.")
- impl_dir = invoker.impl_dir
-
- uncompiled_schemas = []
+ uncompiled_sources = []
if (defined(invoker.uncompiled_sources)) {
- uncompiled_schemas = invoker.uncompiled_sources
+ uncompiled_sources = invoker.uncompiled_sources
}
- bundle_generator_name = target_name + "_bundle_generator"
- action(bundle_generator_name) {
+ bundle_generator_schema_name = target_name + "_bundle_generator_schema"
+ action(bundle_generator_schema_name) {
script = compiler_script
- inputs = compiler_sources + schemas + uncompiled_schemas
+ inputs = compiler_sources + sources + uncompiled_sources
outputs = [
- "$target_gen_dir/generated_api.cc",
- "$target_gen_dir/generated_api.h",
"$target_gen_dir/generated_schemas.cc",
"$target_gen_dir/generated_schemas.h",
]
@@ -114,25 +119,64 @@ template("generated_extensions_api") {
"--root=" + rebase_path("//", root_build_dir),
"--destdir=" + rebase_path(root_gen_dir, root_build_dir),
"--namespace=$root_namespace",
- "--generator=cpp-bundle",
+ "--generator=cpp-bundle-schema",
+ ] +
+ rebase_path(sources, root_build_dir) +
+ rebase_path(uncompiled_sources, root_build_dir)
+ }
+ }
+
+ if (bundle_registration) {
+ uncompiled_sources = []
+ if (defined(invoker.uncompiled_sources)) {
+ uncompiled_sources = invoker.uncompiled_sources
+ }
+
+ assert(defined(invoker.impl_dir),
+ "\"impl_dir\" must be defined for the $target_name template.")
+ impl_dir = invoker.impl_dir
+
+ bundle_generator_registration_name = target_name +
+ "_bundle_generator_registration"
+ action(bundle_generator_registration_name) {
+ script = compiler_script
+ inputs = compiler_sources + sources + uncompiled_sources
+ outputs = [
+ "$root_gen_dir/$impl_dir/generated_api_registration.cc",
+ "$root_gen_dir/$impl_dir/generated_api_registration.h",
+ ]
+ args = [
+ "--root=" + rebase_path("//", root_build_dir),
+ "--destdir=" + rebase_path(root_gen_dir, root_build_dir),
+ "--namespace=$root_namespace",
+ "--generator=cpp-bundle-registration",
"--impl-dir=" + rebase_path(impl_dir, "//"),
] +
- rebase_path(schemas, root_build_dir) +
- rebase_path(uncompiled_schemas, root_build_dir)
+ rebase_path(sources, root_build_dir) +
+ rebase_path(uncompiled_sources, root_build_dir)
}
}
source_set(target_name) {
- sources = get_target_outputs(":$schema_generator_name")
-
- deps = [
- ":$schema_generator_name",
- "//tools/json_schema_compiler:generated_api_util",
- ]
+ sources = []
+ deps = []
+
+ if (schemas) {
+ sources += get_target_outputs(":$schema_generator_name")
+ deps += [
+ ":$schema_generator_name",
+ "//tools/json_schema_compiler:generated_api_util",
+ ]
+ }
if (bundle) {
- sources += get_target_outputs(":$bundle_generator_name")
- deps += [ ":$bundle_generator_name" ]
+ sources += get_target_outputs(":$bundle_generator_schema_name")
+ deps += [ ":$bundle_generator_schema_name" ]
+ }
+
+ if (bundle_registration) {
+ sources += get_target_outputs(":$bundle_generator_registration_name")
+ deps += [ ":$bundle_generator_registration_name" ]
}
if (defined(invoker.deps)) {
« no previous file with comments | « extensions/extensions.gyp ('k') | extensions/shell/app_shell.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698