From 386cee8465119215de67a9e2c767818d4a923578 Mon Sep 17 00:00:00 2001 From: vrokas Date: Sat, 24 Jul 2004 09:30:14 +0000 Subject: [PATCH] Adding version extension according to ChangeLog CVS revision * src/Makefile.in (target all): added dependency 'version.h' * (rule version.h): added rule to create version.h from ChangeLog * src/version.awk: AWK script to create version.h * src/SDCCdwarf2.c (dwWriteModule), * src/SDCCglue.c (initialComments), * src/SDCCmain.c (printVersionInfo): modified to write after version string the version extension number, * src/SDCCutil.c: included "version.h" * (getBuildNumber): NEW, returns SDCC's ChangeLog minor revision number, * src/SDCCutil.h: added prototype for getBuildNumber git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3390 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/Makefile.in | 5 ++++- src/SDCCdwarf2.c | 7 +++++-- src/SDCCglue.c | 2 +- src/SDCCmain.c | 5 +++-- src/SDCCutil.c | 12 ++++++++++++ src/SDCCutil.h | 3 +++ src/version.awk | 26 ++++++++++++++++++++++++++ 7 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/version.awk diff --git a/src/Makefile.in b/src/Makefile.in index 8dcdf7fe..226d81e6 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -44,7 +44,7 @@ TARGET = $(PRJDIR)/bin/sdcc$(EXEEXT) # Compiling entire program or any subproject # ------------------------------------------ -all: checkconf $(TARGET) +all: checkconf version.h $(TARGET) $(PORT_LIBS): FORCE $(MAKE) -C `dirname $@` @@ -117,6 +117,9 @@ SDCCy.c: SDCC.y SDCClex.c: SDCC.lex SDCCy.h $(LEX) -t $< >$@ +version.h: ../ChangeLog + $(AWK) -f version.awk $< > $@ + .y.c: rm -f $*.cc $*.h $(YACC) -d $< diff --git a/src/SDCCdwarf2.c b/src/SDCCdwarf2.c index a84afe26..258c7448 100644 --- a/src/SDCCdwarf2.c +++ b/src/SDCCdwarf2.c @@ -2866,12 +2866,15 @@ int dwWriteType(structdef *sdef, int block, int inStruct, char *tag) int dwWriteModule(char *name) { dwtag * tp; + char verid[125]; dwModuleName = Safe_strdup (name); + + sprintf(verid, "SDCC version %s #%s", SDCC_VERSION_STR, getBuildNumber()); tp = dwNewTag (DW_TAG_compile_unit); - dwAddTagAttr (tp, dwNewAttrString (DW_AT_producer, "SDCC version " - SDCC_VERSION_STR)); + dwAddTagAttr (tp, dwNewAttrString (DW_AT_producer, verid)); + dwAddTagAttr (tp, dwNewAttrConst (DW_AT_language, DW_LANG_C89)); dwAddTagAttr (tp, dwNewAttrString (DW_AT_name, fullSrcFileName)); diff --git a/src/SDCCglue.c b/src/SDCCglue.c index 3e2fb4b6..c4acdfe5 100644 --- a/src/SDCCglue.c +++ b/src/SDCCglue.c @@ -1426,7 +1426,7 @@ initialComments (FILE * afile) time_t t; time (&t); fprintf (afile, "%s", iComments1); - fprintf (afile, "; Version " SDCC_VERSION_STR " (%s)\n", __DATE__); + fprintf (afile, "; Version " SDCC_VERSION_STR " #%s (%s)\n", getBuildNumber(), __DATE__); fprintf (afile, "; This file generated %s", asctime (localtime (&t))); fprintf (afile, "%s", iComments2); } diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 7427f555..9aa914aa 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -400,6 +400,7 @@ _findProcessor (int argc, char **argv) /* no error if processor was not specified. */ } + /*-----------------------------------------------------------------*/ /* printVersionInfo - prints the version info */ /*-----------------------------------------------------------------*/ @@ -417,7 +418,7 @@ printVersionInfo (void) #ifdef SDCC_SUB_VERSION_STR "/" SDCC_SUB_VERSION_STR #endif - " (" __DATE__ ")" + " #%s (" __DATE__ ")" #ifdef __CYGWIN__ " (CYGWIN)\n" #elif defined __MINGW32__ @@ -431,7 +432,7 @@ printVersionInfo (void) #else " (UNIX) \n" #endif - ); + , getBuildNumber() ); } static void diff --git a/src/SDCCutil.c b/src/SDCCutil.c index d100aa46..32c7bf74 100644 --- a/src/SDCCutil.c +++ b/src/SDCCutil.c @@ -36,6 +36,8 @@ #include "findme.h" #endif +#include "version.h" + /** Given an array of name, value string pairs creates a new hash containing all of the pairs. */ @@ -286,6 +288,16 @@ char *strncatz(char *dest, const char *src, size_t n) } +/*-----------------------------------------------------------------*/ +/* getBuildNumber - return build number */ +/*-----------------------------------------------------------------*/ +const char *getBuildNumber(void) +{ + return (SDCC_BUILD_NUMBER); +} + + + #if defined(HAVE_VSNPRINTF) || defined(HAVE_VSPRINTF) size_t SDCCsnprintf(char *dst, size_t n, const char *fmt, ...) { diff --git a/src/SDCCutil.h b/src/SDCCutil.h index e5f64d74..d8956d49 100644 --- a/src/SDCCutil.h +++ b/src/SDCCutil.h @@ -85,6 +85,9 @@ char *strncpyz(char *dest, const char *src, size_t n); */ char *strncatz(char *dest, const char *src, size_t n); +/* return SDCC build number */ +const char *getBuildNumber(void); + /* snprintf, by hook or by crook. */ size_t SDCCsnprintf(char *, size_t, const char *, ...); diff --git a/src/version.awk b/src/version.awk new file mode 100644 index 00000000..b7a1d06d --- /dev/null +++ b/src/version.awk @@ -0,0 +1,26 @@ +BEGIN { +print "/*" +print " * version.h" +print " * controllong build version number" +print " *" +print " * Created automatically with version.awk script" +print " *" +print " */" +print "" +print "#ifndef __VERSION_H__" +print "#define __VERSION_H__" +print "" + +FS="[ \t.]" +} + +/Revision/ { printf "#define SDCC_BUILD_NUMBER\t\"%s\"\n", $3 } + +END { +print "" +print "#ifndef SDCC_BUILD_NUMBER" +print "#define SDCC_BUILD_NUMBER \"0\"" +print "#endif" +print "" +print "#endif" +} -- 2.30.2