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

Unified Diff: mojo/public/tools/bindings/mojom.gni

Issue 611633002: mojom: Add associative arrays to the mojom language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Suppress pylint warnings instead of making MapKind public. Created 6 years, 2 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
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),

Powered by Google App Engine
This is Rietveld 408576698