diff options
author | Ted Ross <tross@apache.org> | 2008-11-12 19:50:11 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2008-11-12 19:50:11 +0000 |
commit | cfcad9a8e48d6530ec3f640181a9f75d85c57aa6 (patch) | |
tree | 90a634a168d08c619cbba67c746b7e2bd2088860 /cpp | |
parent | 0266626840a722b83c3a033c7374f568a0cc9ef1 (diff) | |
download | qpid-python-cfcad9a8e48d6530ec3f640181a9f75d85c57aa6.tar.gz |
Generalized the creation of makefile fragments in qmf code generation.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@713476 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rwxr-xr-x | cpp/managementgen/qmf-gen | 33 | ||||
-rwxr-xr-x | cpp/managementgen/qmf/generate.py | 25 | ||||
-rw-r--r-- | cpp/managementgen/qmf/templates/Makefile.mk | 7 |
3 files changed, 50 insertions, 15 deletions
diff --git a/cpp/managementgen/qmf-gen b/cpp/managementgen/qmf-gen index 62362e3cad..d71097b4b4 100755 --- a/cpp/managementgen/qmf-gen +++ b/cpp/managementgen/qmf-gen @@ -30,29 +30,33 @@ defaultTemplateDir = dataPath + "/templates" # Set command line options usage = "usage: %prog [options] schema-document..." -parser = OptionParser (usage=usage) -parser.add_option ("-m", "--makefile", dest="makefile", metavar="FILE", - help="Makefile fragment") -parser.add_option ("-t", "--typefile", dest="typefile", metavar="FILE", default=defaultTypeFile, - help="Type descriptor file") -parser.add_option ("-d", "--templatedir", dest="templatedir", metavar="DIR", default=defaultTemplateDir, - help="Template directory") -parser.add_option ("-o", "--outputdir", dest="outputdir", metavar="DIR", default="./", - help="Output directory") +parser = OptionParser(usage=usage) +parser.add_option("-o", "--outputdir", dest="outputdir", metavar="DIR", default="./", + help="Output directory") +parser.add_option("-m", "--makefile", dest="makefile", metavar="FILE", + help="Makefile fragment") +parser.add_option("-t", "--typefile", dest="typefile", metavar="FILE", default=defaultTypeFile, + help="Override type descriptor file") +parser.add_option("-d", "--templatedir", dest="templatedir", metavar="DIR", default=defaultTemplateDir, + help="Override template directory") +parser.add_option("-p", "--gen-prefix", dest="genprefix", default="", + help="Prefix for generated files in make dependencies") +parser.add_option("-q", "--qpid-broker", dest="qpidbroker", default=False, action="store_true", + help="Generate makefile for Qpid broker") -(opts, args) = parser.parse_args () +(opts, args) = parser.parse_args() typefile = opts.typefile templatedir = opts.templatedir outdir = opts.outputdir -gen = Generator (outdir, templatedir) +gen = Generator(outdir, templatedir) if len(args) == 0: print "no input files" parser.exit() for schemafile in args: - package = SchemaPackage (typefile, schemafile, opts) + package = SchemaPackage(typefile, schemafile, opts) gen.setPackage (package.packageName) gen.makeClassFiles ("Class.h", package) @@ -64,4 +68,7 @@ for schemafile in args: gen.makePackageFile ("Package.cpp", package) if opts.makefile != None: - gen.makeSingleFile ("Makefile.mk", opts.makefile, force=True) + args = {} + args["qpidbroker"] = opts.qpidbroker + args["genprefix"] = opts.genprefix + gen.makeSingleFile("Makefile.mk", opts.makefile, force=True, vars=args) diff --git a/cpp/managementgen/qmf/generate.py b/cpp/managementgen/qmf/generate.py index 9b48c41ac4..2f2d51a1e2 100755 --- a/cpp/managementgen/qmf/generate.py +++ b/cpp/managementgen/qmf/generate.py @@ -140,6 +140,21 @@ class Makefile: stream.write (" \\\n ") stream.write (file) + def genGeneratedFiles(self, stream, variables): + first = True + extensions = ("h", "cpp") + for ext in extensions: + for file in self.filelists[ext]: + if first: + first = False + else: + stream.write(" \\\n ") + if "genprefix" in variables: + prefix = variables["genprefix"] + if prefix != "": + stream.write(prefix + "/") + stream.write(file) + def genHeaderInstalls (self, stream, variables): for package in self.packagelist: name = "_".join(package.split("/")) @@ -155,6 +170,11 @@ class Makefile: stream.write(file) stream.write("\n\n") + def testQpidBroker(self, variables): + if "qpidbroker" in variables: + return variables["qpidbroker"] + return False + class Generator: """ @@ -332,10 +352,13 @@ class Generator: stream = template.expand (schema) self.writeIfChanged (stream, target, force) - def makeSingleFile (self, templateFile, target, force=False): + def makeSingleFile (self, templateFile, target, force=False, vars=None): """ Generate a single expanded template """ makefile = Makefile (self.filelists, self.templateFiles, self.packagelist) template = Template (self.input + templateFile, self) + if vars: + for arg in vars: + self.setVariable(arg, vars[arg]) self.templateFiles.append (templateFile) stream = template.expand (makefile) self.writeIfChanged (stream, target, force) diff --git a/cpp/managementgen/qmf/templates/Makefile.mk b/cpp/managementgen/qmf/templates/Makefile.mk index 6b06e74b46..2b32c7c0f2 100644 --- a/cpp/managementgen/qmf/templates/Makefile.mk +++ b/cpp/managementgen/qmf/templates/Makefile.mk @@ -17,9 +17,10 @@ # under the License. # /*MGEN:commentPrefix=#*/ +/*MGEN:Root.Disclaimer*/ +/*MGEN:IF(Makefile.QpidBroker)*/ /*MGEN:mgenDir=$(mgen_dir)*/ /*MGEN:specDir=$(top_srcdir)/../specs*/ -/*MGEN:Root.Disclaimer*/ mgen_generator=/*MGEN:Makefile.GenSources*/ @@ -33,3 +34,7 @@ $(srcdir)/managementgen.mk: $(mgen_generator) $(mgen_generator): endif +/*MGEN:ENDIF*/ + +qmfgen_sources=/*MGEN:Makefile.GeneratedFiles*/ + |