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

Side by Side Diff: sky/engine/bindings2/BUILD.gn

Issue 918333002: Add the c++ code part of bindings2/ (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Updated per earlier reviews Created 5 years, 10 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
« no previous file with comments | « no previous file | sky/engine/bindings2/IDLExtendedAttributes.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import("//sky/engine/bindings2/bindings.gni")
6 import("//sky/engine/core/core.gni")
7
8 source_set("bindings2") {
9 sources = [
10 "builtin.cc",
11 "builtin.h",
12 "builtin_natives.cc",
13 "builtin_natives.h",
14 "builtin_sky.cc",
15 "builtin_sky.h",
16 "dart_callback.cc",
17 "dart_callback.h",
18 "dart_event_listener.cc",
19 "dart_event_listener.h",
20 "exception_messages.cc",
21 "exception_messages.h",
22 "exception_state.cc",
23 "exception_state.h",
24 "exception_state_placeholder.cc",
25 "exception_state_placeholder.h",
26 "mojo_natives.cc",
27 "mojo_natives.h",
28 "nullable.h",
29 "scheduled_action.cc",
30 "scheduled_action.h",
31 ]
32 deps = [
33 "//base",
34 "//dart/runtime/bin:libdart_withcore",
35 "//mojo/public/c/system",
36 "//mojo/public/cpp/system",
37 "//sky/engine/platform:platform",
38 "//sky/engine/tonic",
39 "//sky/engine/wtf",
40 ":generated_bindings",
41 ":snapshot_cc",
42 ]
43 include_dirs = [
44 "..",
45 "$root_build_dir",
46 ]
47 }
48
49 action("generate_snapshot_bin") {
50 deps = [
51 "//dart/runtime/bin:gen_snapshot($host_toolchain)",
52 ":generate_sky_core_dart",
53 ]
54 inputs = [
55 "//dart/runtime/tools/create_snapshot_bin.py",
56 "//sky/engine/bindings2/builtin.dart",
57 "//mojo/public/dart/bindings.dart",
58 "//mojo/public/dart/core.dart",
59 "//mojo/public/dart/src/application.dart",
60 "//mojo/public/dart/src/buffer.dart",
61 "//mojo/public/dart/src/codec.dart",
62 "//mojo/public/dart/src/data_pipe.dart",
63 "//mojo/public/dart/src/drain_data.dart",
64 "//mojo/public/dart/src/event_stream.dart",
65 "//mojo/public/dart/src/handle.dart",
66 "//mojo/public/dart/src/handle_watcher.dart",
67 "//mojo/public/dart/src/message.dart",
68 "//mojo/public/dart/src/message_pipe.dart",
69 "//mojo/public/dart/src/proxy.dart",
70 "//mojo/public/dart/src/service_provider.dart",
71 "//mojo/public/dart/src/struct.dart",
72 "//mojo/public/dart/src/stub.dart",
73 "//mojo/public/dart/src/timer_queue.dart",
74 "//mojo/public/dart/src/types.dart",
75 "snapshot.dart",
76 ]
77 output = "$target_gen_dir/snapshot_gen.bin"
78 outputs = [
79 output,
80 ]
81
82 builtin_path = rebase_path("//sky/engine/bindings2/builtin.dart")
83 sky_core_path = rebase_path("$bindings_output_dir/sky_core.dart")
84 mojo_bindings_path = rebase_path("//mojo/public/dart/bindings.dart")
85 mojo_core_path = rebase_path("//mojo/public/dart/core.dart")
86
87 gen_snapshot_dir =
88 get_label_info("//dart/runtime/bin:gen_snapshot($host_toolchain)",
89 "root_out_dir")
90 script = "//dart/runtime/tools/create_snapshot_bin.py"
91
92 args = [
93 "--executable",
94 rebase_path("$gen_snapshot_dir/gen_snapshot"),
95 "--package_root",
96 rebase_path("$root_gen_dir"),
97 "--script",
98 rebase_path("snapshot.dart"),
99 "--output_bin",
100 rebase_path(output, root_build_dir),
101 "--target_os",
102 os,
103 "--url_mapping=dart:sky,$sky_core_path",
104 "--url_mapping=dart:mojo_bindings,$mojo_bindings_path",
105 "--url_mapping=dart:mojo_core,$mojo_core_path",
106 "--url_mapping=dart:sky_builtin,$builtin_path",
107 ]
108 }
109
110 action("generate_snapshot_file") {
111 deps = [
112 ":generate_snapshot_bin",
113 ]
114 inputs = [
115 "//dart/runtime/tools/create_snapshot_file.py",
116 "snapshot.cc.tmpl",
117 "$target_gen_dir/snapshot_gen.bin",
118 ]
119 output = "$target_gen_dir/snapshot.cc"
120 outputs = [
121 output,
122 ]
123
124 script = "//dart/runtime/tools/create_snapshot_file.py"
125 args = [
126 "--input_bin",
127 rebase_path("$target_gen_dir/snapshot_gen.bin"),
128 "--input_cc",
129 rebase_path("snapshot.cc.tmpl"),
130 "--output",
131 rebase_path(output),
132 ]
133 }
134
135 source_set("snapshot_cc") {
136 sources = [
137 "$target_gen_dir/snapshot.cc",
138 ]
139
140 deps = [
141 ":generate_snapshot_file",
142 ]
143 }
144
145 action("compute_interfaces_info_individual") {
146 sources = core_idl_files + core_dependency_idl_files
147 script = "$bindings_scripts_dir/compute_interfaces_info_individual.py"
148 output_file = "$bindings_output_dir/InterfacesInfoIndividual.pickle"
149
150 # TODO(eseidel): This is no longer needed, could pass these as args.
151 file_list = "$target_gen_dir/${target_name}_file_list.txt"
152 write_file(file_list, rebase_path(sources, root_build_dir))
153
154 # TODO(eseidel): Use depfile instead of this manual list.
155 inputs = [ "$bindings_scripts_dir/utilities.py" ] + sources
156
157 outputs = [
158 file_list,
159 output_file,
160 ]
161
162 args = [
163 # TODO(eseidel): Remove component-dir, it is meaningless in sky.
164 "--component-dir",
165 "ignored",
166 "--idl-files-list",
167 rebase_path(file_list, root_build_dir),
168 "--interfaces-info-file",
169 rebase_path(output_file, root_build_dir),
170
171 # TODO(eseidel): only-if-changed is always true, remove
172 "--write-file-only-if-changed=1",
173 ]
174 }
175
176 interfaces_info_individual_path =
177 "$bindings_output_dir/InterfacesInfoIndividual.pickle"
178
179 interfaces_info_overall_path =
180 "$bindings_output_dir/InterfacesInfoOverall.pickle"
181
182 action("compute_interfaces_info_overall") {
183 script = "$bindings_scripts_dir/compute_interfaces_info_overall.py"
184
185 inputs = [
186 interfaces_info_individual_path,
187 ]
188 outputs = [
189 interfaces_info_overall_path,
190 ]
191
192 args = [
193 # TODO(eseidel): only-if-changed is always true, remove
194 "--write-file-only-if-changed=1",
195 "--",
196 ]
197 args += rebase_path(inputs, root_build_dir)
198 args += rebase_path(outputs, root_build_dir)
199
200 deps = [
201 ":compute_interfaces_info_individual",
202 ]
203 }
204
205 # This separate pre-caching step is required to use lex/parse table
206 # caching in PLY, since PLY itself does not check if the cache is
207 # valid, and thus may end up using a stale cache if this step hasn"t
208 # been run to update it.
209 #
210 # This action"s dependencies *is* the cache validation.
211 #
212 # GYP version: scripts.gyp:cached_lex_yacc_tables
213 action("cached_lex_yacc_tables") {
214 script = "scripts/blink_idl_parser.py"
215
216 inputs = idl_lexer_parser_files
217 outputs = [
218 "$bindings_output_dir/lextab.py",
219 "$bindings_output_dir/parsetab.pickle",
220 ]
221
222 args = [ rebase_path(bindings_output_dir, root_build_dir) ]
223 }
224
225 # Runs the idl_compiler script over a list of sources.
226 #
227 # Parameters:
228 # sources = list of IDL files to compile
229 # output_dir = string containing the directory to put the output files.
230 template("idl_compiler") {
231 output_dir = invoker.output_dir
232
233 action_foreach(target_name) {
234 # TODO(brettw) GYP adds a "-S before the script name to skip "import site" t o
235 # speed up startup. Figure out if we need this and do something similar (not
236 # really expressible in GN now).
237 script = "$bindings_scripts_dir/compiler.py"
238
239 inputs = idl_lexer_parser_files + idl_compiler_files
240 inputs += [
241 "scripts/templates/attributes_cpp.template",
242 "scripts/templates/callback_interface_cpp.template",
243 "scripts/templates/callback_interface_dart.template",
244 "scripts/templates/callback_interface_h.template",
245 "scripts/templates/interface_base_cpp.template",
246 "scripts/templates/interface_cpp.template",
247 "scripts/templates/interface_dart.template",
248 "scripts/templates/interface_h.template",
249 "scripts/templates/methods_cpp.template",
250 ]
251 inputs += [
252 "$bindings_output_dir/lextab.py",
253 "$bindings_output_dir/parsetab.pickle",
254
255 # "$bindings_output_dir/cached_jinja_templates.stamp",
256 "//sky/engine/bindings2/IDLExtendedAttributes.txt",
257
258 # If the dependency structure or public interface info (e.g.,
259 # [ImplementedAs]) changes, we rebuild all files, since we"re not
260 # computing dependencies file-by-file in the build.
261 # This data is generally stable.
262 interfaces_info_overall_path,
263 ]
264
265 # Further, if any dependency (partial interface or implemented
266 # interface) changes, rebuild everything, since every IDL potentially
267 # depends on them, because we"re not computing dependencies
268 # file-by-file.
269 # FIXME: This is too conservative, and causes excess rebuilds:
270 # compute this file-by-file. http://crbug.com/341748
271 # This should theoretically just be the IDL files passed in.
272 inputs += core_dependency_idl_files
273
274 sources = invoker.sources
275 outputs = [
276 "$output_dir/Dart{{source_name_part}}.cpp",
277 "$output_dir/Dart{{source_name_part}}.h",
278 "$output_dir/{{source_name_part}}.dart",
279 ]
280
281 args = [
282 "--output-dir",
283 rebase_path(output_dir, root_build_dir),
284 "--interfaces-info",
285 rebase_path(interfaces_info_overall_path, root_build_dir),
286 "--write-file-only-if-changed=1", # Always true for Ninja.
287 "{{source}}",
288 ]
289
290 deps = [
291 ":compute_interfaces_info_overall",
292 ":cached_lex_yacc_tables",
293
294 # ":cached_jinja_templates",
295 ]
296 }
297 }
298
299 idl_compiler("compile_idls") {
300 sources = core_idl_files
301 output_dir = bindings_output_dir
302 }
303
304 action("generate_dart_globals") {
305 sources = core_idl_files
306 script = "$bindings_scripts_dir/compiler.py"
307
308 file_list = "$target_gen_dir/${target_name}_file_list.txt"
309 write_file(file_list, rebase_path(sources, root_build_dir))
310
311 inputs = sources + idl_compiler_files
312 inputs += [
313 "scripts/templates/global_cpp.template",
314 "scripts/templates/global_h.template",
315 ]
316
317 outputs = [
318 file_list,
319 "$bindings_output_dir/DartGlobal.h",
320 "$bindings_output_dir/DartGlobal.cpp",
321 ]
322
323 args = [
324 "--output-directory",
325 rebase_path(bindings_output_dir, root_build_dir),
326 "--generate-globals",
327 rebase_path(bindings_output_dir, root_build_dir),
328 rebase_path(file_list, root_build_dir),
329 ]
330
331 deps = [
332 ":compile_idls",
333 ]
334 }
335
336 action("generate_sky_core_dart") {
337 sources = core_idl_files
338 script = "$bindings_scripts_dir/compiler.py"
339
340 file_list = "$target_gen_dir/${target_name}_file_list.txt"
341 write_file(file_list, rebase_path(sources, root_build_dir))
342
343 inputs =
344 sources + idl_compiler_files + [ "scripts/templates/dart_blink.template" ]
345
346 outputs = [
347 file_list,
348 "$bindings_output_dir/sky_core.dart",
349 ]
350
351 args = [
352 "--output-directory",
353 rebase_path(bindings_output_dir, root_build_dir),
354 "--generate-dart-blink",
355 rebase_path(bindings_output_dir, root_build_dir),
356 rebase_path(file_list, root_build_dir),
357 ]
358
359 deps = [
360 ":compile_idls",
361 ]
362 }
363
364 source_set("generated_bindings") {
365 deps = [
366 "//base",
367 "//dart/runtime/bin:libdart_withcore",
368 "//gpu/command_buffer/client:gles2_c_lib",
369 "//mojo/application",
370 "//mojo/common",
371 "//mojo/edk/js",
372 "//mojo/public/c/system",
373 "//mojo/public/cpp/bindings",
374 "//mojo/public/cpp/system",
375 "//mojo/public/cpp/utility",
376 "//mojo/public/interfaces/application",
377 "//mojo/services/keyboard/public/interfaces",
378 "//mojo/services/navigation/public/interfaces",
379 "//mojo/services/view_manager/public/cpp",
380 "//skia",
381 "//sky/engine/wtf",
382 "//third_party/angle:translator",
383 "//third_party/iccjpeg",
384 "//third_party/libpng",
385 "//third_party/ots",
386 "//third_party/qcms",
387 "//third_party/zlib",
388 "//url",
389 ":generate_dart_globals",
390 ]
391
392 include_dirs = [
393 "..",
394 "$root_build_dir",
395 ]
396
397 sources = get_target_outputs(":compile_idls")
398 sources += get_target_outputs(":generate_dart_globals")
399 }
OLDNEW
« no previous file with comments | « no previous file | sky/engine/bindings2/IDLExtendedAttributes.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698