| OLD | NEW |
| 1 # | 1 # |
| 2 # Copyright (C) 2013 Google Inc. All rights reserved. | 2 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 # | 3 # |
| 4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
| 5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
| 6 # met: | 6 # met: |
| 7 # | 7 # |
| 8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
| 9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
| 10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 'includes': [ | 37 'includes': [ |
| 38 '../build/scripts/scripts.gypi', | 38 '../build/scripts/scripts.gypi', |
| 39 '../build/win/precompile.gypi', | 39 '../build/win/precompile.gypi', |
| 40 '../build/scripts/scripts.gypi', | 40 '../build/scripts/scripts.gypi', |
| 41 '../core/core.gypi', | 41 '../core/core.gypi', |
| 42 '../modules/modules.gypi', | 42 '../modules/modules.gypi', |
| 43 'bindings.gypi', | 43 'bindings.gypi', |
| 44 ], | 44 ], |
| 45 | 45 |
| 46 'variables': { | 46 'variables': { |
| 47 # For details, see: http://www.chromium.org/developers/web-idl-interfaces | 47 # IDL file lists; see: http://www.chromium.org/developers/web-idl-interfaces |
| 48 # | 48 # |
| 49 # Interface IDL files / Dependency IDL files | 49 # Interface IDL files / Dependency IDL files |
| 50 # Interface IDL files: generate individual bindings (includes testing) | 50 # Interface IDL files: generate individual bindings (includes testing) |
| 51 'interface_idl_files': [ | 51 'interface_idl_files': [ |
| 52 '<@(static_interface_idl_files)', | 52 '<@(static_interface_idl_files)', |
| 53 '<@(generated_interface_idl_files)', | 53 '<@(generated_interface_idl_files)', |
| 54 ], | 54 ], |
| 55 # Dependency IDL files: don't generate individual bindings, but do process | 55 # Dependency IDL files: don't generate individual bindings, but do process |
| 56 # in IDL dependency computation, and count as build dependencies | 56 # in IDL dependency computation, and count as build dependencies |
| 57 'dependency_idl_files': [ | 57 'dependency_idl_files': [ |
| 58 '<@(static_dependency_idl_files)', | 58 '<@(static_dependency_idl_files)', |
| 59 '<@(generated_dependency_idl_files)', | 59 '<@(generated_dependency_idl_files)', |
| 60 ], | 60 ], |
| 61 # Main interface IDL files (excluding dependencies and testing) | 61 # Main interface IDL files (excluding dependencies and testing) |
| 62 # are included as properties on global objects, and in aggregate bindings | 62 # are included as properties on global objects, and in aggregate bindings |
| 63 'main_interface_idl_files': [ | 63 'main_interface_idl_files': [ |
| 64 '<@(core_idl_files)', | 64 '<@(core_idl_files)', |
| 65 '<@(modules_idl_files)', | 65 '<@(modules_idl_files)', |
| 66 ], | 66 ], |
| 67 # Write list of main IDL files to a file, so that the command line doesn't |
| 68 # exceed OS length limits. |
| 69 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp <@(ma
in_interface_idl_files))', |
| 67 | 70 |
| 68 # Static IDL files / Generated IDL files | 71 # Static IDL files / Generated IDL files |
| 69 # Paths need to be passed separately for static and generated files, as | 72 # Paths need to be passed separately for static and generated files, as |
| 70 # static files are listed in a temporary file (b/c too long for command | 73 # static files are listed in a temporary file (b/c too long for command |
| 71 # line), but generated files must be passed at the command line, as they are | 74 # line), but generated files must be passed at the command line, as their |
| 72 # not present at GYP time, when the temporary file is generated | 75 # paths are not fixed at GYP time, when the temporary file is generated, |
| 76 # because their paths depend on the build directory, which varies. |
| 73 'static_idl_files': [ | 77 'static_idl_files': [ |
| 74 '<@(static_interface_idl_files)', | 78 '<@(static_interface_idl_files)', |
| 75 '<@(static_dependency_idl_files)', | 79 '<@(static_dependency_idl_files)', |
| 76 ], | 80 ], |
| 81 'static_idl_files_list': '<|(static_idl_files_list.tmp <@(static_idl_files))
', |
| 77 'generated_idl_files': [ | 82 'generated_idl_files': [ |
| 78 '<@(generated_interface_idl_files)', | 83 '<@(generated_interface_idl_files)', |
| 79 '<@(generated_dependency_idl_files)', | 84 '<@(generated_dependency_idl_files)', |
| 80 ], | 85 ], |
| 81 | 86 |
| 82 # Static IDL files | 87 # Static IDL files |
| 83 'static_interface_idl_files': [ | 88 'static_interface_idl_files': [ |
| 84 '<@(core_idl_files)', | 89 '<@(core_idl_files)', |
| 85 '<@(webcore_testing_idl_files)', | 90 '<@(webcore_testing_idl_files)', |
| 86 '<@(modules_idl_files)', | 91 '<@(modules_idl_files)', |
| (...skipping 13 matching lines...) Expand all Loading... |
| 100 ], | 105 ], |
| 101 | 106 |
| 102 'generated_global_constructors_idl_files': [ | 107 'generated_global_constructors_idl_files': [ |
| 103 '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', | 108 '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
| 104 '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', | 109 '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
| 105 '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl'
, | 110 '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl'
, |
| 106 '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.i
dl', | 111 '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.i
dl', |
| 107 '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', | 112 '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
| 108 ], | 113 ], |
| 109 | 114 |
| 115 |
| 110 # Python source | 116 # Python source |
| 111 'jinja_module_files': [ | 117 'jinja_module_files': [ |
| 112 # jinja2/__init__.py contains version string, so sufficient for package | 118 # jinja2/__init__.py contains version string, so sufficient for package |
| 113 '<(DEPTH)/third_party/jinja2/__init__.py', | 119 '<(DEPTH)/third_party/jinja2/__init__.py', |
| 114 '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep | 120 '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep |
| 115 ], | 121 ], |
| 116 'idl_compiler_files': [ | 122 'idl_compiler_files': [ |
| 117 'scripts/idl_compiler.py', | 123 'scripts/idl_compiler.py', |
| 118 # PLY (Python Lex-Yacc) | 124 # PLY (Python Lex-Yacc) |
| 119 '<(DEPTH)/third_party/ply/lex.py', | 125 '<(DEPTH)/third_party/ply/lex.py', |
| (...skipping 25 matching lines...) Expand all Loading... |
| 145 'code_generator_template_files': [ | 151 'code_generator_template_files': [ |
| 146 'templates/attributes.cpp', | 152 'templates/attributes.cpp', |
| 147 'templates/callback_interface.cpp', | 153 'templates/callback_interface.cpp', |
| 148 'templates/callback_interface.h', | 154 'templates/callback_interface.h', |
| 149 'templates/interface_base.cpp', | 155 'templates/interface_base.cpp', |
| 150 'templates/interface.cpp', | 156 'templates/interface.cpp', |
| 151 'templates/interface.h', | 157 'templates/interface.h', |
| 152 'templates/methods.cpp', | 158 'templates/methods.cpp', |
| 153 ], | 159 ], |
| 154 | 160 |
| 161 |
| 155 'bindings_output_dir': '<(SHARED_INTERMEDIATE_DIR)/blink/bindings', | 162 'bindings_output_dir': '<(SHARED_INTERMEDIATE_DIR)/blink/bindings', |
| 156 | 163 |
| 157 'conditions': [ | 164 'conditions': [ |
| 158 # The bindings generator can skip writing generated files if they are | 165 # The bindings generator can skip writing generated files if they are |
| 159 # identical to the already existing file, which avoids recompilation. | 166 # identical to the already existing file, which avoids recompilation. |
| 160 # However, a dependency (earlier build step) having a newer timestamp than | 167 # However, a dependency (earlier build step) having a newer timestamp than |
| 161 # an output (later build step) confuses some build systems, so only use | 168 # an output (later build step) confuses some build systems, so only use |
| 162 # this on ninja, which explicitly supports this use case (gyp turns all | 169 # this on ninja, which explicitly supports this use case (gyp turns all |
| 163 # actions into ninja restat rules). | 170 # actions into ninja restat rules). |
| 164 ['"<(GENERATOR)"=="ninja"', { | 171 ['"<(GENERATOR)"=="ninja"', { |
| 165 'write_file_only_if_changed': '--write-file-only-if-changed 1', | 172 'write_file_only_if_changed': '--write-file-only-if-changed 1', |
| 166 }, { | 173 }, { |
| 167 'write_file_only_if_changed': '--write-file-only-if-changed 0', | 174 'write_file_only_if_changed': '--write-file-only-if-changed 0', |
| 168 }], | 175 }], |
| 169 ], | 176 ], |
| 170 }, | 177 }, |
| 171 | 178 |
| 172 'targets': [{ | 179 'targets': [ |
| 180 ################################################################################ |
| 181 { |
| 173 'target_name': 'global_constructors_idls', | 182 'target_name': 'global_constructors_idls', |
| 174 'type': 'none', | 183 'type': 'none', |
| 175 'actions': [{ | 184 'actions': [{ |
| 176 'action_name': 'generate_global_constructors_idls', | 185 'action_name': 'generate_global_constructors_idls', |
| 177 'variables': { | |
| 178 # Write list of IDL files to a file, so that the command line doesn't | |
| 179 # exceed OS length limits. | |
| 180 # Only includes main IDL files (exclude dependencies and testing, | |
| 181 # which should not appear on global objects). | |
| 182 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp <
@(main_interface_idl_files))', | |
| 183 }, | |
| 184 'inputs': [ | 186 'inputs': [ |
| 185 'scripts/generate_global_constructors.py', | 187 'scripts/generate_global_constructors.py', |
| 186 'scripts/utilities.py', | 188 'scripts/utilities.py', |
| 189 # Only includes main IDL files (exclude dependencies and testing, |
| 190 # which should not appear on global objects). |
| 187 '<(main_interface_idl_files_list)', | 191 '<(main_interface_idl_files_list)', |
| 188 '<@(main_interface_idl_files)', | 192 '<@(main_interface_idl_files)', |
| 189 ], | 193 ], |
| 190 'outputs': [ | 194 'outputs': [ |
| 191 '<@(generated_global_constructors_idl_files)', | 195 '<@(generated_global_constructors_idl_files)', |
| 192 ], | 196 ], |
| 193 'action': [ | 197 'action': [ |
| 194 'python', | 198 'python', |
| 195 'scripts/generate_global_constructors.py', | 199 'scripts/generate_global_constructors.py', |
| 196 '--idl-files-list', | 200 '--idl-files-list', |
| 197 '<(main_interface_idl_files_list)', | 201 '<(main_interface_idl_files_list)', |
| 198 '<@(write_file_only_if_changed)', | 202 '<@(write_file_only_if_changed)', |
| 199 '--', | 203 '--', |
| 200 'Window', | 204 'Window', |
| 201 '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', | 205 '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
| 202 'WorkerGlobalScope', | 206 'WorkerGlobalScope', |
| 203 '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', | 207 '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
| 204 'SharedWorkerGlobalScope', | 208 'SharedWorkerGlobalScope', |
| 205 '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.id
l', | 209 '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.id
l', |
| 206 'DedicatedWorkerGlobalScope', | 210 'DedicatedWorkerGlobalScope', |
| 207 '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors
.idl', | 211 '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors
.idl', |
| 208 'ServiceWorkerGlobalScope', | 212 'ServiceWorkerGlobalScope', |
| 209 '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', | 213 '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
| 210 ], | 214 ], |
| 211 'message': 'Generating IDL files for constructors on global objects', | 215 'message': 'Generating IDL files for constructors on global objects', |
| 212 }] | 216 }] |
| 213 }, | 217 }, |
| 218 ################################################################################ |
| 214 { | 219 { |
| 215 'target_name': 'interfaces_info', | 220 'target_name': 'interfaces_info', |
| 216 'type': 'none', | 221 'type': 'none', |
| 217 'dependencies': [ | 222 'dependencies': [ |
| 223 # Generated IDLs |
| 218 'global_constructors_idls', | 224 'global_constructors_idls', |
| 219 '../core/core_generated.gyp:generated_testing_idls', | 225 '../core/core_generated.gyp:generated_testing_idls', |
| 220 ], | 226 ], |
| 221 'actions': [{ | 227 'actions': [{ |
| 222 'action_name': 'compute_interfaces_info', | 228 'action_name': 'compute_interfaces_info', |
| 223 'variables': { | |
| 224 # Write list of static IDL files to a file, so that the command line | |
| 225 # doesn't exceed OS length limits. | |
| 226 # Generated IDL files cannot be included, as their path depends on the | |
| 227 # build directory, and must instead be passed as command line arguments. | |
| 228 'idl_files_list': '<|(idl_files_list.tmp <@(static_idl_files))', | |
| 229 }, | |
| 230 'inputs': [ | 229 'inputs': [ |
| 231 'scripts/compute_interfaces_info.py', | 230 'scripts/compute_interfaces_info.py', |
| 232 'scripts/utilities.py', | 231 'scripts/utilities.py', |
| 233 '<(idl_files_list)', | 232 '<(static_idl_files_list)', |
| 234 '<@(static_idl_files)', | 233 '<@(static_idl_files)', |
| 235 '<@(generated_idl_files)', | 234 '<@(generated_idl_files)', |
| 236 ], | 235 ], |
| 237 'outputs': [ | 236 'outputs': [ |
| 238 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', | 237 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
| 239 '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', | 238 '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
| 240 ], | 239 ], |
| 241 'action': [ | 240 'action': [ |
| 242 'python', | 241 'python', |
| 243 'scripts/compute_interfaces_info.py', | 242 'scripts/compute_interfaces_info.py', |
| 244 '--idl-files-list', | 243 '--idl-files-list', |
| 245 '<(idl_files_list)', | 244 '<(static_idl_files_list)', |
| 246 '--interfaces-info-file', | 245 '--interfaces-info-file', |
| 247 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', | 246 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
| 248 '--event-names-file', | 247 '--event-names-file', |
| 249 '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', | 248 '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
| 250 '<@(write_file_only_if_changed)', | 249 '<@(write_file_only_if_changed)', |
| 251 '--', | 250 '--', |
| 251 # Generated files must be passed at command line |
| 252 '<@(generated_idl_files)', | 252 '<@(generated_idl_files)', |
| 253 ], | 253 ], |
| 254 'message': 'Computing global information about IDL files, and generating l
ist of Event interfaces', | 254 'message': 'Computing global information about IDL files, and generating l
ist of Event interfaces', |
| 255 }] | 255 }] |
| 256 }, | 256 }, |
| 257 { | 257 ################################################################################ |
| 258 # A separate pre-caching step is *required* to use bytecode caching in | 258 { |
| 259 # Jinja (which improves speed significantly), as the bytecode cache is | 259 # A separate pre-caching step is *required* to use bytecode caching in |
| 260 # not concurrency-safe on write; details in code_generator_v8.py. | 260 # Jinja (which improves speed significantly), as the bytecode cache is |
| 261 'target_name': 'cached_jinja_templates', | 261 # not concurrency-safe on write; details in code_generator_v8.py. |
| 262 'type': 'none', | 262 'target_name': 'cached_jinja_templates', |
| 263 'actions': [{ | 263 'type': 'none', |
| 264 'action_name': 'cache_jinja_templates', | 264 'actions': [{ |
| 265 'inputs': [ | 265 'action_name': 'cache_jinja_templates', |
| 266 '<@(jinja_module_files)', | 266 'inputs': [ |
| 267 'scripts/code_generator_v8.py', | 267 '<@(jinja_module_files)', |
| 268 '<@(code_generator_template_files)', | 268 'scripts/code_generator_v8.py', |
| 269 ], | 269 '<@(code_generator_template_files)', |
| 270 'outputs': [ | |
| 271 '<(bindings_output_dir)/cached_jinja_templates.stamp', # Dummy to tra
ck dependency | |
| 272 ], | |
| 273 'action': [ | |
| 274 'python', | |
| 275 'scripts/code_generator_v8.py', | |
| 276 '<(bindings_output_dir)', | |
| 277 '<(bindings_output_dir)/cached_jinja_templates.stamp', | |
| 278 ], | |
| 279 'message': 'Caching bytecode of Jinja templates', | |
| 280 }], | |
| 281 }, | |
| 282 { | |
| 283 'target_name': 'individual_generated_bindings', | |
| 284 'type': 'none', | |
| 285 # The 'binding' rule generates .h files, so mark as hard_dependency, per: | |
| 286 # https://code.google.com/p/gyp/wiki/InputFormatReference#Linking_Dependen
cies | |
| 287 'hard_dependency': 1, | |
| 288 'dependencies': [ | |
| 289 'interfaces_info', | |
| 290 'cached_jinja_templates', | |
| 291 '../core/core_generated.gyp:generated_testing_idls', | |
| 292 ], | 270 ], |
| 293 'sources': [ | 271 'outputs': [ |
| 294 '<@(interface_idl_files)', | 272 '<(bindings_output_dir)/cached_jinja_templates.stamp', # Dummy to track
dependency |
| 295 ], | 273 ], |
| 296 'rules': [{ | 274 'action': [ |
| 297 'rule_name': 'binding', | 275 'python', |
| 298 'extension': 'idl', | 276 'scripts/code_generator_v8.py', |
| 299 'msvs_external_rule': 1, | 277 '<(bindings_output_dir)', |
| 300 'inputs': [ | 278 '<(bindings_output_dir)/cached_jinja_templates.stamp', |
| 301 '<@(idl_compiler_files)', | |
| 302 '<(bindings_output_dir)/cached_jinja_templates.stamp', | |
| 303 'IDLExtendedAttributes.txt', | |
| 304 # If the dependency structure or public interface info (e.g., | |
| 305 # [ImplementedAs]) changes, we rebuild all files, since we're not | |
| 306 # computing dependencies file-by-file in the build. | |
| 307 # This data is generally stable. | |
| 308 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', | |
| 309 # Further, if any dependency (partial interface or implemented | |
| 310 # interface) changes, rebuild everything, since every IDL potentially | |
| 311 # depends on them, because we're not computing dependencies | |
| 312 # file-by-file. | |
| 313 # FIXME: This is too conservative, and causes excess rebuilds: | |
| 314 # compute this file-by-file. http://crbug.com/341748 | |
| 315 '<@(dependency_idl_files)', | |
| 316 ], | |
| 317 'outputs': [ | |
| 318 '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).cpp', | |
| 319 '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).h', | |
| 320 ], | |
| 321 # sanitize-win-build-log.sed uses a regex which matches this command | |
| 322 # line (Python script + .idl file being processed). | |
| 323 # Update that regex if command line changes (other than changing flags) | |
| 324 'action': [ | |
| 325 'python', | |
| 326 'scripts/idl_compiler.py', | |
| 327 '--output-dir', | |
| 328 '<(bindings_output_dir)', | |
| 329 '--idl-attributes-file', | |
| 330 'IDLExtendedAttributes.txt', | |
| 331 '--interfaces-info', | |
| 332 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', | |
| 333 '<@(write_file_only_if_changed)', | |
| 334 '<(RULE_INPUT_PATH)', | |
| 335 ], | |
| 336 'message': 'Generating binding from <(RULE_INPUT_PATH)', | |
| 337 }], | |
| 338 }, | |
| 339 { | |
| 340 'target_name': 'aggregate_generated_bindings', | |
| 341 'type': 'none', | |
| 342 'actions': [{ | |
| 343 'action_name': 'generate_aggregate_generated_bindings', | |
| 344 'variables': { | |
| 345 # Write list of IDL files to a file, so that the command line doesn't | |
| 346 # exceed OS length limits. | |
| 347 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp
<@(main_interface_idl_files))', | |
| 348 }, | |
| 349 'inputs': [ | |
| 350 'scripts/aggregate_generated_bindings.py', | |
| 351 '<(main_interface_idl_files_list)', | |
| 352 ], | |
| 353 'outputs': [ | |
| 354 '<@(aggregate_generated_bindings_files)', | |
| 355 ], | |
| 356 'action': [ | |
| 357 'python', | |
| 358 'scripts/aggregate_generated_bindings.py', | |
| 359 '<(main_interface_idl_files_list)', | |
| 360 '--', | |
| 361 '<@(aggregate_generated_bindings_files)', | |
| 362 ], | |
| 363 'message': 'Generating aggregate generated bindings files', | |
| 364 }], | |
| 365 }, | |
| 366 { | |
| 367 'target_name': 'generated_bindings', | |
| 368 'type': 'none', | |
| 369 'dependencies': [ | |
| 370 'aggregate_generated_bindings', | |
| 371 'individual_generated_bindings', | |
| 372 ], | 279 ], |
| 373 }, | 280 'message': 'Caching bytecode of Jinja templates', |
| 374 ], | 281 }], |
| 282 }, |
| 283 ################################################################################ |
| 284 { |
| 285 'target_name': 'individual_generated_bindings', |
| 286 'type': 'none', |
| 287 # The 'binding' rule generates .h files, so mark as hard_dependency, per: |
| 288 # https://code.google.com/p/gyp/wiki/InputFormatReference#Linking_Dependenci
es |
| 289 'hard_dependency': 1, |
| 290 'dependencies': [ |
| 291 'interfaces_info', |
| 292 'cached_jinja_templates', |
| 293 '../core/core_generated.gyp:generated_testing_idls', |
| 294 ], |
| 295 'sources': [ |
| 296 '<@(interface_idl_files)', |
| 297 ], |
| 298 'rules': [{ |
| 299 'rule_name': 'binding', |
| 300 'extension': 'idl', |
| 301 'msvs_external_rule': 1, |
| 302 'inputs': [ |
| 303 '<@(idl_compiler_files)', |
| 304 '<(bindings_output_dir)/cached_jinja_templates.stamp', |
| 305 'IDLExtendedAttributes.txt', |
| 306 # If the dependency structure or public interface info (e.g., |
| 307 # [ImplementedAs]) changes, we rebuild all files, since we're not |
| 308 # computing dependencies file-by-file in the build. |
| 309 # This data is generally stable. |
| 310 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
| 311 # Further, if any dependency (partial interface or implemented |
| 312 # interface) changes, rebuild everything, since every IDL potentially |
| 313 # depends on them, because we're not computing dependencies |
| 314 # file-by-file. |
| 315 # FIXME: This is too conservative, and causes excess rebuilds: |
| 316 # compute this file-by-file. http://crbug.com/341748 |
| 317 '<@(dependency_idl_files)', |
| 318 ], |
| 319 'outputs': [ |
| 320 '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).cpp', |
| 321 '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).h', |
| 322 ], |
| 323 # sanitize-win-build-log.sed uses a regex which matches this command |
| 324 # line (Python script + .idl file being processed). |
| 325 # Update that regex if command line changes (other than changing flags) |
| 326 'action': [ |
| 327 'python', |
| 328 'scripts/idl_compiler.py', |
| 329 '--output-dir', |
| 330 '<(bindings_output_dir)', |
| 331 '--idl-attributes-file', |
| 332 'IDLExtendedAttributes.txt', |
| 333 '--interfaces-info', |
| 334 '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
| 335 '<@(write_file_only_if_changed)', |
| 336 '<(RULE_INPUT_PATH)', |
| 337 ], |
| 338 'message': 'Generating binding from <(RULE_INPUT_PATH)', |
| 339 }], |
| 340 }, |
| 341 ################################################################################ |
| 342 { |
| 343 'target_name': 'aggregate_generated_bindings', |
| 344 'type': 'none', |
| 345 'actions': [{ |
| 346 'action_name': 'generate_aggregate_generated_bindings', |
| 347 'inputs': [ |
| 348 'scripts/aggregate_generated_bindings.py', |
| 349 # Only includes main IDL files (exclude dependencies and testing, |
| 350 # for which bindings are not included in aggregate bindings). |
| 351 '<(main_interface_idl_files_list)', |
| 352 ], |
| 353 'outputs': [ |
| 354 '<@(aggregate_generated_bindings_files)', |
| 355 ], |
| 356 'action': [ |
| 357 'python', |
| 358 'scripts/aggregate_generated_bindings.py', |
| 359 '<(main_interface_idl_files_list)', |
| 360 '--', |
| 361 '<@(aggregate_generated_bindings_files)', |
| 362 ], |
| 363 'message': 'Generating aggregate generated bindings files', |
| 364 }], |
| 365 }, |
| 366 ################################################################################ |
| 367 { |
| 368 'target_name': 'generated_bindings', |
| 369 'type': 'none', |
| 370 'dependencies': [ |
| 371 'aggregate_generated_bindings', |
| 372 'individual_generated_bindings', |
| 373 ], |
| 374 }, |
| 375 ################################################################################ |
| 376 ], # targets |
| 375 } | 377 } |
| OLD | NEW |