Index: tools/mkarray.py
===================================================================
--- tools/mkarray.py	(revision 6deab5a6cc081d9fefb96fd6b81bd44054678100)
+++ tools/mkarray.py	(revision 394ffff70b8978ebdfd3e168e743e37cb6dcd73f)
@@ -39,8 +39,8 @@
 def usage(prname):
 	"Print usage syntax"
-	print("%s [--deflate] <DESTINATION> <LABEL> <AS_PROLOG> <SECTION> [SOURCE ...]" % prname)
+	print("%s [--deflate] <DESTINATION> <TYPENAME> <LABEL> <AS_PROLOG> <SECTION> [SOURCE ...]" % prname)
 
 def arg_check():
-	if (len(sys.argv) < 5):
+	if (len(sys.argv) < 6):
 		usage(sys.argv[0])
 		sys.exit()
@@ -66,7 +66,8 @@
 
 	dest = sys.argv[1]
-	label = sys.argv[2]
-	as_prolog = sys.argv[3]
-	section = sys.argv[4]
+	typename = sys.argv[2]
+	label = sys.argv[3]
+	as_prolog = sys.argv[4]
+	section = sys.argv[5]
 
 	timestamp = (1980, 1, 1, 0, 0, 0)
@@ -81,5 +82,5 @@
 	archive = zipfile.ZipFile("%s.zip" % dest, "w", zipfile.ZIP_STORED)
 
-	for src in sys.argv[5:]:
+	for src in sys.argv[6:]:
 		basename = os.path.basename(src)
 		plainname = os.path.splitext(basename)[0]
@@ -147,4 +148,6 @@
 	data += "#include <stdbool.h>\n\n"
 	data += "#define %sS  %u\n\n" % (label.upper(), src_cnt)
+	data += "#ifndef %sS_T_\n" % typename.upper()
+	data += "#define %sS_T_\n\n" % typename.upper()
 	data += "typedef struct {\n"
 	data += "\tconst char *name;\n"
@@ -153,6 +156,7 @@
 	data += "\tsize_t inflated;\n"
 	data += "\tbool compressed;\n"
-	data += "} %s_t;\n\n" % label
-	data += "extern %s_t %ss[];\n\n" % (label, label)
+	data += "} %s_t;\n\n" % typename
+	data += "#endif\n"
+	data += "extern %s_t %ss[];\n\n" % (typename, label)
 	data += "\n".join(header_ctx)
 	data += "\n\n"
@@ -179,5 +183,5 @@
 	data += ' */\n\n'
 	data += "#include \"%s.h\"\n\n" % dest
-	data += "%s_t %ss[] = {\n" % (label, label)
+	data += "%s_t %ss[] = {\n" % (typename, label)
 	data += ",\n".join(desc_ctx)
 	data += "\n"
