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

Side by Side Diff: mojo/public/tools/bindings/mojom.gni

Issue 2237913004: Mojo C++ bindings: support generating code shared by different variants. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 mojom_generator_root = "//mojo/public/tools/bindings" 5 mojom_generator_root = "//mojo/public/tools/bindings"
6 mojom_generator_script = "$mojom_generator_root/mojom_bindings_generator.py" 6 mojom_generator_script = "$mojom_generator_root/mojom_bindings_generator.py"
7 mojom_generator_sources = [ 7 mojom_generator_sources = [
8 "$mojom_generator_root/generators/mojom_cpp_generator.py", 8 "$mojom_generator_root/generators/mojom_cpp_generator.py",
9 "$mojom_generator_root/generators/mojom_js_generator.py", 9 "$mojom_generator_root/generators/mojom_js_generator.py",
10 "$mojom_generator_root/generators/mojom_java_generator.py", 10 "$mojom_generator_root/generators/mojom_java_generator.py",
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 # invoker.public_deps) are mojom targets. 129 # invoker.public_deps) are mojom targets.
130 group("${target_name}__check_deps_are_all_mojom") { 130 group("${target_name}__check_deps_are_all_mojom") {
131 deps = [] 131 deps = []
132 foreach(d, all_deps) { 132 foreach(d, all_deps) {
133 name = get_label_info(d, "label_no_toolchain") 133 name = get_label_info(d, "label_no_toolchain")
134 toolchain = get_label_info(d, "toolchain") 134 toolchain = get_label_info(d, "toolchain")
135 deps += [ "${name}__is_mojom(${toolchain})" ] 135 deps += [ "${name}__is_mojom(${toolchain})" ]
136 } 136 }
137 } 137 }
138 138
139 # Generate code that is shared by different variants.
140 if (defined(invoker.sources)) {
141 common_generator_args = [
142 "--use_bundled_pylibs",
143 "generate",
144 "{{source}}",
145 "-d",
146 rebase_path("//", root_build_dir),
147 "-I",
148 rebase_path("//", root_build_dir),
149 "-o",
150 rebase_path(root_gen_dir),
151 "--bytecode_path",
152 rebase_path("$root_gen_dir/mojo/public/tools/bindings"),
153 ]
154
155 if (defined(invoker.import_dirs)) {
156 foreach(import_dir, invoker.import_dirs) {
157 common_generator_args += [
158 "-I",
159 rebase_path(import_dir, root_build_dir),
160 ]
161 }
162 }
163
164 generator_shared_cpp_outputs = [
165 "{{source_gen_dir}}/{{source_name_part}}.mojom-shared-internal.h",
166 "{{source_gen_dir}}/{{source_name_part}}.mojom-shared.cc",
167 "{{source_gen_dir}}/{{source_name_part}}.mojom-shared.h",
168 ]
169 generator_shared_target_name = "${target_name}_shared__generator"
170 action_foreach(generator_shared_target_name) {
171 script = mojom_generator_script
172 inputs = mojom_generator_sources
173 sources = invoker.sources
174 deps = [
175 "//mojo/public/tools/bindings:precompile_templates",
176 ]
177 outputs = generator_shared_cpp_outputs
178 args = common_generator_args
179 args += [
180 "--generate_non_variant_code",
181 "-g",
182 "c++",
183 ]
184 }
185 }
186
187 shared_cpp_sources_suffix = "shared_cpp_sources"
188 shared_cpp_sources_target_name = "${target_name}_${shared_cpp_sources_suffix}"
189 source_set(shared_cpp_sources_target_name) {
190 if (defined(invoker.testonly)) {
191 testonly = invoker.testonly
192 }
193 deps = []
194 if (defined(invoker.sources)) {
195 sources =
196 process_file_template(invoker.sources, generator_shared_cpp_outputs)
197 deps += [ ":$generator_shared_target_name" ]
198 }
199 public_deps = []
200 foreach(d, all_deps) {
201 # Resolve the name, so that a target //mojo/something becomes
202 # //mojo/something:something and we can append shared_cpp_sources_suffix
203 # to get the cpp dependency name.
204 full_name = get_label_info("$d", "label_no_toolchain")
205 public_deps += [ "${full_name}_${shared_cpp_sources_suffix}" ]
206 }
207 }
208
209 # Generate code for variants.
139 foreach(bindings_configuration, _bindings_configurations) { 210 foreach(bindings_configuration, _bindings_configurations) {
140 cpp_only = false 211 cpp_only = false
141 variant_suffix = "" 212 variant_suffix = ""
142 if (defined(bindings_configuration.variant)) { 213 if (defined(bindings_configuration.variant)) {
143 variant = bindings_configuration.variant 214 variant = bindings_configuration.variant
144 variant_suffix = "_${variant}" 215 variant_suffix = "_${variant}"
145 cpp_only = true 216 cpp_only = true
146 } 217 }
147 type_mappings_target_name = "${target_name}${variant_suffix}__type_mappings" 218 type_mappings_target_name = "${target_name}${variant_suffix}__type_mappings"
148 type_mappings_path = 219 type_mappings_path =
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 action_foreach(generator_target_name) { 271 action_foreach(generator_target_name) {
201 script = mojom_generator_script 272 script = mojom_generator_script
202 inputs = mojom_generator_sources 273 inputs = mojom_generator_sources
203 sources = invoker.sources 274 sources = invoker.sources
204 deps = [ 275 deps = [
205 ":$type_mappings_target_name", 276 ":$type_mappings_target_name",
206 "//mojo/public/tools/bindings:precompile_templates", 277 "//mojo/public/tools/bindings:precompile_templates",
207 ] 278 ]
208 outputs = generator_cpp_outputs + generator_java_outputs + 279 outputs = generator_cpp_outputs + generator_java_outputs +
209 generator_js_outputs 280 generator_js_outputs
210 args = [ 281 args = common_generator_args
211 "--use_bundled_pylibs",
212 "generate",
213 "{{source}}",
214 "-d",
215 rebase_path("//", root_build_dir),
216 "-I",
217 rebase_path("//", root_build_dir),
218 "-o",
219 rebase_path(root_gen_dir),
220 "--bytecode_path",
221 rebase_path("$root_gen_dir/mojo/public/tools/bindings"),
222 ]
223
224 if (defined(invoker.import_dirs)) {
225 foreach(import_dir, invoker.import_dirs) {
226 args += [
227 "-I",
228 rebase_path(import_dir, root_build_dir),
229 ]
230 }
231 }
232 282
233 if (cpp_only) { 283 if (cpp_only) {
234 args += [ 284 args += [
235 "-g", 285 "-g",
236 "c++", 286 "c++",
237 ] 287 ]
238 } else { 288 } else {
239 args += [ 289 args += [
240 "-g", 290 "-g",
241 "c++,javascript,java", 291 "c++,javascript,java",
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 if (defined(invoker.export_define)) { 429 if (defined(invoker.export_define)) {
380 defines += [ invoker.export_define ] 430 defines += [ invoker.export_define ]
381 } 431 }
382 if (defined(invoker.export_define_blink)) { 432 if (defined(invoker.export_define_blink)) {
383 defines += [ invoker.export_define_blink ] 433 defines += [ invoker.export_define_blink ]
384 } 434 }
385 if (enabled_sources != []) { 435 if (enabled_sources != []) {
386 sources = process_file_template(enabled_sources, generator_cpp_outputs) 436 sources = process_file_template(enabled_sources, generator_cpp_outputs)
387 } 437 }
388 deps = [ 438 deps = [
439 ":$shared_cpp_sources_target_name",
389 "//mojo/public/cpp/bindings:struct_traits", 440 "//mojo/public/cpp/bindings:struct_traits",
390 "//mojo/public/interfaces/bindings:bindings__generator", 441 "//mojo/public/interfaces/bindings:bindings__generator",
391 ] 442 ]
392 if (enabled_sources != []) { 443 if (enabled_sources != []) {
393 deps += [ ":$generator_target_name" ] 444 deps += [ ":$generator_target_name" ]
394 } 445 }
395 public_deps = [ 446 public_deps = [
396 "//base", 447 "//base",
397 ] 448 ]
398 foreach(d, all_deps) { 449 foreach(d, all_deps) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 full_name = get_label_info(d, "label_no_toolchain") 520 full_name = get_label_info(d, "label_no_toolchain")
470 deps += [ "${full_name}_java" ] 521 deps += [ "${full_name}_java" ]
471 } 522 }
472 523
473 srcjar_deps = [ ":$java_srcjar_target_name" ] 524 srcjar_deps = [ ":$java_srcjar_target_name" ]
474 run_findbugs_override = false 525 run_findbugs_override = false
475 } 526 }
476 } 527 }
477 } 528 }
478 } 529 }
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/generators/mojom_cpp_generator.py ('k') | mojo/public/tools/bindings/mojom_bindings_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698