From 47eba1fd0b22821100f18893d1b7e88b12d9c99f Mon Sep 17 00:00:00 2001 From: Yannick Brosseau Date: Sat, 22 Jun 2013 13:48:27 -0400 Subject: [PATCH] Allow #include in template (.tp) file The #include directive won't be parsed, but will be copied to the generated .h files. Also add a verbose (-v) mode to display some debugging output Signed-off-by: Yannick Brosseau Signed-off-by: Mathieu Desnoyers --- tools/lttng-gen-tp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp index 5937dfdf..1ff91464 100755 --- a/tools/lttng-gen-tp +++ b/tools/lttng-gen-tp @@ -145,6 +145,8 @@ class ObjFile: cflags = "" command = cc + " -c " + cflags + " -I. -llttng-ust" + " -o " + self.outputFilename + " " + cFilename + if verbose: + print("Compile command: " + command) subprocess.call(command.split()) class TemplateFile: @@ -159,12 +161,16 @@ class TemplateFile: self.text = f.read() - #Remove # comments (from input and output file - removeComments = re.compile("#.*$",flags=re.MULTILINE) + #Remove # comments (from input and output file) but keep + # #include in the output file + removeComments = re.compile("#[^include].*$",flags=re.MULTILINE) self.text = removeComments.sub("",self.text) + # Remove #include directive from the parsed text + removePreprocess = re.compile("#.*$",flags=re.MULTILINE) + noPreprocess = removePreprocess.sub("", self.text) #Remove // comments removeLineComment = re.compile("\/\/.*$",flags=re.MULTILINE) - nolinecomment = removeLineComment.sub("",self.text) + nolinecomment = removeLineComment.sub("", noPreprocess) #Remove all spaces and lines cleantext = re.sub("\s*","",nolinecomment) #Remove multine C style comments @@ -184,6 +190,8 @@ class TemplateFile: if self.domain != domain: print "Warning: different domain provided (%s,%s)" % (self.domain, domain) +verbose=False + usage=""" lttng-gen-tp - Generate the LTTng-UST header and source based on a simple template @@ -206,7 +214,7 @@ def main(argv=None): try: try: - opts, args = getopt.gnu_getopt(argv[1:], "ho:a", ["help"]) + opts, args = getopt.gnu_getopt(argv[1:], "ho:av", ["help","verbose"]) except getopt.error, msg: raise Usage(msg) @@ -224,6 +232,9 @@ def main(argv=None): outputNames.append(a) if o in ("-a",""): all = True + if o in ("-v", "--verbose"): + global verbose + verbose = True try: if len(args) == 0: raise Usage("No template file given") -- 2.34.1