* src/SDCCcse.c (algebraicOpts): fixed bug 1579949
[fw/sdcc] / src / z80 / main.c
index 64984af6b6bf5e15c93731835d7e324591863925..6e5e05edcd1f04c73d956a6a026ba3ea2e4db722 100644 (file)
@@ -37,6 +37,7 @@
 #define OPTION_CALLEE_SAVES_BC "--callee-saves-bc"
 #define OPTION_PORTMODE        "--portmode="
 #define OPTION_ASM             "--asm="
+#define OPTION_NO_STD_CRT0     "--no-std-crt0"
 
 
 static char _z80_defaultRules[] =
@@ -56,20 +57,22 @@ Z80_OPTS z80_opts;
 static OPTION _z80_options[] =
   {
     { 0, OPTION_CALLEE_SAVES_BC, &z80_opts.calleeSavesBC, "Force a called function to always save BC" },
-    { 0, OPTION_PORTMODE,        NULL,                    "Determine PORT I/O mode (z80/z180)" },
-    { 0, OPTION_ASM,             NULL,                    "Define assembler name (rgbds/asxxxx/isas/z80asm)" },
-    { 0, OPTION_CODE_SEG,        NULL,                    "<name> use this name for the code segment" },
-    { 0, OPTION_CONST_SEG,       NULL,                    "<name> use this name for the const segment" },
+    { 0, OPTION_PORTMODE,        NULL, "Determine PORT I/O mode (z80/z180)" },
+    { 0, OPTION_ASM,             NULL, "Define assembler name (rgbds/asxxxx/isas/z80asm)" },
+    { 0, OPTION_CODE_SEG,        &options.code_seg, "<name> use this name for the code segment", CLAT_STRING },
+    { 0, OPTION_CONST_SEG,       &options.const_seg, "<name> use this name for the const segment", CLAT_STRING },
+    { 0, OPTION_NO_STD_CRT0,     &options.no_std_crt0, "For the z80/gbz80 do not link default crt0.o"},
     { 0, NULL }
   };
 
 static OPTION _gbz80_options[] = 
   {
-    { 0, OPTION_BO,              NULL,                    "<num> use code bank <num>" },
-    { 0, OPTION_BA,              NULL,                    "<num> use data bank <num>" },
+    { 0, OPTION_BO,              NULL, "<num> use code bank <num>" },
+    { 0, OPTION_BA,              NULL, "<num> use data bank <num>" },
     { 0, OPTION_CALLEE_SAVES_BC, &z80_opts.calleeSavesBC, "Force a called function to always save BC" },
-    { 0, OPTION_CODE_SEG,        NULL,                    "<name> use this name for the code segment"  },
-    { 0, OPTION_CONST_SEG,       NULL,                    "<name> use this name for the const segment" },
+    { 0, OPTION_CODE_SEG,        &options.code_seg, "<name> use this name for the code segment", CLAT_STRING },
+    { 0, OPTION_CONST_SEG,       &options.const_seg, "<name> use this name for the const segment", CLAT_STRING },
+    { 0, OPTION_NO_STD_CRT0,     &options.no_std_crt0, "For the z80/gbz80 do not link default crt0.o"},
     { 0, NULL }
   };
 
@@ -460,18 +463,6 @@ _parseOptions (int *pargc, char **argv, int *i)
               return TRUE;
             }
         }
-      else if (!strcmp (argv[*i], OPTION_CODE_SEG))
-        {
-          if (options.code_seg) Safe_free(options.code_seg);
-          options.code_seg = Safe_strdup(getStringArg (OPTION_CODE_SEG, argv, i, *pargc));
-          return TRUE;
-        }
-      else if (!strcmp (argv[*i], OPTION_CONST_SEG))
-        {
-          if (options.const_seg) Safe_free(options.const_seg);
-          options.const_seg = Safe_strdup(getStringArg (OPTION_CONST_SEG, argv, i, *pargc));
-          return TRUE;
-        }
   }
   return FALSE;
 }
@@ -535,7 +526,7 @@ _setValues(void)
 
   if (IS_GB)
     {
-      setMainValue ("z80outputtypeflag", "-z");
+      setMainValue ("z80outputtypeflag", "-Z");
       setMainValue ("z80outext", ".gb");
     }
   else
@@ -726,7 +717,7 @@ PORT z80_port =
   {
     NULL,
     ASMCMD,
-    "-plosgff",                 /* Options with debug */
+    "-plosgffc",                /* Options with debug */
     "-plosgff",                 /* Options without debug */
     0,
     ".asm"
@@ -847,7 +838,7 @@ PORT gbz80_port =
   {
     NULL,
     ASMCMD,
-    "-plosgff",                 /* Options with debug */
+    "-plosgffc",                /* Options with debug */
     "-plosgff",                 /* Options without debug */
     0,
     ".asm",