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

Side by Side Diff: bindings/dart/gyp/scripts/create_resources.py

Issue 540533002: Roll IDL to Dartium37 (r181268) (Closed) Base URL: https://dart.googlecode.com/svn/third_party/WebCore
Patch Set: Created 6 years, 3 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
(Empty)
1 # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file.
4 #
5 # This python script creates string literals in a C++ source file from a C++
6 # source template and one or more resource files.
7
8 import os
9 import sys
10 from os.path import join
11 import time
12 from optparse import OptionParser
13 import re
14 from datetime import date
15
16
17 def makeResources(root_dir, input_files):
18 result = ''
19 resources = []
20
21 # Write each file's contents as a byte string constant.
22 for resource_file in input_files:
23 if root_dir and resource_file.startswith(root_dir):
24 resource_file_name = resource_file[len(root_dir):]
25 else:
26 resource_file_name = resource_file
27 resource_url = '/%s' % resource_file_name
28 result += '// %s\n' % resource_file
29 result += 'const char '
30 resource_name = re.sub(r'(/|\.|-)', '_', resource_file_name) + '_'
31 result += resource_name
32 result += '[] = {\n '
33 fileHandle = open(resource_file, 'rb')
34 lineCounter = 0
35 for byte in fileHandle.read():
36 result += r" '\x%02x'," % ord(byte)
37 lineCounter += 1
38 if lineCounter == 10:
39 result += '\n '
40 lineCounter = 0
41 if lineCounter != 0:
42 result += '\n '
43 result += ' 0\n};\n\n'
44 resources.append(
45 (resource_url, resource_name, os.stat(resource_file).st_size))
46
47 # Write the resource table.
48 result += 'Resources::resource_map_entry Resources::builtin_resources_[] = '
49 result += '{\n'
50 for res in resources:
51 result += ' { "%s", %s, %d },\n' % res
52 result += '};\n\n'
53 result += 'const intptr_t Resources::builtin_resources_count_ '
54 result += '= %d;\n' % len(resources)
55 return result
56
57
58 def makeFile(output_file, root_dir, input_files):
59 cc_text = '''
60 // Copyright (c) %d, the Dart project authors. Please see the AUTHORS file
61 // for details. All rights reserved. Use of this source code is governed by a
62 // BSD-style license that can be found in the LICENSE file.
63
64 ''' % date.today().year
65 cc_text += '#if defined(new)\n'
66 cc_text += '#undef new\n'
67 cc_text += '#endif\n\n'
68 cc_text += '#if defined(delete)\n'
69 cc_text += '#undef delete\n'
70 cc_text += '#endif\n\n'
71 cc_text += '#ifndef NDEBUG\n'
72 cc_text += '#define DEBUG\n'
73 cc_text += '#endif\n'
74 cc_text += '#include "bin/resources.h"\n\n'
75 cc_text += 'namespace dart {\n'
76 cc_text += 'namespace bin {\n'
77 cc_text += makeResources(root_dir, input_files)
78 cc_text += '} // namespace bin\n} // namespace dart\n'
79 open(output_file, 'w').write(cc_text)
80 return True
81
82
83 def main(args):
84 try:
85 # Parse input.
86 parser = OptionParser()
87 parser.add_option("--output",
88 action="store", type="string",
89 help="output file name")
90 parser.add_option("--root_prefix",
91 action="store", type="string",
92 help="root directory for resources")
93 (options, args) = parser.parse_args()
94 if not options.output:
95 sys.stderr.write('--output not specified\n')
96 return -1
97 if len(args) == 0:
98 sys.stderr.write('No input files specified\n')
99 return -1
100
101 files = []
102 for arg in args:
103 files.append(arg)
104
105 if not makeFile(options.output, options.root_prefix, files):
106 return -1
107
108 return 0
109 except Exception, inst:
110 sys.stderr.write('create_resources.py exception\n')
111 sys.stderr.write(str(inst))
112 sys.stderr.write('\n')
113 return -1
114
115 if __name__ == '__main__':
116 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « bindings/dart/gyp/scripts/build_dart_snapshot.py ('k') | bindings/dart/gyp/scripts/dart_action_derivedsourcesallinone.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698