Add a --warnings-as-errors to cl65.

This commit is contained in:
Kugel Fuhr
2025-07-10 21:41:53 +02:00
parent c2f17b6f6b
commit 2e4c18770b
6 changed files with 81 additions and 66 deletions

View File

@@ -898,7 +898,8 @@ static void Usage (void)
" --version\t\t\tPrint the version number\n" " --version\t\t\tPrint the version number\n"
" --verbose\t\t\tVerbose mode\n" " --verbose\t\t\tVerbose mode\n"
" --zeropage-label name\t\tDefine and export a ZEROPAGE segment label\n" " --zeropage-label name\t\tDefine and export a ZEROPAGE segment label\n"
" --zeropage-name seg\t\tSet the name of the ZEROPAGE segment\n", " --zeropage-name seg\t\tSet the name of the ZEROPAGE segment\n"
" --warnings-as-errors\t\tTreat warnings as errors\n",
ProgName); ProgName);
} }
@@ -1435,6 +1436,16 @@ static void OptZeropageName (const char* Opt attribute ((unused)), const char* A
static void OptWarningsAsErrors (const char* Opt attribute ((unused)),
const char* Arg attribute ((unused)))
/* Handle the --warnings-as-errors option */
{
CmdAddArg (&CA65, "--warnings-as-errors");
CmdAddArg (&LD65, "--warnings-as-errors");
}
int main (int argc, char* argv []) int main (int argc, char* argv [])
/* Utility main program */ /* Utility main program */
{ {
@@ -1481,7 +1492,7 @@ int main (int argc, char* argv [])
{ "--o65-model", 1, OptO65Model }, { "--o65-model", 1, OptO65Model },
{ "--obj", 1, OptObj }, { "--obj", 1, OptObj },
{ "--obj-path", 1, OptObjPath }, { "--obj-path", 1, OptObjPath },
{ "--print-target-path", 0, OptPrintTargetPath}, { "--print-target-path", 0, OptPrintTargetPath },
{ "--register-space", 1, OptRegisterSpace }, { "--register-space", 1, OptRegisterSpace },
{ "--register-vars", 0, OptRegisterVars }, { "--register-vars", 0, OptRegisterVars },
{ "--rodata-name", 1, OptRodataName }, { "--rodata-name", 1, OptRodataName },
@@ -1494,6 +1505,7 @@ int main (int argc, char* argv [])
{ "--version", 0, OptVersion }, { "--version", 0, OptVersion },
{ "--zeropage-label", 1, OptZeropageLabel }, { "--zeropage-label", 1, OptZeropageLabel },
{ "--zeropage-name", 1, OptZeropageName }, { "--zeropage-name", 1, OptZeropageName },
{ "--warnings-as-errors", 0, OptWarningsAsErrors },
}; };
char* CmdPath; char* CmdPath;

View File

@@ -1291,7 +1291,7 @@ static void ParseConDes (void)
AttrCheck (AttrFlags, atType, "TYPE"); AttrCheck (AttrFlags, atType, "TYPE");
/* Check if the condes has already attributes defined */ /* Check if the condes has already attributes defined */
if (ConDesHasSegName(Type) || ConDesHasLabel(Type)) { if (ConDesHasSegName (Type) || ConDesHasLabel (Type)) {
PError (&CfgErrorPos, PError (&CfgErrorPos,
"`CONDES' attributes for type %d are already defined", "`CONDES' attributes for type %d are already defined",
Type); Type);

View File

@@ -313,7 +313,7 @@ static void OptCfgPath (const char* Opt attribute ((unused)), const char* Arg)
static void OptColor(const char* Opt, const char* Arg) static void OptColor (const char* Opt, const char* Arg)
/* Handle the --color option */ /* Handle the --color option */
{ {
ColorMode Mode = CP_Parse (Arg); ColorMode Mode = CP_Parse (Arg);
@@ -648,7 +648,7 @@ static void CmdlOptTarget (const char* Opt attribute ((unused)), const char* Arg
static void ParseCommandLine(void) static void ParseCommandLine (void)
{ {
/* Program long options */ /* Program long options */
static const LongOpt OptTab[] = { static const LongOpt OptTab[] = {
@@ -886,7 +886,7 @@ int main (int argc, char* argv [])
} }
if (WarningCount > 0 && WarningsAsErrors) { if (WarningCount > 0 && WarningsAsErrors) {
Error("Warnings as errors"); Error ("Warnings as errors");
} }
/* Create the output file */ /* Create the output file */

View File

@@ -493,7 +493,7 @@ void CfgSpecialToken (const IdentTok* Table, unsigned Size, const char* Name)
SB_Done (&Note); SB_Done (&Note);
} }
PError (&CfgErrorPos, "%s expected but got `%s'", Name, PError (&CfgErrorPos, "%s expected but got `%s'", Name,
SB_GetConstBuf(&CfgSVal)); SB_GetConstBuf (&CfgSVal));
return; return;
} }

View File

@@ -642,11 +642,9 @@ void PrintDbgSegments (FILE* F)
fprintf (F, ",oname=\"%s\",ooffs=%lu", fprintf (F, ",oname=\"%s\",ooffs=%lu",
S->OutputName, S->OutputOffs); S->OutputName, S->OutputOffs);
} }
if (S->MemArea) { if (S->MemArea && S->MemArea->BankExpr) {
if (S->MemArea->BankExpr) {
if (IsConstExpr (S->MemArea->BankExpr)) { if (IsConstExpr (S->MemArea->BankExpr)) {
fprintf (F, ",bank=%lu", GetExprVal(S->MemArea->BankExpr)); fprintf (F, ",bank=%lu", GetExprVal (S->MemArea->BankExpr));
}
} }
} }
fputc ('\n', F); fputc ('\n', F);

View File

@@ -120,7 +120,9 @@ void XexSetRunAd (XexDesc* D, Import *RunAd)
D->RunAd = RunAd; D->RunAd = RunAd;
} }
XexInitAd* XexSearchInitMem(XexDesc* D, MemoryArea *InitMem)
XexInitAd* XexSearchInitMem (XexDesc* D, MemoryArea *InitMem)
{ {
XexInitAd* I; XexInitAd* I;
for (I=D->InitAds; I != 0; I=I->next) for (I=D->InitAds; I != 0; I=I->next)
@@ -132,6 +134,7 @@ XexInitAd* XexSearchInitMem(XexDesc* D, MemoryArea *InitMem)
} }
int XexAddInitAd (XexDesc* D, MemoryArea *InitMem, Import *InitAd) int XexAddInitAd (XexDesc* D, MemoryArea *InitMem, Import *InitAd)
/* Sets and INITAD for the given memory area */ /* Sets and INITAD for the given memory area */
{ {
@@ -149,6 +152,8 @@ int XexAddInitAd (XexDesc* D, MemoryArea *InitMem, Import *InitAd)
return 0; return 0;
} }
static unsigned XexWriteExpr (ExprNode* E, int Signed, unsigned Size, static unsigned XexWriteExpr (ExprNode* E, int Signed, unsigned Size,
unsigned long Offs attribute ((unused)), unsigned long Offs attribute ((unused)),
void* Data) void* Data)