2004-01-06 Vangelis Rokas <vrokas@otenet.gr>
[fw/sdcc] / src / SDCCmain.c
index a3e563e9e4c60b8cd4641e78e012780adaa08a1a..8c58faf443805b6dde216e9b15e18a2ed4cbd9fe 100644 (file)
@@ -123,7 +123,7 @@ char buffer[PATH_MAX * 2];
 #define OPTION_ICODE_IN_ASM    "--i-code-in-asm"
 #define OPTION_PRINT_SEARCH_DIRS "--print-search-dirs"
 #define OPTION_MSVC_ERROR_STYLE "--vc"
-#define OPTION_USE_STDOUT "--use-stdout"
+#define OPTION_USE_STDOUT       "--use-stdout"
 
 static const OPTION
 optionsTable[] = {
@@ -227,9 +227,6 @@ optionsTable[] = {
     { 0,    OPTION_USE_STDOUT, &options.use_stdout, "send errors to stdout instead of stderr"},
 #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
-#if !OPT_DISABLE_PIC16
-    { 0,    "--gen-banksel",       &options.gen_banksel, "enable the generation of banksel assembler directives in PIC16 port"},
 #endif
     /* End of options */
     { 0,    NULL }
@@ -289,12 +286,12 @@ static PORT *_ports[] =
 #if !OPT_DISABLE_DS390
   &ds390_port,
 #endif
-#if !OPT_DISABLE_PIC
-  &pic_port,
-#endif
 #if !OPT_DISABLE_PIC16
   &pic16_port,
 #endif
+#if !OPT_DISABLE_PIC
+  &pic_port,
+#endif
 #if !OPT_DISABLE_TININative
   &tininative_port,
 #endif
@@ -650,7 +647,7 @@ _setModel (int model, const char *sz)
 /** Gets the string argument to this option.  If the option is '--opt'
     then for input of '--optxyz' or '--opt xyz' returns xyz.
 */
-static char *
+char *
 getStringArg(const char *szStart, char **argv, int *pi, int argc)
 {
   if (argv[*pi][strlen(szStart)])
@@ -676,7 +673,7 @@ getStringArg(const char *szStart, char **argv, int *pi, int argc)
 /** Gets the integer argument to this option using the same rules as
     getStringArg.
 */
-static int
+int
 getIntArg(const char *szStart, char **argv, int *pi, int argc)
 {
     return (int)floatFromVal(constVal(getStringArg(szStart, argv, pi, argc)));
@@ -1127,8 +1124,11 @@ parseCmdLine (int argc, char **argv)
            case 'M':
              {
                preProcOnly = 1;
-               addSet(&preArgvSet, Safe_strdup("-M"));
-               break;
+                if (argv[i][2] == 'M')
+                 addSet(&preArgvSet, Safe_strdup("-MM"));
+                else
+                 addSet(&preArgvSet, Safe_strdup("-M"));
+               break;
              }
            case 'C':
              {
@@ -2119,6 +2119,10 @@ main (int argc, char **argv, char **envp)
           glue();
         }
 
+      if (fatalError) {
+        exit (1);
+      }
+
       if (!options.c1mode && !noAssemble)
         {
           if (options.verbose)