X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCmain.c;h=f4c21bf1b66312eeceab11718d8c49d3b235b99f;hb=ae803653f2cdd9191b31e8f47853abbc454bdcce;hp=a418d6fb76c90804af04665e694386efc3b2b7fd;hpb=45f3be401cb70e312b1185e96b9fc6279f930981;p=fw%2Fsdcc diff --git a/src/SDCCmain.c b/src/SDCCmain.c index a418d6fb..f4c21bf1 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -135,7 +135,7 @@ char buffer[PATH_MAX * 2]; #define OPTION_PACK_IRAM "--pack-iram" #define OPTION_NO_PACK_IRAM "--no-pack-iram" #define OPTION_NO_PEEP_COMMENTS "--no-peep-comments" -#define OPTION_NO_VERBOSE_ASM "--fno-verbose-asm" +#define OPTION_VERBOSE_ASM "--fverbose-asm" #define OPTION_OPT_CODE_SPEED "--opt-code-speed" #define OPTION_OPT_CODE_SIZE "--opt-code-size" #define OPTION_STD_C89 "--std-c89" @@ -220,7 +220,7 @@ optionsTable[] = { { 0, OPTION_NO_XINIT_OPT, &options.noXinitOpt, "don't memcpy initialized xram from code"}, { 0, OPTION_NO_CCODE_IN_ASM, &options.noCcodeInAsm, "don't include c-code as comments in the asm file"}, { 0, OPTION_NO_PEEP_COMMENTS, &options.noPeepComments, "don't include peephole optimizer comments"}, - { 0, OPTION_NO_VERBOSE_ASM, &options.noVerboseAsm, "don't include code generator comments"}, + { 0, OPTION_VERBOSE_ASM, &options.verboseAsm, "include code generator comments"}, #if !OPT_DISABLE_Z80 || !OPT_DISABLE_GBZ80 { 0, "--no-std-crt0", &options.no_std_crt0, "For the z80/gbz80 do not link default crt0.o"}, #endif @@ -585,8 +585,8 @@ setDefaultOptions (void) options.shortis8bits = 0; options.std_sdcc = 1; /* enable SDCC language extensions */ options.std_c99 = 0; /* default to C89 until more C99 support */ - options.code_seg = CODE_NAME; /* default to CSEG for generated code */ - options.const_seg = CONST_NAME; /* default to CONST for generated code */ + options.code_seg = CODE_NAME ? Safe_strdup(CODE_NAME) : NULL; /* default to CSEG for generated code */ + options.const_seg = CONST_NAME ? Safe_strdup(CONST_NAME) : NULL; /* default to CONST for generated code */ options.stack10bit=0; @@ -888,6 +888,12 @@ parseCmdLine (int argc, char **argv) if (i >= argc) break; + /* check port specific options before general ones */ + if (port->parseOption (&argc, argv, &i) == TRUE) + { + continue; + } + if (tryHandleUnsupportedOpt(argv, &i) == TRUE) { continue; @@ -1157,6 +1163,7 @@ parseCmdLine (int argc, char **argv) dbuf_init (&segname, 16); dbuf_printf (&segname, "%-8s(CODE)", getStringArg (OPTION_CODE_SEG, argv, &i, argc)); + if (options.code_seg) Safe_free(options.code_seg); options.code_seg = dbuf_detach (&segname); continue; } @@ -1167,19 +1174,13 @@ parseCmdLine (int argc, char **argv) dbuf_init (&segname, 16); dbuf_printf (&segname, "%-8s(CODE)", getStringArg (OPTION_CONST_SEG, argv, &i, argc)); + if (options.const_seg) Safe_free(options.const_seg); options.const_seg = dbuf_detach (&segname); continue; } - if (!port->parseOption (&argc, argv, &i)) - { - werror (W_UNKNOWN_OPTION, argv[i]); - continue; - } - else - { - continue; - } + werror (W_UNKNOWN_OPTION, argv[i]); + continue; } /* if preceded by '-' then option */ @@ -1342,23 +1343,19 @@ parseCmdLine (int argc, char **argv) break; default: - if (!port->parseOption (&argc, argv, &i)) - werror (W_UNKNOWN_OPTION, argv[i]); + werror (W_UNKNOWN_OPTION, argv[i]); } continue; } - if (!port->parseOption (&argc, argv, &i)) + /* no option must be a filename */ + if (options.c1mode) { - /* no option must be a filename */ - if (options.c1mode) - { - werror (W_NO_FILE_ARG_IN_C1, argv[i]); - } - else - { - processFile (argv[i]); - } + werror (W_NO_FILE_ARG_IN_C1, argv[i]); + } + else + { + processFile (argv[i]); } } @@ -1483,6 +1480,17 @@ parseCmdLine (int argc, char **argv) return 0; } +/*-----------------------------------------------------------------*/ +/* finalizeOptions - finalize (post-process( options */ +/*-----------------------------------------------------------------*/ +static void +finalizeOptions (void) +{ + /* no peephole comments if not verbose asm */ + if (!options.verboseAsm) + options.noPeepComments = 1; +} + /*-----------------------------------------------------------------*/ /* linkEdit : - calls the linkage editor with options */ /*-----------------------------------------------------------------*/ @@ -2436,8 +2444,13 @@ main (int argc, char **argv, char **envp) And the z80 port needs port->finaliseOptions(), even if we're only linking. */ initMem (); + + /* finalize target specific options */ port->finaliseOptions (); + /* finalize common options */ + finalizeOptions (); + if (fullSrcFileName || options.c1mode) { preProcess (envp);