summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-11-12 19:50:11 +0000
committerTed Ross <tross@apache.org>2008-11-12 19:50:11 +0000
commitcfcad9a8e48d6530ec3f640181a9f75d85c57aa6 (patch)
tree90a634a168d08c619cbba67c746b7e2bd2088860 /cpp
parent0266626840a722b83c3a033c7374f568a0cc9ef1 (diff)
downloadqpid-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-xcpp/managementgen/qmf-gen33
-rwxr-xr-xcpp/managementgen/qmf/generate.py25
-rw-r--r--cpp/managementgen/qmf/templates/Makefile.mk7
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*/
+