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), |