]> git.tdb.fi Git - gldbg.git/blobdiff - generate.py
Unify array and reference print generation
[gldbg.git] / generate.py
index e30f6d1f869c1f8581953a08f8e992a537c9e4d6..229ecc3ecf18b347256a7cded1653ee6c0de2215 100755 (executable)
@@ -3,6 +3,7 @@
 
 import sys
 import os
+import optparse
 
 class InputFile:
        def __init__(self, fn):
@@ -333,18 +334,20 @@ class Api:
                self.ignore_categs = []
                self.ignore_funcs = []
 
+               path = os.path.split(fn)[0]
+
                for line in InputFile(fn):
                        parts = line.split()
                        if parts[0]=="typemap":
-                               self.typemap = parts[1]
+                               self.typemap = os.path.join(path, parts[1])
                        elif parts[0]=="iomap":
-                               self.iomap = parts[1]
+                               self.iomap = os.path.join(path, parts[1])
                        elif parts[0]=="spec":
-                               self.specs.append(parts[1])
+                               self.specs.append(os.path.join(path, parts[1]))
                        elif parts[0]=="prefix":
                                self.prefix = parts[1]
                        elif parts[0]=="enumspec":
-                               self.enumspecs.append(parts[1])
+                               self.enumspecs.append(os.path.join(path, parts[1]))
                        elif parts[0]=="enumprefix":
                                self.enumprefix = parts[1]
                        elif parts[0]=="ignore":
@@ -423,9 +426,25 @@ def read_enums(fn, prefix):
 
        return enums
 
-template = Template(sys.argv[1])
+parser = optparse.OptionParser()
+parser.add_option("--depends", dest="depends", default=False)
+(options, args) = parser.parse_args()
+
+template = Template(args[0])
 apis = []
-for i in sys.argv[2:]:
+for i in args[1:]:
        apis.append(Api(i))
 
-template.process(apis)
+if options.depends:
+       deps = args[:]
+       if template.mode=="functions":
+               for api in apis:
+                       deps += api.specs
+                       deps.append(api.typemap)
+                       deps.append(api.iomap)
+       elif template.mode=="enums":
+               for api in apis:
+                       deps += api.enumspecs
+       sys.stdout.write("%s: %s\n"%(options.depends, " ".join(deps)))
+else:
+       template.process(apis)