X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=generate.py;h=229ecc3ecf18b347256a7cded1653ee6c0de2215;hb=ad18f0b95523a9ccc5c46014d682c6b6dd928260;hp=e30f6d1f869c1f8581953a08f8e992a537c9e4d6;hpb=ac7c37d7b9a42289bf221934c2e474025adf8cf4;p=gldbg.git diff --git a/generate.py b/generate.py index e30f6d1..229ecc3 100755 --- a/generate.py +++ b/generate.py @@ -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)