Chromium Code Reviews| 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) |
|
viettrungluu
2014/10/08 16:21:56
Possibly you should separate out the gn and gyp ch
Elliot Glaysher
2014/10/08 18:20:51
Done: https://codereview.chromium.org/641743002/
|
| +# 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), |