| 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 dartgenerator | 8 import dartgenerator |
| 9 import database | 9 import database |
| 10 import fremontcutbuilder | 10 import fremontcutbuilder |
| 11 import logging.config | 11 import logging.config |
| 12 import multiemitter | 12 import multiemitter |
| 13 import optparse | 13 import optparse |
| 14 import os | 14 import os |
| 15 import shutil | 15 import shutil |
| 16 import subprocess | 16 import subprocess |
| 17 import sys | 17 import sys |
| 18 from generator import TypeRegistry | 18 from generator import TypeRegistry |
| 19 from htmleventgenerator import HtmlEventGenerator | 19 from htmleventgenerator import HtmlEventGenerator |
| 20 from htmlrenamer import HtmlRenamer | 20 from htmlrenamer import HtmlRenamer |
| 21 from systemhtml import DartLibraryEmitter, Dart2JSBackend,\ | 21 from systemhtml import DartLibraryEmitter, Dart2JSBackend,\ |
| 22 HtmlDartInterfaceGenerator | 22 HtmlDartInterfaceGenerator, DartLibrary, DartLibraries |
| 23 from systemnative import CPPLibraryEmitter, DartiumBackend | 23 from systemnative import CPPLibraryEmitter, DartiumBackend |
| 24 from templateloader import TemplateLoader | 24 from templateloader import TemplateLoader |
| 25 | 25 |
| 26 _logger = logging.getLogger('dartdomgenerator') | 26 _logger = logging.getLogger('dartdomgenerator') |
| 27 | 27 |
| 28 class GeneratorOptions(object): | 28 class GeneratorOptions(object): |
| 29 def __init__(self, templates, database, type_registry, renamer): | 29 def __init__(self, templates, database, type_registry, renamer): |
| 30 self.templates = templates | 30 self.templates = templates |
| 31 self.database = database | 31 self.database = database |
| 32 self.type_registry = type_registry | 32 self.type_registry = type_registry |
| (...skipping 30 matching lines...) Expand all Loading... |
| 63 or_annotations = ['WebKit', 'Dart'], | 63 or_annotations = ['WebKit', 'Dart'], |
| 64 exclude_displaced = ['WebKit'], | 64 exclude_displaced = ['WebKit'], |
| 65 exclude_suppressed = ['WebKit', 'Dart']) | 65 exclude_suppressed = ['WebKit', 'Dart']) |
| 66 generator.FixEventTargets(webkit_database) | 66 generator.FixEventTargets(webkit_database) |
| 67 generator.AddMissingArguments(webkit_database) | 67 generator.AddMissingArguments(webkit_database) |
| 68 | 68 |
| 69 emitters = multiemitter.MultiEmitter() | 69 emitters = multiemitter.MultiEmitter() |
| 70 renamer = HtmlRenamer(webkit_database) | 70 renamer = HtmlRenamer(webkit_database) |
| 71 type_registry = TypeRegistry(webkit_database, renamer) | 71 type_registry = TypeRegistry(webkit_database, renamer) |
| 72 | 72 |
| 73 def RunGenerator(dart_library_template, dart_output_dir, dart_library_path, | 73 def RunGenerator(dart_libraries, dart_output_dir, |
| 74 template_loader, backend_factory): | 74 template_loader, backend_factory): |
| 75 options = GeneratorOptions( | 75 options = GeneratorOptions( |
| 76 template_loader, webkit_database, type_registry, renamer) | 76 template_loader, webkit_database, type_registry, renamer) |
| 77 dart_library_emitter = DartLibraryEmitter( | 77 dart_library_emitter = DartLibraryEmitter( |
| 78 emitters, dart_library_template, dart_output_dir) | 78 emitters, dart_output_dir, dart_libraries) |
| 79 event_generator = HtmlEventGenerator(webkit_database, template_loader) | 79 event_generator = HtmlEventGenerator(webkit_database, template_loader) |
| 80 | 80 |
| 81 def generate_interface(interface): | 81 def generate_interface(interface): |
| 82 backend = backend_factory(interface) | 82 backend = backend_factory(interface) |
| 83 interface_generator = HtmlDartInterfaceGenerator( | 83 interface_generator = HtmlDartInterfaceGenerator( |
| 84 options, dart_library_emitter, event_generator, interface, backend) | 84 options, dart_library_emitter, event_generator, interface, backend) |
| 85 interface_generator.Generate() | 85 interface_generator.Generate() |
| 86 | 86 |
| 87 generator.Generate(webkit_database, common_database, generate_interface) | 87 generator.Generate(webkit_database, common_database, generate_interface) |
| 88 dart_library_emitter.EmitLibrary(dart_library_path, auxiliary_dir) | 88 dart_library_emitter.EmitLibraries(auxiliary_dir) |
| 89 | 89 |
| 90 if dart2js_output_dir: | 90 if dart2js_output_dir: |
| 91 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] | 91 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] |
| 92 template_loader = TemplateLoader(template_dir, | 92 template_loader = TemplateLoader(template_dir, |
| 93 template_paths, | 93 template_paths, |
| 94 {'DARTIUM': False, 'DART2JS': True}) | 94 {'DARTIUM': False, 'DART2JS': True}) |
| 95 backend_options = GeneratorOptions( | 95 backend_options = GeneratorOptions( |
| 96 template_loader, webkit_database, type_registry, renamer) | 96 template_loader, webkit_database, type_registry, renamer) |
| 97 backend_factory = lambda interface:\ | 97 backend_factory = lambda interface:\ |
| 98 Dart2JSBackend(interface, backend_options) | 98 Dart2JSBackend(interface, backend_options) |
| 99 | 99 |
| 100 dart_library_template = template_loader.Load('html_dart2js.darttemplate') | |
| 101 dart_output_dir = os.path.join(dart2js_output_dir, 'dart') | 100 dart_output_dir = os.path.join(dart2js_output_dir, 'dart') |
| 102 dart_library_path = os.path.join(dart2js_output_dir, 'html_dart2js.dart') | 101 dart_libraries = DartLibraries( |
| 102 template_loader, 'dart2js', dart2js_output_dir) |
| 103 | 103 |
| 104 RunGenerator(dart_library_template, dart_output_dir, dart_library_path, | 104 RunGenerator(dart_libraries, dart_output_dir, |
| 105 template_loader, backend_factory) | 105 template_loader, backend_factory) |
| 106 | 106 |
| 107 if dartium_output_dir: | 107 if dartium_output_dir: |
| 108 template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] | 108 template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] |
| 109 template_loader = TemplateLoader(template_dir, | 109 template_loader = TemplateLoader(template_dir, |
| 110 template_paths, | 110 template_paths, |
| 111 {'DARTIUM': True, 'DART2JS': False}) | 111 {'DARTIUM': True, 'DART2JS': False}) |
| 112 backend_options = GeneratorOptions( | 112 backend_options = GeneratorOptions( |
| 113 template_loader, webkit_database, type_registry, renamer) | 113 template_loader, webkit_database, type_registry, renamer) |
| 114 cpp_output_dir = os.path.join(dartium_output_dir, 'cpp') | 114 cpp_output_dir = os.path.join(dartium_output_dir, 'cpp') |
| 115 cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir) | 115 cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir) |
| 116 backend_factory = lambda interface:\ | 116 backend_factory = lambda interface:\ |
| 117 DartiumBackend(interface, cpp_library_emitter, backend_options) | 117 DartiumBackend(interface, cpp_library_emitter, backend_options) |
| 118 | 118 |
| 119 dart_library_template = template_loader.Load('html_dartium.darttemplate') | |
| 120 dart_output_dir = os.path.join(dartium_output_dir, 'dart') | 119 dart_output_dir = os.path.join(dartium_output_dir, 'dart') |
| 121 dart_library_path = os.path.join(dartium_output_dir, 'html_dartium.dart') | 120 dart_libraries = DartLibraries( |
| 121 template_loader, 'dartium', dartium_output_dir) |
| 122 | 122 |
| 123 RunGenerator(dart_library_template, dart_output_dir, dart_library_path, | 123 RunGenerator(dart_libraries, dart_output_dir, |
| 124 template_loader, backend_factory) | 124 template_loader, backend_factory) |
| 125 cpp_library_emitter.EmitDerivedSources( | 125 cpp_library_emitter.EmitDerivedSources( |
| 126 template_loader.Load('cpp_derived_sources.template'), | 126 template_loader.Load('cpp_derived_sources.template'), |
| 127 dartium_output_dir) | 127 dartium_output_dir) |
| 128 cpp_library_emitter.EmitResolver( | 128 cpp_library_emitter.EmitResolver( |
| 129 template_loader.Load('cpp_resolver.template'), dartium_output_dir) | 129 template_loader.Load('cpp_resolver.template'), dartium_output_dir) |
| 130 | 130 |
| 131 _logger.info('Flush...') | 131 _logger.info('Flush...') |
| 132 emitters.Flush() | 132 emitters.Flush() |
| 133 | 133 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 179 |
| 180 if options.rebuild: | 180 if options.rebuild: |
| 181 # Parse the IDL and create the database. | 181 # Parse the IDL and create the database. |
| 182 database = fremontcutbuilder.main(options.parallel) | 182 database = fremontcutbuilder.main(options.parallel) |
| 183 else: | 183 else: |
| 184 # Load the previously generated database. | 184 # Load the previously generated database. |
| 185 database = LoadDatabase(database_dir, options.use_database_cache) | 185 database = LoadDatabase(database_dir, options.use_database_cache) |
| 186 GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir) | 186 GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir) |
| 187 | 187 |
| 188 if 'htmldart2js' in systems: | 188 if 'htmldart2js' in systems: |
| 189 _logger.info('Copy html_dart2js to dart2js/') | 189 _logger.info('Generating dart2js single files.') |
| 190 GenerateSingleFile(os.path.join(dart2js_output_dir, 'html_dart2js.dart'), | 190 GenerateSingleFile(os.path.join(dart2js_output_dir, 'html_dart2js.dart'), |
| 191 '../dart2js') | 191 '../dart2js') |
| 192 GenerateSingleFile(os.path.join(dart2js_output_dir, 'svg_dart2js.dart'), |
| 193 '../../svg/dart2js') |
| 192 if 'htmldartium' in systems: | 194 if 'htmldartium' in systems: |
| 193 _logger.info('Copy html_dartium to dartium/') | 195 _logger.info('Generating dartium single files.') |
| 194 GenerateSingleFile(os.path.join(dartium_output_dir, 'html_dartium.dart'), | 196 GenerateSingleFile(os.path.join(dartium_output_dir, 'html_dartium.dart'), |
| 195 '../dartium') | 197 '../dartium') |
| 198 GenerateSingleFile(os.path.join(dartium_output_dir, 'svg_dartium.dart'), |
| 199 '../../svg/dartium') |
| 196 | 200 |
| 197 if __name__ == '__main__': | 201 if __name__ == '__main__': |
| 198 sys.exit(main()) | 202 sys.exit(main()) |
| OLD | NEW |