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 3 # found in the LICENSE file. 4 5 # Pre-caching steps used internally by the IDL compiler 6 # 7 # Design doc: http://www.chromium.org/developers/design-documents/idl-build 8 9 { 10 'includes': [ 11 'scripts.gypi', 12 '../bindings.gypi', 13 '../templates/templates.gypi', 14 ], 15 16 'targets': [ 17 ################################################################################ 18 { 19 # This separate pre-caching step is required to use lex/parse table caching 20 # in PLY, since PLY itself does not check if the cache is valid, and may end 21 # up using a stale cache if this step hasn't been run to update it. 22 # 23 # This action's dependencies *is* the cache validation. 24 # 25 # GN version: //third_party/WebKit/Source/bindings/scripts:cached_lex_yacc_tables 26 'target_name': 'cached_lex_yacc_tables', 27 'type': 'none', 28 'actions': [{ 29 'action_name': 'cache_lex_yacc_tables', 30 'inputs': [ 31 '<@(idl_lexer_parser_files)', 32 ], 33 'outputs': [ 34 '<(bindings_scripts_output_dir)/lextab.py', 35 '<(bindings_scripts_output_dir)/parsetab.pickle', 36 ], 37 'action': [ 38 'python', 39 'blink_idl_parser.py', 40 '<(bindings_scripts_output_dir)', 41 ], 42 'message': 'Caching PLY lex & yacc lex/parse tables', 43 }], 44 }, 45 ################################################################################ 46 { 47 # A separate pre-caching step is *required* to use bytecode caching in 48 # Jinja (which improves speed significantly), as the bytecode cache is 49 # not concurrency-safe on write; details in code_generator_v8.py. 50 # 51 # GN version: //third_party/WebKit/Source/bindings/scripts:cached_jinja_templates 52 'target_name': 'cached_jinja_templates', 53 'type': 'none', 54 'actions': [{ 55 'action_name': 'cache_jinja_templates', 56 'inputs': [ 57 '<@(jinja_module_files)', 58 'code_generator_v8.py', 59 '<@(code_generator_template_files)', 60 ], 61 'outputs': [ 62 '<(bindings_scripts_output_dir)/cached_jinja_templates.stamp', # Dummy to track dependency 63 ], 64 'action': [ 65 'python', 66 'code_generator_v8.py', 67 '<(bindings_scripts_output_dir)', 68 '<(bindings_scripts_output_dir)/cached_jinja_templates.stamp', 69 ], 70 'message': 'Caching bytecode of Jinja templates', 71 }], 72 }, 73 ################################################################################ 74 ], # targets 75 } 76