OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 """This is the entry point to create Dart APIs from the IDL database.""" | 6 """This is the entry point to create Dart APIs from the IDL database.""" |
7 | 7 |
8 import css_code_generator | 8 import css_code_generator |
9 import dartgenerator | 9 import dartgenerator |
10 import database | 10 import database |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 def LoadDatabase(database_dir, use_database_cache): | 45 def LoadDatabase(database_dir, use_database_cache): |
46 common_database = database.Database(database_dir) | 46 common_database = database.Database(database_dir) |
47 if use_database_cache: | 47 if use_database_cache: |
48 common_database.LoadFromCache() | 48 common_database.LoadFromCache() |
49 else: | 49 else: |
50 common_database.Load() | 50 common_database.Load() |
51 return common_database | 51 return common_database |
52 | 52 |
53 def GenerateFromDatabase(common_database, dart2js_output_dir, | 53 def GenerateFromDatabase(common_database, dart2js_output_dir, |
54 dartium_output_dir, update_dom_metadata=False, | 54 dartium_output_dir, update_dom_metadata=False): |
55 dart_use_blink=False): | |
56 current_dir = os.path.dirname(__file__) | 55 current_dir = os.path.dirname(__file__) |
57 auxiliary_dir = os.path.join(current_dir, '..', 'src') | 56 auxiliary_dir = os.path.join(current_dir, '..', 'src') |
58 template_dir = os.path.join(current_dir, '..', 'templates') | 57 template_dir = os.path.join(current_dir, '..', 'templates') |
59 | 58 |
60 generator = dartgenerator.DartGenerator() | 59 generator = dartgenerator.DartGenerator() |
61 generator.LoadAuxiliary(auxiliary_dir) | 60 generator.LoadAuxiliary(auxiliary_dir) |
62 | 61 |
63 generator.FilterMembersWithUnidentifiedTypes(common_database) | 62 generator.FilterMembersWithUnidentifiedTypes(common_database) |
64 webkit_database = common_database.Clone() | 63 webkit_database = common_database.Clone() |
65 | 64 |
(...skipping 29 matching lines...) Expand all Loading... |
95 interface_generator.Generate() | 94 interface_generator.Generate() |
96 | 95 |
97 generator.Generate(webkit_database, common_database, generate_interface) | 96 generator.Generate(webkit_database, common_database, generate_interface) |
98 | 97 |
99 dart_library_emitter.EmitLibraries(auxiliary_dir) | 98 dart_library_emitter.EmitLibraries(auxiliary_dir) |
100 | 99 |
101 if dart2js_output_dir: | 100 if dart2js_output_dir: |
102 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] | 101 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] |
103 template_loader = TemplateLoader(template_dir, | 102 template_loader = TemplateLoader(template_dir, |
104 template_paths, | 103 template_paths, |
105 {'DARTIUM': False, 'DART2JS': True, | 104 {'DARTIUM': False, 'DART2JS': True}) |
106 'DART_USE_BLINK' : False}) | |
107 backend_options = GeneratorOptions( | 105 backend_options = GeneratorOptions( |
108 template_loader, webkit_database, type_registry, renamer, | 106 template_loader, webkit_database, type_registry, renamer, |
109 metadata) | 107 metadata) |
110 backend_factory = lambda interface:\ | 108 backend_factory = lambda interface:\ |
111 Dart2JSBackend(interface, backend_options) | 109 Dart2JSBackend(interface, backend_options) |
112 | 110 |
113 dart_output_dir = os.path.join(dart2js_output_dir, 'dart') | 111 dart_output_dir = os.path.join(dart2js_output_dir, 'dart') |
114 dart_libraries = DartLibraries( | 112 dart_libraries = DartLibraries( |
115 HTML_LIBRARY_NAMES, template_loader, 'dart2js', dart2js_output_dir) | 113 HTML_LIBRARY_NAMES, template_loader, 'dart2js', dart2js_output_dir) |
116 | 114 |
117 RunGenerator(dart_libraries, dart_output_dir, | 115 RunGenerator(dart_libraries, dart_output_dir, |
118 template_loader, backend_factory) | 116 template_loader, backend_factory) |
119 | 117 |
120 if dartium_output_dir: | 118 if dartium_output_dir: |
121 template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] | 119 template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] |
122 template_loader = TemplateLoader(template_dir, | 120 template_loader = TemplateLoader(template_dir, |
123 template_paths, | 121 template_paths, |
124 {'DARTIUM': True, 'DART2JS': False, | 122 {'DARTIUM': True, 'DART2JS': False}) |
125 'DART_USE_BLINK' : dart_use_blink}) | |
126 backend_options = GeneratorOptions( | 123 backend_options = GeneratorOptions( |
127 template_loader, webkit_database, type_registry, renamer, | 124 template_loader, webkit_database, type_registry, renamer, |
128 metadata) | 125 metadata) |
129 cpp_output_dir = os.path.join(dartium_output_dir, 'cpp') | 126 cpp_output_dir = os.path.join(dartium_output_dir, 'cpp') |
130 cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir) | 127 cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir) |
131 dart_output_dir = os.path.join(dartium_output_dir, 'dart') | 128 dart_output_dir = os.path.join(dartium_output_dir, 'dart') |
132 native_library_emitter = \ | 129 native_library_emitter = \ |
133 GetNativeLibraryEmitter(emitters, template_loader, | 130 GetNativeLibraryEmitter(emitters, template_loader, |
134 dartium_output_dir, dart_output_dir, | 131 dartium_output_dir, dart_output_dir, |
135 auxiliary_dir) | 132 auxiliary_dir) |
136 backend_factory = lambda interface:\ | 133 backend_factory = lambda interface:\ |
137 DartiumBackend(interface, native_library_emitter, | 134 DartiumBackend(interface, native_library_emitter, |
138 cpp_library_emitter, backend_options, dart_use_blink) | 135 cpp_library_emitter, backend_options) |
139 dart_libraries = DartLibraries( | 136 dart_libraries = DartLibraries( |
140 HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir) | 137 HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir) |
141 RunGenerator(dart_libraries, dart_output_dir, | 138 RunGenerator(dart_libraries, dart_output_dir, |
142 template_loader, backend_factory) | 139 template_loader, backend_factory) |
143 cpp_library_emitter.EmitDerivedSources( | 140 cpp_library_emitter.EmitDerivedSources( |
144 template_loader.Load('cpp_derived_sources.template'), | 141 template_loader.Load('cpp_derived_sources.template'), |
145 dartium_output_dir) | 142 dartium_output_dir) |
146 cpp_library_emitter.EmitResolver( | 143 cpp_library_emitter.EmitResolver( |
147 template_loader.Load('cpp_resolver.template'), dartium_output_dir) | 144 template_loader.Load('cpp_resolver.template'), dartium_output_dir) |
148 cpp_library_emitter.EmitClassIdTable( | 145 cpp_library_emitter.EmitClassIdTable( |
(...skipping 30 matching lines...) Expand all Loading... |
179 action='store_true', default=False, | 176 action='store_true', default=False, |
180 help='Rebuild the database from IDL using fremontcut.') | 177 help='Rebuild the database from IDL using fremontcut.') |
181 parser.add_option('--systems', dest='systems', | 178 parser.add_option('--systems', dest='systems', |
182 action='store', type='string', | 179 action='store', type='string', |
183 default='htmldart2js,htmldartium', | 180 default='htmldart2js,htmldartium', |
184 help='Systems to generate (htmldart2js, htmldartium)') | 181 help='Systems to generate (htmldart2js, htmldartium)') |
185 parser.add_option('--output-dir', dest='output_dir', | 182 parser.add_option('--output-dir', dest='output_dir', |
186 action='store', type='string', | 183 action='store', type='string', |
187 default=None, | 184 default=None, |
188 help='Directory to put the generated files') | 185 help='Directory to put the generated files') |
189 parser.add_option('--use-blink', dest='dart_use_blink', | |
190 action='store_true', | |
191 default=False, | |
192 help='''Delegate all native calls to dart:blink''') | |
193 parser.add_option('--use-database-cache', dest='use_database_cache', | 186 parser.add_option('--use-database-cache', dest='use_database_cache', |
194 action='store_true', | 187 action='store_true', |
195 default=False, | 188 default=False, |
196 help='''Use the cached database from the previous run to | 189 help='''Use the cached database from the previous run to |
197 improve startup performance''') | 190 improve startup performance''') |
198 parser.add_option('--update-dom-metadata', dest='update_dom_metadata', | 191 parser.add_option('--update-dom-metadata', dest='update_dom_metadata', |
199 action='store_true', | 192 action='store_true', |
200 default=False, | 193 default=False, |
201 help='''Update the metadata list of DOM APIs''') | 194 help='''Update the metadata list of DOM APIs''') |
202 (options, args) = parser.parse_args() | 195 (options, args) = parser.parse_args() |
(...skipping 15 matching lines...) Expand all Loading... |
218 dartium_output_dir = os.path.join(output_dir, 'dartium') | 211 dartium_output_dir = os.path.join(output_dir, 'dartium') |
219 | 212 |
220 UpdateCssProperties() | 213 UpdateCssProperties() |
221 if options.rebuild: | 214 if options.rebuild: |
222 # Parse the IDL and create the database. | 215 # Parse the IDL and create the database. |
223 database = fremontcutbuilder.main(options.parallel) | 216 database = fremontcutbuilder.main(options.parallel) |
224 else: | 217 else: |
225 # Load the previously generated database. | 218 # Load the previously generated database. |
226 database = LoadDatabase(database_dir, options.use_database_cache) | 219 database = LoadDatabase(database_dir, options.use_database_cache) |
227 GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir, | 220 GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir, |
228 options.update_dom_metadata, options.dart_use_blink) | 221 options.update_dom_metadata) |
229 | 222 |
230 if 'htmldart2js' in systems: | 223 if 'htmldart2js' in systems: |
231 _logger.info('Generating dart2js single files.') | 224 _logger.info('Generating dart2js single files.') |
232 for library_name in HTML_LIBRARY_NAMES: | 225 for library_name in HTML_LIBRARY_NAMES: |
233 GenerateSingleFile( | 226 GenerateSingleFile( |
234 os.path.join(dart2js_output_dir, '%s_dart2js.dart' % library_name), | 227 os.path.join(dart2js_output_dir, '%s_dart2js.dart' % library_name), |
235 os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dart2js')) | 228 os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dart2js')) |
236 if 'htmldartium' in systems: | 229 if 'htmldartium' in systems: |
237 _logger.info('Generating dartium single files.') | 230 _logger.info('Generating dartium single files.') |
238 for library_name in HTML_LIBRARY_NAMES: | 231 for library_name in HTML_LIBRARY_NAMES: |
239 GenerateSingleFile( | 232 GenerateSingleFile( |
240 os.path.join(dartium_output_dir, '%s_dartium.dart' % library_name), | 233 os.path.join(dartium_output_dir, '%s_dartium.dart' % library_name), |
241 os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dartium')) | 234 os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dartium')) |
242 GenerateSingleFile( | 235 GenerateSingleFile( |
243 os.path.join(dartium_output_dir, '_blink_dartium.dart'), | 236 os.path.join(dartium_output_dir, '_blink_dartium.dart'), |
244 os.path.join('..', '..', '..', 'sdk', 'lib', '_blink', 'dartium')) | 237 os.path.join('..', '..', '..', 'sdk', 'lib', '_blink', 'dartium')) |
245 | 238 |
246 if __name__ == '__main__': | 239 if __name__ == '__main__': |
247 sys.exit(main()) | 240 sys.exit(main()) |
OLD | NEW |