| Index: gpu/gles2_conform_support/generate_gles2_embedded_data.py
|
| diff --git a/gpu/gles2_conform_support/generate_gles2_embedded_data.py b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..8d7330f551d1cbcf10bd08c728a7b37a0640f6d1
|
| --- /dev/null
|
| +++ b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
|
| @@ -0,0 +1,120 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""generates files to embed the gles2 conformance test data in executable."""
|
| +
|
| +import os
|
| +import sys
|
| +
|
| +class GenerateEmbeddedFiles(object):
|
| + """generates files to embed the gles2 conform test data in executable"""
|
| +
|
| + paths_to_ignore = set([
|
| + ".",
|
| + "..",
|
| + ".svn",
|
| + ".git",
|
| + ".hg",
|
| + ])
|
| +
|
| + extensions_to_include = set([
|
| + ".vert",
|
| + ".frag",
|
| + ".test",
|
| + ".run",
|
| + ])
|
| +
|
| + def __init__(self, scan_dir, base_dir):
|
| + self.scan_dir = scan_dir
|
| + self.base_dir = base_dir
|
| + self.count = 0;
|
| + if self.base_dir != None:
|
| + self.files_data_h = open(os.path.join(base_dir, "FilesDATA.h"), "wb")
|
| + self.files_data_c = open(os.path.join(base_dir, "FilesDATA.c"), "wb")
|
| + self.files_toc_c = open(os.path.join(base_dir, "FilesTOC.c"), "wb")
|
| +
|
| + self.files_data_h.write("#ifndef FilesDATA_h\n\n")
|
| + self.files_data_h.write("#define FilesDATA_h\n\n");
|
| +
|
| + self.files_data_c.write("#include \"FilesDATA.h\"\n\n")
|
| +
|
| + self.files_toc_c.write("#include \"FilesTOC.h\"\n\n");
|
| + self.files_toc_c.write("struct GTFVectorFileEntry tempFiles;\n\n");
|
| + self.files_toc_c.write("struct FileEntry files[] = {\n");
|
| +
|
| + self.AddFiles(scan_dir)
|
| +
|
| + if self.base_dir != None:
|
| + self.files_toc_c.write("\n};\n\n");
|
| + self.files_toc_c.write(
|
| + "int numFileEntrys = sizeof(files) / sizeof(struct FileEntry);\n");
|
| +
|
| + self.files_data_h.write("\n\n#endif // FilesDATA_h\n");
|
| +
|
| + self.files_data_c.close()
|
| + self.files_data_h.close()
|
| + self.files_toc_c.close()
|
| +
|
| + def AddFiles(self, scan_dir):
|
| + """Scan a folder and embed the contents of files."""
|
| + files = os.listdir(scan_dir)
|
| + sub_dirs = []
|
| + for file in files:
|
| + full_path = os.path.join(scan_dir, file)
|
| + ext = os.path.splitext(file)[1]
|
| + base_path = full_path[len(self.scan_dir) + 1:]
|
| + if os.path.isdir(full_path):
|
| + if not file in GenerateEmbeddedFiles.paths_to_ignore:
|
| + sub_dirs.append(full_path)
|
| + elif ext in GenerateEmbeddedFiles.extensions_to_include:
|
| + if self.base_dir == None:
|
| + print full_path.replace("\\", "/")
|
| + else:
|
| + self.count += 1
|
| + name = "_FILE_%s_%d" % (ext.upper(), self.count)
|
| + name = name.replace(".", "_")
|
| +
|
| + self.files_data_h.write("extern const char %s[];\n" % name)
|
| + self.files_data_c.write("const char %s[] = \n" % name)
|
| +
|
| + data = open(full_path, "r")
|
| + lines = data.readlines();
|
| + data.close()
|
| +
|
| + for line in lines:
|
| + line = line.replace("\n", "")
|
| + line = line.replace("\r", "")
|
| + line = line.replace("\\", "\\\\")
|
| + line = line.replace("\"", "\\\"")
|
| +
|
| + self.files_data_c.write('"%s\\n"\n' % line)
|
| +
|
| + self.files_data_c.write(";\n")
|
| + self.files_toc_c.write("\t{ \"%s\", %s, 0 },\n" % (
|
| + base_path.replace("\\", "/"), name))
|
| +
|
| + for sub_dir in sub_dirs:
|
| + self.AddFiles(sub_dir)
|
| +
|
| +
|
| +def main(argv):
|
| + """This is the main function."""
|
| +
|
| + if len(argv) >= 1:
|
| + scan_dir = argv[0]
|
| + else:
|
| + scan_dir = '.'
|
| +
|
| + if len(argv) >= 2:
|
| + base_dir = argv[1]
|
| + else:
|
| + base_dir = None
|
| +
|
| + GenerateEmbeddedFiles(scan_dir, base_dir)
|
| + return 0
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv[1:]))
|
|
|