#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[] = {
#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
- /* End of options */
-#if 0 /* 10jun03 !OPT_DISABLE_PIC16 */
- { 0, "--no-movff", &options.no_movff, "disable generating MOVFF opcode in PIC16 port"},
+#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 }
};
#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
#endif
#if !OPT_DISABLE_DS400
&ds400_port,
-#endif
+#endif
+#if !OPT_DISABLE_HC08
+ &hc08_port,
+#endif
};
#define NUM_PORTS (sizeof(_ports)/sizeof(_ports[0]))
setParseWithComma (set **dest, char *src)
{
char *p;
+ int length;
/* skip the initial white spaces */
while (isspace(*src))
src++;
+
+ /* skip the trailing white spaces */
+ length = strlen(src);
+ while (length && isspace(src[length-1]))
+ src[--length] = '\0';
for (p = strtok(src, ","); p != NULL; p = strtok(NULL, ","))
addSet(dest, Safe_strdup(p));
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':
{
/* standard library path */
if (!options.nostdlib)
{
- if (!(TARGET_IS_Z80 || TARGET_IS_GBZ80)) /*Not for the z80, gbz80*/
+ if (!(TARGET_IS_Z80 || TARGET_IS_GBZ80 || TARGET_IS_HC08)) /*Not for the z80, gbz80*/
{
switch (options.model)
{
}
else /*for the z80, gbz80*/
{
- if (TARGET_IS_Z80)
+ if (TARGET_IS_HC08)
+ c = "hc08";
+ else if (TARGET_IS_Z80)
c = "z80";
else
c = "gbz80";
}
#endif
#endif
- if (!(TARGET_IS_Z80 || TARGET_IS_GBZ80)) /*Not for the z80, gbz80*/
+ if (!(TARGET_IS_Z80 || TARGET_IS_GBZ80
+ || TARGET_IS_HC08)) /*Not for the z80, gbz80*/
{ /*Why the z80 port is not using the standard libraries?*/
fprintf (lnkfile, "-l %s\n", STD_LIB);
fprintf (lnkfile, "-l %s\n", STD_INT_LIB);
fprintf (lnkfile, "-l %s\n", STD_LONG_LIB);
fprintf (lnkfile, "-l %s\n", STD_FP_LIB);
}
+ else if (TARGET_IS_HC08)
+ {
+ fprintf (lnkfile, "-l hc08\n");
+ }
else if (TARGET_IS_Z80)
{
fprintf (lnkfile, "-l z80\n");
/*For the z80 and gbz80 ports, try to find where crt0.o is...
It is very important for this file to be first on the linking proccess
so the areas are set in the correct order, expecially _GSINIT*/
- if ((TARGET_IS_Z80 || TARGET_IS_GBZ80) && !options.no_std_crt0) /*For the z80, gbz80*/
+ if ((TARGET_IS_Z80 || TARGET_IS_GBZ80) &&
+ !options.no_std_crt0 && !options.nostdlib) /*For the z80, gbz80*/
{
char crt0path[PATH_MAX];
FILE * crt0fp;
strncatz (scratchFileName,
options.out_fmt ? ".S19" : ".ihx",
sizeof(scratchFileName));
+ if (strcmp (fullDstFileName, scratchFileName))
+ unlink (fullDstFileName);
rename (scratchFileName, fullDstFileName);
strncpyz (buffer, fullDstFileName, sizeof(buffer));
strncatz (scratchFileName, ".map", sizeof(scratchFileName));
*q = 0;
strncatz(buffer, ".map", sizeof(buffer));
+ if (strcmp (scratchFileName, buffer))
+ unlink (buffer);
rename (scratchFileName, buffer);
*p = 0;
strncatz (scratchFileName, ".mem", sizeof(scratchFileName));
*q = 0;
strncatz(buffer, ".mem", sizeof(buffer));
+ if (strcmp (scratchFileName, buffer))
+ unlink (buffer);
rename (scratchFileName, buffer);
+ if (options.debug)
+ {
+ *p = 0;
+ strncatz (scratchFileName, ".cdb", sizeof(scratchFileName));
+ *q = 0;
+ strncatz(buffer, ".cdb", sizeof(buffer));
+ if (strcmp (scratchFileName, buffer))
+ unlink (buffer);
+ rename (scratchFileName, buffer);
+ /* and the OMF file without extension: */
+ *p = 0;
+ *q = 0;
+ if (strcmp (scratchFileName, buffer))
+ unlink (buffer);
+ rename (scratchFileName, buffer);
+ }
}
if (system_ret)
{
strncatz (scratchFileName,
port->linker.rel_ext,
sizeof(scratchFileName));
+ if (strcmp (scratchFileName, fullDstFileName))
+ unlink (fullDstFileName);
rename (scratchFileName, fullDstFileName);
}
}