| Index: Source/bindings/dart/gyp/scripts/create_resources.py
|
| diff --git a/Source/bindings/dart/gyp/scripts/create_resources.py b/Source/bindings/dart/gyp/scripts/create_resources.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3b6b9929aa6ccd24ba0765f10f4b0f1bfda22fb6
|
| --- /dev/null
|
| +++ b/Source/bindings/dart/gyp/scripts/create_resources.py
|
| @@ -0,0 +1,116 @@
|
| +# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +# for details. All rights reserved. Use of this source code is governed by a
|
| +# BSD-style license that can be found in the LICENSE file.
|
| +#
|
| +# This python script creates string literals in a C++ source file from a C++
|
| +# source template and one or more resource files.
|
| +
|
| +import os
|
| +import sys
|
| +from os.path import join
|
| +import time
|
| +from optparse import OptionParser
|
| +import re
|
| +from datetime import date
|
| +
|
| +
|
| +def makeResources(root_dir, input_files):
|
| + result = ''
|
| + resources = []
|
| +
|
| + # Write each file's contents as a byte string constant.
|
| + for resource_file in input_files:
|
| + if root_dir and resource_file.startswith(root_dir):
|
| + resource_file_name = resource_file[len(root_dir):]
|
| + else:
|
| + resource_file_name = resource_file
|
| + resource_url = '/%s' % resource_file_name
|
| + result += '// %s\n' % resource_file
|
| + result += 'const char '
|
| + resource_name = re.sub(r'(/|\.|-)', '_', resource_file_name) + '_'
|
| + result += resource_name
|
| + result += '[] = {\n '
|
| + fileHandle = open(resource_file, 'rb')
|
| + lineCounter = 0
|
| + for byte in fileHandle.read():
|
| + result += r" '\x%02x'," % ord(byte)
|
| + lineCounter += 1
|
| + if lineCounter == 10:
|
| + result += '\n '
|
| + lineCounter = 0
|
| + if lineCounter != 0:
|
| + result += '\n '
|
| + result += ' 0\n};\n\n'
|
| + resources.append(
|
| + (resource_url, resource_name, os.stat(resource_file).st_size))
|
| +
|
| + # Write the resource table.
|
| + result += 'Resources::resource_map_entry Resources::builtin_resources_[] = '
|
| + result += '{\n'
|
| + for res in resources:
|
| + result += ' { "%s", %s, %d },\n' % res
|
| + result += '};\n\n'
|
| + result += 'const intptr_t Resources::builtin_resources_count_ '
|
| + result += '= %d;\n' % len(resources)
|
| + return result
|
| +
|
| +
|
| +def makeFile(output_file, root_dir, input_files):
|
| + cc_text = '''
|
| +// Copyright (c) %d, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +''' % date.today().year
|
| + cc_text += '#if defined(new)\n'
|
| + cc_text += '#undef new\n'
|
| + cc_text += '#endif\n\n'
|
| + cc_text += '#if defined(delete)\n'
|
| + cc_text += '#undef delete\n'
|
| + cc_text += '#endif\n\n'
|
| + cc_text += '#ifndef NDEBUG\n'
|
| + cc_text += '#define DEBUG\n'
|
| + cc_text += '#endif\n'
|
| + cc_text += '#include "bin/resources.h"\n\n'
|
| + cc_text += 'namespace dart {\n'
|
| + cc_text += 'namespace bin {\n'
|
| + cc_text += makeResources(root_dir, input_files)
|
| + cc_text += '} // namespace bin\n} // namespace dart\n'
|
| + open(output_file, 'w').write(cc_text)
|
| + return True
|
| +
|
| +
|
| +def main(args):
|
| + try:
|
| + # Parse input.
|
| + parser = OptionParser()
|
| + parser.add_option("--output",
|
| + action="store", type="string",
|
| + help="output file name")
|
| + parser.add_option("--root_prefix",
|
| + action="store", type="string",
|
| + help="root directory for resources")
|
| + (options, args) = parser.parse_args()
|
| + if not options.output:
|
| + sys.stderr.write('--output not specified\n')
|
| + return -1
|
| + if len(args) == 0:
|
| + sys.stderr.write('No input files specified\n')
|
| + return -1
|
| +
|
| + files = []
|
| + for arg in args:
|
| + files.append(arg)
|
| +
|
| + if not makeFile(options.output, options.root_prefix, files):
|
| + return -1
|
| +
|
| + return 0
|
| + except Exception, inst:
|
| + sys.stderr.write('create_resources.py exception\n')
|
| + sys.stderr.write(str(inst))
|
| + sys.stderr.write('\n')
|
| + return -1
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv))
|
|
|