| Index: mojo/public/tools/bindings/mojom.gni
|
| diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
|
| index 5f65c27eaf1945bfe4e0289da107ba043a44b720..41034926077026d272dee89379654e1cc30bda56 100644
|
| --- a/mojo/public/tools/bindings/mojom.gni
|
| +++ b/mojo/public/tools/bindings/mojom.gni
|
| @@ -20,6 +20,9 @@
|
| # testonly (optional)
|
| #
|
| # visibility (optional)
|
| +#
|
| +# generators (optional)
|
| +# List of languages to generate object files for.
|
| template("mojom") {
|
| assert(defined(invoker.sources),
|
| "\"sources\" must be defined for the $target_name template.")
|
| @@ -103,6 +106,13 @@ template("mojom") {
|
| target_visibility = [ ":$target_name" ]
|
| }
|
|
|
| + # Work around gn requiring all outputs to be used; there are some branches
|
| + # through the if branches below where these variables may otherwise be unused.
|
| + assert(generator_cpp_outputs != [])
|
| + assert(generator_java_outputs != [])
|
| + assert(generator_js_outputs != [])
|
| + assert(generator_python_outputs != [])
|
| +
|
| generator_target_name = target_name + "__generator"
|
| action_foreach(generator_target_name) {
|
| if (defined(invoker.visibility)) {
|
| @@ -111,12 +121,45 @@ template("mojom") {
|
| script = generator_script
|
| inputs = generator_sources
|
| sources = invoker.sources
|
| - outputs = generator_cpp_outputs +
|
| - generator_java_outputs +
|
| - generator_js_outputs +
|
| - generator_python_outputs
|
| + outputs = []
|
| + generator_string = ""
|
| + if (defined(invoker.generators)) {
|
| + generator_string = "--generators="
|
| + first_item = true
|
| + foreach (item, invoker.generators) {
|
| + if (first_item) {
|
| + first_item = false
|
| + } else {
|
| + generator_string += ","
|
| + }
|
| +
|
| + generator_string += item
|
| + if (item == "c++") {
|
| + outputs += generator_cpp_outputs
|
| + } else if (item == "java") {
|
| + outputs += generator_java_outputs
|
| + } else if (item == "javascript") {
|
| + outputs += generator_js_outputs
|
| + } else if (item == "python") {
|
| + outputs += generator_python_outputs
|
| + }
|
| + }
|
| + } else {
|
| + outputs = generator_cpp_outputs +
|
| + generator_java_outputs +
|
| + generator_js_outputs +
|
| + generator_python_outputs
|
| + }
|
| +
|
| args = [
|
| "{{source}}",
|
| + ]
|
| +
|
| + if (generator_string != "") {
|
| + args += [ generator_string ]
|
| + }
|
| +
|
| + args += [
|
| "--use_chromium_bundled_pylibs",
|
| "-d", rebase_path("//", root_build_dir),
|
| "-I", rebase_path("//", root_build_dir),
|
|
|