1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-13 09:31:53 +00:00

The assembler options -l and --listing will now take the name of the listing

file as an argument.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4967 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2011-02-06 20:10:19 +00:00
parent 3b9032a7c4
commit a6389e6406
7 changed files with 51 additions and 52 deletions

View File

@ -95,7 +95,7 @@ Short options:
-g Add debug info to object file -g Add debug info to object file
-h Help (this text) -h Help (this text)
-i Ignore case of symbols -i Ignore case of symbols
-l Create a listing if assembly was ok -l name Create a listing file if assembly was ok
-mm model Set the memory model -mm model Set the memory model
-o name Name the output file -o name Name the output file
-s Enable smart mode -s Enable smart mode
@ -114,7 +114,7 @@ Long options:
--help Help (this text) --help Help (this text)
--ignore-case Ignore case of symbols --ignore-case Ignore case of symbols
--include-dir dir Set an include directory search path --include-dir dir Set an include directory search path
--listing Create a listing if assembly was ok --listing name Create a listing file if assembly was ok
--list-bytes n Maximum number of bytes per listing line --list-bytes n Maximum number of bytes per listing line
--macpack-dir dir Set a macro package directory --macpack-dir dir Set a macro package directory
--memory-model model Set the memory model --memory-model model Set the memory model
@ -219,11 +219,10 @@ Here is a description of all the command line options:
<label id="option-l"> <label id="option-l">
<tag><tt>-l, --listing</tt></tag> <tag><tt>-l name, --listing name</tt></tag>
Generate an assembler listing. The listing file will always have the Generate an assembler listing with the given name. A listing file will
name of the main input file with the extension replaced by ".lst". This never be generated in case of assembly errors.
may change in future versions.
<label id="option--list-bytes"> <label id="option--list-bytes">
@ -2393,7 +2392,7 @@ Here's a list of all control commands and a description, what they do:
.elseif bar = 1 .elseif bar = 1
... ...
.else .else
.fatal "Must define foo or bar!" .fatal "Must define foo or bar!"
.endif .endif
</verb></tscreen> </verb></tscreen>

View File

@ -38,7 +38,7 @@ Short options:
-d Debug mode -d Debug mode
-g Add debug info -g Add debug info
-h Help (this text) -h Help (this text)
-l Create an assembler listing -l name Create an assembler listing file
-m name Create a map file -m name Create a map file
-mm model Set the memory model -mm model Set the memory model
-o name Name the output file -o name Name the output file
@ -94,7 +94,7 @@ Long options:
--lib file Link this library --lib file Link this library
--lib-path path Specify a library search path --lib-path path Specify a library search path
--list-targets List all available targets --list-targets List all available targets
--listing Create an assembler listing --listing name Create an assembler listing file
--list-bytes n Number of bytes per assembler listing line --list-bytes n Number of bytes per assembler listing line
--mapfile name Create a map file --mapfile name Create a map file
--memory-model model Set the memory model --memory-model model Set the memory model

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 1998-2010, Ullrich von Bassewitz */ /* (C) 1998-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -50,13 +50,12 @@
/* File names */ /* File names */
const char* InFile = 0; /* Name of input file */ const char* InFile = 0; /* Name of input file */
const char* OutFile = 0; /* Name of output file */ const char* OutFile = 0; /* Name of output file */
const char* ListFile = 0; /* Name of listing file */ StrBuf ListingName = STATIC_STRBUF_INITIALIZER; /* Name of listing file */
StrBuf DepName = STATIC_STRBUF_INITIALIZER; /* Dependency file */ StrBuf DepName = STATIC_STRBUF_INITIALIZER; /* Dependency file */
StrBuf FullDepName = STATIC_STRBUF_INITIALIZER; /* Full dependency file */ StrBuf FullDepName = STATIC_STRBUF_INITIALIZER; /* Full dependency file */
/* Default extensions */ /* Default extensions */
const char ObjExt[] = ".o";/* Default object extension */ const char ObjExt[] = ".o";/* Default object extension */
const char ListExt[] = ".lst"; /* Default listing extension */
char LocalStart = '@'; /* This char starts local symbols */ char LocalStart = '@'; /* This char starts local symbols */
@ -64,7 +63,6 @@ unsigned char IgnoreCase = 0; /* Ignore case on identifiers? */
unsigned char AutoImport = 0; /* Mark unresolveds as import */ unsigned char AutoImport = 0; /* Mark unresolveds as import */
unsigned char SmartMode = 0; /* Smart mode */ unsigned char SmartMode = 0; /* Smart mode */
unsigned char DbgSyms = 0; /* Add debug symbols */ unsigned char DbgSyms = 0; /* Add debug symbols */
unsigned char Listing = 0; /* Create listing file */
unsigned char LineCont = 0; /* Allow line continuation */ unsigned char LineCont = 0; /* Allow line continuation */
/* Emulation features */ /* Emulation features */
@ -82,7 +80,7 @@ unsigned char OrgPerSeg = 0; /* Make .org local to current seg */
unsigned char CComments = 0; /* Allow C like comments */ unsigned char CComments = 0; /* Allow C like comments */
/* Misc stuff */ /* Misc stuff */
const char Copyright[] = "(C) Copyright 1998-2010 Ullrich von Bassewitz"; const char Copyright[] = "(C) Copyright 1998-2011 Ullrich von Bassewitz";

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 1998-2010, Ullrich von Bassewitz */ /* (C) 1998-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -52,13 +52,12 @@
/* File names */ /* File names */
extern const char* InFile; /* Name of input file */ extern const char* InFile; /* Name of input file */
extern const char* OutFile; /* Name of output file */ extern const char* OutFile; /* Name of output file */
extern const char* ListFile; /* Name of listing file */ extern StrBuf ListingName; /* Name of listing file */
extern StrBuf DepName; /* Name of dependencies file */ extern StrBuf DepName; /* Name of dependencies file */
extern StrBuf FullDepName; /* Name of full dependencies file */ extern StrBuf FullDepName; /* Name of full dependencies file */
/* Default extensions */ /* Default extensions */
extern const char ObjExt[]; /* Default object extension */ extern const char ObjExt[]; /* Default object extension */
extern const char ListExt[]; /* Default listing extension */
extern char LocalStart; /* This char starts local symbols */ extern char LocalStart; /* This char starts local symbols */
@ -66,7 +65,6 @@ extern unsigned char IgnoreCase; /* Ignore case on identifiers? */
extern unsigned char AutoImport; /* Mark unresolveds as import */ extern unsigned char AutoImport; /* Mark unresolveds as import */
extern unsigned char SmartMode; /* Smart mode */ extern unsigned char SmartMode; /* Smart mode */
extern unsigned char DbgSyms; /* Add debug symbols */ extern unsigned char DbgSyms; /* Add debug symbols */
extern unsigned char Listing; /* Create listing file */
extern unsigned char LineCont; /* Allow line continuation */ extern unsigned char LineCont; /* Allow line continuation */
/* Emulation features */ /* Emulation features */

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2009, Ullrich von Bassewitz */ /* (C) 2000-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -85,7 +85,7 @@ void NewListingLine (const char* Line, unsigned char File, unsigned char Depth)
/* Create a new ListLine struct and insert it */ /* Create a new ListLine struct and insert it */
{ {
/* Store only if listing is enabled */ /* Store only if listing is enabled */
if (Listing) { if (SB_GetLen (&ListingName) > 0) {
ListLine* L; ListLine* L;
@ -128,7 +128,7 @@ void NewListingLine (const char* Line, unsigned char File, unsigned char Depth)
void EnableListing (void) void EnableListing (void)
/* Enable output of lines to the listing */ /* Enable output of lines to the listing */
{ {
if (Listing) { if (SB_GetLen (&ListingName) > 0) {
/* If we're about to enable the listing, do this for the current line /* If we're about to enable the listing, do this for the current line
* also, so we will see the source line that did this. * also, so we will see the source line that did this.
*/ */
@ -143,7 +143,7 @@ void EnableListing (void)
void DisableListing (void) void DisableListing (void)
/* Disable output of lines to the listing */ /* Disable output of lines to the listing */
{ {
if (Listing) { if (SB_GetLen (&ListingName) > 0) {
if (ListingEnabled == 0) { if (ListingEnabled == 0) {
/* Cannot switch the listing off once more */ /* Cannot switch the listing off once more */
Error ("Counter underflow"); Error ("Counter underflow");
@ -169,7 +169,7 @@ void SetListBytes (int Bytes)
void InitListingLine (void) void InitListingLine (void)
/* Initialize the current listing line */ /* Initialize the current listing line */
{ {
if (Listing) { if (SB_GetLen (&ListingName) > 0) {
/* Make the last loaded line the current line */ /* Make the last loaded line the current line */
/* ###### This code is a hack! We really need to do it right /* ###### This code is a hack! We really need to do it right
* as soon as we know, how:-( * as soon as we know, how:-(
@ -300,15 +300,12 @@ void CreateListing (void)
ListLine* L; ListLine* L;
char HeaderBuf [LINE_HEADER_LEN+1]; char HeaderBuf [LINE_HEADER_LEN+1];
/* Create the name of the listing file if needed */
if (ListFile == 0) {
ListFile = MakeFilename (InFile, ListExt);
}
/* Open the real listing file */ /* Open the real listing file */
F = fopen (ListFile, "w"); F = fopen (SB_GetConstBuf (&ListingName), "w");
if (F == 0) { if (F == 0) {
Fatal ("Cannot open listing file: %s", strerror (errno)); Fatal ("Cannot open listing file `%s': %s",
SB_GetConstBuf (&ListingName),
strerror (errno));
} }
/* Reset variables, print the header for the first page */ /* Reset variables, print the header for the first page */

View File

@ -97,7 +97,7 @@ static void Usage (void)
" -g\t\t\t\tAdd debug info to object file\n" " -g\t\t\t\tAdd debug info to object file\n"
" -h\t\t\t\tHelp (this text)\n" " -h\t\t\t\tHelp (this text)\n"
" -i\t\t\t\tIgnore case of symbols\n" " -i\t\t\t\tIgnore case of symbols\n"
" -l\t\t\t\tCreate a listing if assembly was ok\n" " -l name\t\t\tCreate a listing file if assembly was ok\n"
" -mm model\t\t\tSet the memory model\n" " -mm model\t\t\tSet the memory model\n"
" -o name\t\t\tName the output file\n" " -o name\t\t\tName the output file\n"
" -s\t\t\t\tEnable smart mode\n" " -s\t\t\t\tEnable smart mode\n"
@ -116,7 +116,7 @@ static void Usage (void)
" --help\t\t\tHelp (this text)\n" " --help\t\t\tHelp (this text)\n"
" --ignore-case\t\t\tIgnore case of symbols\n" " --ignore-case\t\t\tIgnore case of symbols\n"
" --include-dir dir\t\tSet an include directory search path\n" " --include-dir dir\t\tSet an include directory search path\n"
" --listing\t\t\tCreate a listing if assembly was ok\n" " --listing name\t\tCreate a listing file if assembly was ok\n"
" --list-bytes n\t\tMaximum number of bytes per listing line\n" " --list-bytes n\t\tMaximum number of bytes per listing line\n"
" --macpack-dir dir\t\tSet a macro package directory\n" " --macpack-dir dir\t\tSet a macro package directory\n"
" --memory-model model\t\tSet the memory model\n" " --memory-model model\t\tSet the memory model\n"
@ -388,7 +388,7 @@ static void OptCreateDep (const char* Opt, const char* Arg)
static void OptCreateFullDep (const char* Opt attribute ((unused)), static void OptCreateFullDep (const char* Opt attribute ((unused)),
const char* Arg) const char* Arg)
/* Handle the --create-full-dep option */ /* Handle the --create-full-dep option */
{ {
FileNameOption (Opt, Arg, &FullDepName); FileNameOption (Opt, Arg, &FullDepName);
@ -477,11 +477,19 @@ static void OptListBytes (const char* Opt, const char* Arg)
static void OptListing (const char* Opt attribute ((unused)), static void OptListing (const char* Opt, const char* Arg)
const char* Arg attribute ((unused)))
/* Create a listing file */ /* Create a listing file */
{ {
Listing = 1; /* Since the meaning of -l and --listing has changed, print an error if
* the filename is empty or begins with the option char.
*/
if (Arg == 0 || *Arg == '\0' || *Arg == '-') {
Fatal ("The meaning of `%s' has changed. It does now "
"expect a file name as argument.", Opt);
}
/* Get the file name */
FileNameOption (Opt, Arg, &ListingName);
} }
@ -836,7 +844,7 @@ int main (int argc, char* argv [])
{ "--ignore-case", 0, OptIgnoreCase }, { "--ignore-case", 0, OptIgnoreCase },
{ "--include-dir", 1, OptIncludeDir }, { "--include-dir", 1, OptIncludeDir },
{ "--list-bytes", 1, OptListBytes }, { "--list-bytes", 1, OptListBytes },
{ "--listing", 0, OptListing }, { "--listing", 1, OptListing },
{ "--macpack-dir", 1, OptMacPackDir }, { "--macpack-dir", 1, OptMacPackDir },
{ "--memory-model", 1, OptMemoryModel }, { "--memory-model", 1, OptMemoryModel },
{ "--pagelength", 1, OptPageLength }, { "--pagelength", 1, OptPageLength },
@ -862,7 +870,7 @@ int main (int argc, char* argv [])
*/ */
SymEnterLevel (&GlobalNameSpace, ST_GLOBAL, ADDR_SIZE_DEFAULT); SymEnterLevel (&GlobalNameSpace, ST_GLOBAL, ADDR_SIZE_DEFAULT);
/* Initialize the line infos. Must be done here, since we need line infos /* Initialize the line infos. Must be done here, since we need line infos
* for symbol definitions. * for symbol definitions.
*/ */
InitLineInfo (); InitLineInfo ();
@ -895,7 +903,7 @@ int main (int argc, char* argv [])
break; break;
case 'l': case 'l':
OptListing (Arg, 0); OptListing (Arg, GetArg (&I, 2));
break; break;
case 'm': case 'm':
@ -1033,7 +1041,7 @@ int main (int argc, char* argv [])
*/ */
if (ErrorCount == 0) { if (ErrorCount == 0) {
CreateObjFile (); CreateObjFile ();
if (Listing) { if (SB_GetLen (&ListingName) > 0) {
CreateListing (); CreateListing ();
} }
CreateDependencies (); CreateDependencies ();

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 1999-2010, Ullrich von Bassewitz */ /* (C) 1999-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -668,7 +668,7 @@ static void Usage (void)
" -d\t\t\t\tDebug mode\n" " -d\t\t\t\tDebug mode\n"
" -g\t\t\t\tAdd debug info\n" " -g\t\t\t\tAdd debug info\n"
" -h\t\t\t\tHelp (this text)\n" " -h\t\t\t\tHelp (this text)\n"
" -l\t\t\t\tCreate an assembler listing\n" " -l name\t\t\tCreate an assembler listing file\n"
" -m name\t\t\tCreate a map file\n" " -m name\t\t\tCreate a map file\n"
" -mm model\t\t\tSet the memory model\n" " -mm model\t\t\tSet the memory model\n"
" -o name\t\t\tName the output file\n" " -o name\t\t\tName the output file\n"
@ -724,7 +724,7 @@ static void Usage (void)
" --lib file\t\t\tLink this library\n" " --lib file\t\t\tLink this library\n"
" --lib-path path\t\tSpecify a library search path\n" " --lib-path path\t\tSpecify a library search path\n"
" --list-targets\t\tList all available targets\n" " --list-targets\t\tList all available targets\n"
" --listing\t\t\tCreate an assembler listing\n" " --listing name\t\tCreate an assembler listing file\n"
" --list-bytes n\t\tNumber of bytes per assembler listing line\n" " --list-bytes n\t\tNumber of bytes per assembler listing line\n"
" --mapfile name\t\tCreate a map file\n" " --mapfile name\t\tCreate a map file\n"
" --memory-model model\t\tSet the memory model\n" " --memory-model model\t\tSet the memory model\n"
@ -766,7 +766,7 @@ static void OptAsmArgs (const char* Opt attribute ((unused)), const char* Arg)
} }
static void OptAsmDefine (const char* Opt attribute ((unused)), const char* Arg) static void OptAsmDefine (const char* Opt attribute ((unused)), const char* Arg)
/* Define an assembler symbol (assembler) */ /* Define an assembler symbol (assembler) */
{ {
@ -1009,17 +1009,16 @@ static void OptListBytes (const char* Opt attribute ((unused)), const char* Arg)
static void OptListing (const char* Opt attribute ((unused)), static void OptListing (const char* Opt attribute ((unused)), const char* Arg)
const char* Arg attribute ((unused)))
/* Create an assembler listing */ /* Create an assembler listing */
{ {
CmdAddArg (&CA65, "-l"); CmdAddArg2 (&CA65, "-l", Arg);
} }
static void OptListTargets (const char* Opt attribute ((unused)), static void OptListTargets (const char* Opt attribute ((unused)),
const char* Arg attribute ((unused))) const char* Arg attribute ((unused)))
/* List all targets */ /* List all targets */
{ {
unsigned I; unsigned I;
@ -1191,7 +1190,7 @@ static void OptVersion (const char* Opt attribute ((unused)),
/* Print version number */ /* Print version number */
{ {
fprintf (stderr, fprintf (stderr,
"cl65 V%s - (C) Copyright 1998-2009 Ullrich von Bassewitz\n", "cl65 V%s - (C) Copyright 1998-2011 Ullrich von Bassewitz\n",
GetVersionAsString ()); GetVersionAsString ());
} }
@ -1247,7 +1246,7 @@ int main (int argc, char* argv [])
{ "--lib", 1, OptLib }, { "--lib", 1, OptLib },
{ "--lib-path", 1, OptLibPath }, { "--lib-path", 1, OptLibPath },
{ "--list-targets", 0, OptListTargets }, { "--list-targets", 0, OptListTargets },
{ "--listing", 0, OptListing }, { "--listing", 1, OptListing },
{ "--list-bytes", 1, OptListBytes }, { "--list-bytes", 1, OptListBytes },
{ "--mapfile", 1, OptMapFile }, { "--mapfile", 1, OptMapFile },
{ "--memory-model", 1, OptMemoryModel }, { "--memory-model", 1, OptMemoryModel },
@ -1403,7 +1402,7 @@ int main (int argc, char* argv [])
case 'l': case 'l':
/* Create an assembler listing */ /* Create an assembler listing */
OptListing (Arg, 0); OptListing (Arg, GetArg (&I, 2));
break; break;
case 'm': case 'm':