From: MaartenBrock Date: Sun, 14 Oct 2007 20:32:34 +0000 (+0000) Subject: * src/SDCCerr.c (vwerror, setWError), X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=f238f5dbbb3b1953f058349fcdadfa62db14ecce;p=fw%2Fsdcc * src/SDCCerr.c (vwerror, setWError), * src/SDCCerr.h, * src/SDCCmain.c (parseCmdLine): added option --Werror to treat all warnings as errors, thanks Stas Sergeev for PATCH 1813211 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4932 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 056ba649..70b9eb99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ * src/SDCCast.h: replaced AST_LIT_VALUE with AST_FLOAT_VALUE and AST_ULONG_VALUE * src/SDCCast.c (decorateType): improved optimization of tri-op + * src/SDCCerr.c (vwerror, setWError), + * src/SDCCerr.h, + * src/SDCCmain.c (parseCmdLine): added option --Werror to treat all + warnings as errors, thanks Stas Sergeev for PATCH 1813211 2007-10-13 Maarten Brock diff --git a/src/SDCCerr.c b/src/SDCCerr.c index a20917f0..610f9508 100644 --- a/src/SDCCerr.c +++ b/src/SDCCerr.c @@ -484,7 +484,7 @@ void vwerror (int errNum, va_list marker) } if ((ErrTab[errNum].errType >= _SDCCERRG.logLevel) && (!_SDCCERRG.disabled[errNum])) { - if ( ErrTab[errNum].errType == ERROR_LEVEL_ERROR ) + if ( ErrTab[errNum].errType == ERROR_LEVEL_ERROR || _SDCCERRG.werror ) fatalError++ ; if ( filename && lineno ) { @@ -505,7 +505,10 @@ void vwerror (int errNum, va_list marker) break; case ERROR_LEVEL_WARNING: case ERROR_LEVEL_PEDANTIC: - fprintf(_SDCCERRG.out, "warning %d: ", errNum); + if (_SDCCERRG.werror) + fprintf(_SDCCERRG.out, "error %d: ", errNum); + else + fprintf(_SDCCERRG.out, "warning %d: ", errNum); break; case ERROR_LEVEL_INFO: fprintf(_SDCCERRG.out, "info %d: ", errNum); @@ -599,3 +602,14 @@ void setWarningDisabled (int errNum) if ((errNum < MAX_ERROR_WARNING) && (ErrTab[errNum].errType <= ERROR_LEVEL_WARNING)) _SDCCERRG.disabled[errNum] = 1; } + +/* +------------------------------------------------------------------------------- +Set the flag to treat warnings as errors +------------------------------------------------------------------------------- +*/ + +void setWError (int flag) +{ + _SDCCERRG.werror = flag; +} diff --git a/src/SDCCerr.h b/src/SDCCerr.h index e523cc7a..3bccf1df 100644 --- a/src/SDCCerr.h +++ b/src/SDCCerr.h @@ -238,6 +238,7 @@ struct SDCCERRG { ERROR_LOG_LEVEL logLevel; FILE *out; int style; /* 1=MSVC */ + int werror; /* treat the warnings as errors */ char disabled[MAX_ERROR_WARNING]; /* 1=warning disabled*/ }; @@ -310,4 +311,11 @@ disabled - Disable output of specified warning void setWarningDisabled (int errNum) ; +/* +------------------------------------------------------------------------------- +Set the flag to treat warnings as errors +------------------------------------------------------------------------------- +*/ +void setWError (int flag); + #endif diff --git a/src/SDCCmain.c b/src/SDCCmain.c index e7d91fcd..aa1e5e46 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -120,6 +120,7 @@ char buffer[PATH_MAX * 2]; #define OPTION_NO_LOOP_IND "--noinduction" #define OPTION_LESS_PEDANTIC "--less-pedantic" #define OPTION_DISABLE_WARNING "--disable-warning" +#define OPTION_WERROR "--Werror" #define OPTION_NO_GCSE "--nogcse" #define OPTION_SHORT_IS_8BITS "--short-is-8bits" #define OPTION_NO_XINIT_OPT "--no-xinit-opt" @@ -167,6 +168,7 @@ optionsTable[] = { { 0, "--nostdinc", &options.nostdinc, "Do not include the standard include directory in the search path" }, { 0, OPTION_LESS_PEDANTIC, NULL, "Disable some of the more pedantic warnings" }, { 0, OPTION_DISABLE_WARNING, NULL, " Disable specific warning" }, + { 0, OPTION_WERROR, NULL, "Treat the warnings as errors" }, { 0, "--debug", &options.debug, "Enable debugging symbol output" }, { 0, "--cyclomatic", &options.cyclomatic, "Display complexity of compiled functions" }, { 0, OPTION_STD_C89, NULL, "Use C89 standard only" }, @@ -1037,6 +1039,13 @@ parseCmdLine (int argc, char **argv) continue; } + if (strcmp (argv[i], OPTION_WERROR) == 0) + { + setWError(1); + addSet(&preArgvSet, Safe_strdup("-Werror")); + continue; + } + if (strcmp (&argv[i][1], OPTION_SHORT_IS_8BITS) == 0) { options.shortis8bits=1;