Support multiple pmg files (right now just concatenated together)
authorClifford Wolf <clifford@clifford.at>
Fri, 26 Apr 2019 14:38:36 +0000 (16:38 +0200)
committerClifford Wolf <clifford@clifford.at>
Mon, 29 Apr 2019 10:09:02 +0000 (12:09 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
passes/pmgen/pmgen.py

index d9747b065bed36dd1b527a8fd8637de9deecda7f..edc1ad7feda0702bc1f8da98df51bea04290a6f1 100644 (file)
@@ -3,14 +3,34 @@
 import re
 import sys
 import pprint
+import getopt
 
 pp = pprint.PrettyPrinter(indent=4)
 
-pmgfile = sys.argv[1]
-assert pmgfile.endswith(".pmg")
-prefix = pmgfile[0:-4]
-prefix = prefix.split('/')[-1]
-outfile = sys.argv[2]
+prefix = None
+pmgfiles = list()
+outfile = None
+
+opts, args = getopt.getopt(sys.argv[1:], "p:o:")
+
+for o, a in opts:
+    if o == "-p":
+        prefix = o
+    elif o == "-o":
+        outfile = a
+
+if outfile is None:
+    outfile = args[-1]
+    args = args[0:-1]
+
+for a in args:
+    assert a.endswith(".pmg")
+    if prefix is None and len(args) == 1:
+        prefix = a[0:-4]
+        prefix = prefix.split('/')[-1]
+    pmgfiles.append(a)
+
+assert prefix is not None
 
 state_types = dict()
 udata_types = dict()
@@ -77,7 +97,7 @@ def rewrite_cpp(s):
 
     return "".join(t)
 
-with open(pmgfile, "r") as f:
+def process_pmgfile(f):
     while True:
         line = f.readline()
         if line == "": break
@@ -180,6 +200,10 @@ with open(pmgfile, "r") as f:
 
             blocks.append(block)
 
+for fn in pmgfiles:
+    with open(fn, "r") as f:
+        process_pmgfile(f)
+
 with open(outfile, "w") as f:
     print("// Generated by pmgen.py from {}.pgm".format(prefix), file=f)
     print("", file=f)