add --version
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 5 Dec 2007 14:25:23 +0000 (14:25 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 5 Dec 2007 14:25:23 +0000 (14:25 +0000)
[r18605]

Makefile
main.c

index 34d5579..d1490f1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -79,6 +79,11 @@ build/%.o: %.c
 #      $(Q)$(GCCO1) $(CPPFLAGS) $(CFLAGS) -O1 -c $< -o $@
        $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
 
+revision.h:
+       @echo "#define cparser_REVISION \"`svnversion -n .`\"" > .revision.h
+       $(Q)[ -n "`diff -Nq .revision.h revision.h`" ] && echo "===> Updating revision.h" && cp .revision.h revision.h
+       $(Q)rm .revision.h
+
 clean:
        @echo '===> CLEAN'
        $(Q)rm -rf build $(GOAL) .depend
diff --git a/main.c b/main.c
index a13ecf3..49446f0 100644 (file)
--- a/main.c
+++ b/main.c
 #include "parser.h"
 #include "ast2firm.h"
 #include "lang_features.h"
+#include "driver/firm_opt.h"
 #include "driver/firm_cmdline.h"
 #include "adt/error.h"
 #include "write_fluffy.h"
-#include "driver/firm_opt.h"
+#include "revision.h"
 
 #ifndef PREPROCESSOR
 #define PREPROCESSOR "cpp -std=c99 -U__WCHAR_TYPE__ -D__WCHAR_TYPE__=int"
@@ -373,6 +374,20 @@ int main(int argc, char **argv)
                        mode = PrintAst;
                } else if(strcmp(arg, "--print-fluffy") == 0) {
                        mode = PrintFluffy;
+               } else if(strcmp(arg, "--version") == 0) {
+                       firm_version_t ver;
+                       firm_get_version(&ver);
+                       printf("cparser (%d.%d %s) using libFirm (%d.%d", 0, 1, cparser_REVISION, ver.major, ver.minor);
+                       if(ver.revision[0] != 0) {
+                               putchar(' ');
+                               fputs(ver.revision, stdout);
+                       }
+                       if(ver.build[0] != 0) {
+                               putchar(' ');
+                               fputs(ver.build, stdout);
+                       }
+                       puts(")\n");
+                       exit(EXIT_SUCCESS);
                } else if(strcmp(arg, "-fsyntax-only") == 0) {
                        mode = ParseOnly;
                } else if(strncmp(arg, "-I", 2) == 0) {