summaryrefslogtreecommitdiffstats
path: root/src/intel/genxml/gen_zipped_file.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/genxml/gen_zipped_file.py')
-rw-r--r--src/intel/genxml/gen_zipped_file.py34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/intel/genxml/gen_zipped_file.py b/src/intel/genxml/gen_zipped_file.py
index 66222cabe71..af2008bea03 100644
--- a/src/intel/genxml/gen_zipped_file.py
+++ b/src/intel/genxml/gen_zipped_file.py
@@ -26,22 +26,46 @@ from __future__ import print_function
import os
import sys
import zlib
+import xml.etree.cElementTree as et
def main():
if len(sys.argv) < 2:
print("No input xml file specified")
sys.exit(1)
- with open(sys.argv[1]) as f:
- compressed_data = zlib.compress(f.read())
+ compress = zlib.compressobj()
- gen_name = os.path.splitext(os.path.basename(sys.argv[1]))[0]
- print("static const uint8_t %s_xml[] = {" % gen_name)
- print(" ", end='')
+ print("static const struct {")
+ print(" uint32_t gen_10;")
+ print(" uint32_t offset;")
+ print(" uint32_t length;")
+ print("} genxml_files_table[] = {")
+
+ xml_offset = 0
+ compressed_data = ''
+ for i in range(1, len(sys.argv)):
+ filename = sys.argv[i]
+ xml = open(filename).read()
+ xml_length = len(xml)
+ root = et.fromstring(xml)
+
+ print(" { %i, %i, %i }," %
+ (int(float(root.attrib['gen']) * 10), xml_offset, xml_length))
+
+ compressed_data += compress.compress(xml)
+ xml_offset += xml_length
+ print("};")
+
+ compressed_data += compress.flush()
+
+ print("")
+ print("static const uint8_t compress_genxmls[] = {")
+ print(" ", end='')
for i, c in enumerate(compressed_data, start=1):
print("0x%.2x, " % ord(c), end='\n ' if not i % 12 else '')
print('\n};')
+
if __name__ == '__main__':
main()