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

Side by Side Diff: client/dom/scripts/dartdomgenerator.py

Issue 9290020: Add support for native bindings generation to dartgenerator.py. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 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 | Annotate | Revision Log
OLDNEW
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 logging.config 10 import logging.config
11 import optparse
11 import os 12 import os
12 import shutil 13 import shutil
13 import sys 14 import sys
14 15
15 DOM_LIBRARY = 'dom.dart' 16 DOM_LIBRARY = 'dom.dart'
16 DOM_DEFAULT_LIBRARY = 'wrapping_dom.dart' 17 DOM_DEFAULT_LIBRARY = 'wrapping_dom.dart'
18 DEFAULT_SYSTEM = 'wrapping'
17 19
18 _logger = logging.getLogger('dartdomgenerator') 20 _logger = logging.getLogger('dartdomgenerator')
19 21
20 _webkit_renames = { 22 _webkit_renames = {
21 # W3C -> WebKit name conversion 23 # W3C -> WebKit name conversion
22 # TODO(vsm): Maybe Store these renames in the IDLs. 24 # TODO(vsm): Maybe Store these renames in the IDLs.
23 'ApplicationCache': 'DOMApplicationCache', 25 'ApplicationCache': 'DOMApplicationCache',
24 'BarProp': 'BarInfo', 26 'BarProp': 'BarInfo',
25 'DedicatedWorkerGlobalScope': 'DedicatedWorkerContext', 27 'DedicatedWorkerGlobalScope': 'DedicatedWorkerContext',
26 'FormData': 'DOMFormData', 28 'FormData': 'DOMFormData',
27 'Selection': 'DOMSelection', 29 'Selection': 'DOMSelection',
28 'SharedWorkerGlobalScope': 'SharedWorkerContext', 30 'SharedWorkerGlobalScope': 'SharedWorkerContext',
29 'Window': 'DOMWindow', 31 'Window': 'DOMWindow',
30 'WorkerGlobalScope': 'WorkerContext'} 32 'WorkerGlobalScope': 'WorkerContext'}
31 33
32 _webkit_renames_inverse = dict((v,k) for k, v in _webkit_renames.iteritems()) 34 _webkit_renames_inverse = dict((v,k) for k, v in _webkit_renames.iteritems())
33 35
34 def GenerateDOM(output_dir): 36 def GenerateDOM(systems, output_dir):
35 # TODO(sra): Make this entry point also generate HTML. 37 # TODO(sra): Make this entry point also generate HTML.
36 current_dir = os.path.dirname(__file__) 38 current_dir = os.path.dirname(__file__)
37 39
38 generator = dartgenerator.DartGenerator( 40 generator = dartgenerator.DartGenerator(
39 auxiliary_dir=os.path.join(current_dir, '..', 'src'), 41 auxiliary_dir=os.path.join(current_dir, '..', 'src'),
40 template_dir=os.path.join(current_dir, '..', 'templates'), 42 template_dir=os.path.join(current_dir, '..', 'templates'),
41 base_package='') 43 base_package='')
42 generator.LoadAuxiliary() 44 generator.LoadAuxiliary()
43 45
44 common_database = database.Database( 46 common_database = database.Database(
(...skipping 27 matching lines...) Expand all
72 exclude_suppressed = ['WebKit', 'Dart']) 74 exclude_suppressed = ['WebKit', 'Dart'])
73 generator.RenameTypes(webkit_database, _webkit_renames) 75 generator.RenameTypes(webkit_database, _webkit_renames)
74 76
75 generator.Generate(database = webkit_database, 77 generator.Generate(database = webkit_database,
76 output_dir = webkit_output_dir, 78 output_dir = webkit_output_dir,
77 lib_dir = output_dir, 79 lib_dir = output_dir,
78 module_source_preference = ['WebKit', 'Dart'], 80 module_source_preference = ['WebKit', 'Dart'],
79 source_filter = ['WebKit', 'Dart'], 81 source_filter = ['WebKit', 'Dart'],
80 super_database = common_database, 82 super_database = common_database,
81 common_prefix = 'common', 83 common_prefix = 'common',
82 super_map = _webkit_renames_inverse) 84 super_map = _webkit_renames_inverse,
85 systems = systems)
83 86
84 generator.Flush() 87 generator.Flush()
85 88
86 # Install default DOM library. 89 def main():
87 default = os.path.join(output_dir, DOM_DEFAULT_LIBRARY) 90 parser = optparse.OptionParser()
88 target = os.path.join(output_dir, DOM_LIBRARY) 91 parser.add_option('--systems', dest='systems',
89 shutil.copyfile(default, target) 92 action='store', type='string',
93 default='frog,wrapping',
94 help='Systems to generate (frog, native, wrapping)')
95 parser.add_option('--output-dir', dest='output_dir',
96 action='store', type='string',
97 default=None,
98 help='Directory to put the generated files')
99 (options, args) = parser.parse_args()
90 100
91 def main():
92 current_dir = os.path.dirname(__file__) 101 current_dir = os.path.dirname(__file__)
102 output_dir = options.output_dir or os.path.join(current_dir, '..')
103 systems = options.systems.split(',')
104
93 logging.config.fileConfig(os.path.join(current_dir, 'logging.conf')) 105 logging.config.fileConfig(os.path.join(current_dir, 'logging.conf'))
94 GenerateDOM(os.path.join(current_dir, '..')) 106 GenerateDOM(systems, output_dir)
107
108 if DEFAULT_SYSTEM in systems:
109 # Install default DOM library.
110 default = os.path.join(output_dir, DOM_DEFAULT_LIBRARY)
111 target = os.path.join(output_dir, DOM_LIBRARY)
112 shutil.copyfile(default, target)
95 113
96 if __name__ == '__main__': 114 if __name__ == '__main__':
97 sys.exit(main()) 115 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698