diff --git a/engine/qclib/qcc.h b/engine/qclib/qcc.h index 2012bb657..db5c4b8fb 100644 --- a/engine/qclib/qcc.h +++ b/engine/qclib/qcc.h @@ -702,6 +702,7 @@ enum { ERR_INVALIDSTRINGIMMEDIATE, ERR_BADCHARACTERCODE, ERR_BADPARMS, + ERR_WERROR, WARN_MAX }; diff --git a/engine/qclib/qccmain.c b/engine/qclib/qccmain.c index 1558d4bb1..4f63cd7c7 100644 --- a/engine/qclib/qccmain.c +++ b/engine/qclib/qccmain.c @@ -14,6 +14,7 @@ extern int optres_test1; extern int optres_test2; int writeasm; +static pbool pr_werror; pbool QCC_PR_SimpleGetToken (void); @@ -2467,6 +2468,8 @@ void QCC_PR_CommandLinePrecompilerOptions (void) memset(qccwarningdisabled, 0, sizeof(qccwarningdisabled)); else if (!stricmp(myargv[i]+2, "none")) memset(qccwarningdisabled, 1, sizeof(qccwarningdisabled)); + else if(!stricmp(myargv[i]+2, "error")) + pr_werror = true; else if (!stricmp(myargv[i]+2, "no-mundane")) { //disable mundane performance/efficiency/blah warnings that don't affect code. qccwarningdisabled[WARN_SAMENAMEASGLOBAL] = true; @@ -2800,6 +2803,7 @@ void QCC_main (int argc, char **argv) //as part of the quake engine { *compiler_flag[p].enabled = compiler_flag[p].flags & FLAG_ASDEFAULT; } + pr_werror = false; QCC_SetDefaultProperties(); @@ -3194,7 +3198,9 @@ void QCC_FinishCompile(void) } }*/ - + if (pr_werror && pr_werror) + QCC_Error (ERR_PARSEERRORS, "compilation errors"); + // write progdefs.h crc = QCC_PR_WriteProgdefs ("progdefs.h");