+2003-01-11 Bernhard Held <bernhard@bernhardheld.de>
+
+ * .version: Bumped version number to 2.3.3
+ * src/SDCCBBlock.c: new option -o
+ * src/SDCCglobl.h: new option -o
+ * src/SDCCglue.c: new option -o
+ * src/SDCCmain.c: new option -o
+ * src/asm.c: new option -o
+ * src/ds390/main.c: new option -o
+ * src/pic/glue.c: new option -o
+ * src/pic/pcode.c: new option -o
+ * src/pic/ralloc.c: new option -o
+ * src/pic16/glue.c: new option -o
+ * src/pic16/pcode.c: new option -o
+ * src/pic16/ralloc.c: new option -o
+ * src/z80/main.c: new option -o
+ * device/lib/Makefile.in: use -o
+ * support/regression/ports/ds390/spec.mk: use -o
+ * support/regression/ports/gbz80/spec.mk: use -o
+ * support/regression/ports/mcs51/spec.mk: use -o
+ * support/regression/ports/mcs51-stack-auto/spec.mk: use -o
+ * support/regression/ports/z80/spec.mk: use -o
+ * support/regression/ports/ucz80/spec.mk: use -o
+ * support/regression/ports/xa51/spec.mk: use -o
+ * support/regression/fwk/lib/timeout.c: fix usage string
+
2003-01-09 Bernhard Held <bernhard@bernhardheld.de>
* src/mcs51/gen.c (genPlus): replaced "mov b,acc" by "mov b,a" Fiorenzo D. Ramaglia <fd.ramaglia@tin.it>
.SUFFIXES: .rel .o
$(PORTDIR)/%$(OEXT): %.c
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
- mv -f `basename $@` $@
- mv -f `basename $@ $(OEXT)`.asm $(PORTDIR)
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
# Remaking configuration
# ----------------------
if (!dumpFilesPtr->filePtr) {
// not used before, create it
- strcpy (scratchFileName, srcFileName);
+ strcpy (scratchFileName, dstFileName);
strcat (scratchFileName, dumpFilesPtr->ext);
if (!(dumpFilesPtr->filePtr = fopen (scratchFileName, "w"))) {
werror (E_FILE_OPEN_ERR, scratchFileName);
#define PATH_MAX 255 /* define a reasonable value */
#endif
-#define MAX_FNAME_LEN 128
#define MAX_REG_PARMS 1
typedef int bool;
extern int noAssemble; /* no assembly, stop after code generation */
extern char *yytext;
extern char *currFname;
-extern char *srcFileName; /* source file name without the extenstion */
-extern char *moduleName; /* source file name without path & extension */
+extern char *fullSrcFileName; /* full name for the source file; */
+ /* can be NULL while linking without compiling */
+extern char *fullDstFileName; /* full name for the output file; */
+ /* only given by -o, otherwise NULL */
+extern char *dstFileName; /* destination file name without extension */
+extern char *dstPath; /* path for the output files; */
+ /* "" is equivalent with cwd */
+extern char *moduleName; /* module name is source file without path and extension */
+ /* can be NULL while linking without compiling */
extern int currLineno; /* current line number */
extern int yylineno; /* line number of the current file SDCC.lex */
extern FILE *yyin; /* */
if (!options.c1mode)
{
- sprintf (scratchFileName, srcFileName);
+ /* -o option overrides default name? */
+ if (noAssemble && fullDstFileName)
+ {
+ strcpy (scratchFileName, fullDstFileName);
+ }
+ else
+ {
+ strcpy (scratchFileName, dstFileName);
strcat (scratchFileName, port->assembler.file_ext);
+ }
}
else
{
FILE *srcFile; /* source file */
FILE *cdbFile = NULL; /* debugger information output file */
-char *fullSrcFileName; /* full name for the source file */
-char *srcFileName; /* source file name with the .c stripped */
-char *moduleName; /* module name is srcFilename stripped of any path */
+char *fullSrcFileName; /* full name for the source file; */
+ /* can be NULL while linking without compiling */
+char *fullDstFileName; /* full name for the output file; */
+ /* only given by -o, otherwise NULL */
+char *dstFileName; /* destination file name without extension */
+char *dstPath = ""; /* path for the output files; */
+ /* "" is equivalent with cwd */
+char *moduleName; /* module name is source file without path and extension */
+ /* can be NULL while linking without compiling */
const char *preArgv[128]; /* pre-processor arguments */
int currRegBank = 0;
int RegBankUsed[4]={1, 0, 0, 0}; /*JCF: Reg Bank 0 used by default*/
{ 0, "--nojtbound", &optimize.noJTabBoundary, "Don't generate boundary check for jump tables" },
{ 0, "--noloopreverse", &optimize.noLoopReverse, "Disable the loop reverse optimisation" },
{ 'c', "--compile-only", &options.cc_only, "Compile and assemble, but do not link" },
+ { 'o', NULL, NULL, "Place the output into the given path resp. file" },
{ 0, "--dumpraw", &options.dump_raw, "Dump the internal structure after the initial parse" },
{ 0, "--dumpgcse", &options.dump_gcse, NULL },
{ 0, "--dumploop", &options.dump_loop, NULL },
{
/* source file name : not if we already have a
source file */
- if (srcFileName)
+ if (fullSrcFileName)
{
werror (W_TOO_MANY_SRC, s);
return;
/* get rid of the "."-extension */
/* is there a dot at all? */
- if (strchr (buffer, '.') &&
+ if (strrchr (buffer, '.') &&
/* is the dot in the filename, not in the path? */
- (strrchr (buffer, '/' ) < strrchr (buffer, '.') ||
- strrchr (buffer, '\\') < strrchr (buffer, '.')))
+ (strrchr (buffer, DIR_SEPARATOR_CHAR) < strrchr (buffer, '.')))
+ {
*strrchr (buffer, '.') = '\0';
-
- srcFileName = Safe_alloc ( strlen (buffer) + 1);
- strcpy (srcFileName, buffer);
+ }
/* get rid of any path information
- for the module name; do this by going
- backwards till we get to either '/' or '\' or ':'
- or start of buffer */
+ for the module name; */
fext = buffer + strlen (buffer);
+#if NATIVE_WIN32
+ /* do this by going backwards till we
+ get '\' or ':' or start of buffer */
while (fext != buffer &&
- *(fext - 1) != '\\' &&
- *(fext - 1) != '/' &&
+ *(fext - 1) != DIR_SEPARATOR_CHAR &&
*(fext - 1) != ':')
+ {
fext--;
- moduleName = Safe_alloc ( strlen (fext) + 1);
- strcpy (moduleName, fext);
-
+ }
+#else
+ /* do this by going backwards till we
+ get '/' or start of buffer */
+ while (fext != buffer &&
+ *(fext - 1) != DIR_SEPARATOR_CHAR)
+ {
+ fext--;
+ }
+#endif
+ moduleName = Safe_strdup ( fext );
return;
}
static void
_processC1Arg (char *s)
{
- if (srcFileName)
+ if (fullSrcFileName)
{
if (options.out_name)
{
/*-----------------------------------------------------------------*/
/* parseCmdLine - parses the command line and sets the options */
/*-----------------------------------------------------------------*/
-int
+static int
parseCmdLine (int argc, char **argv)
{
int i;
case 'l':
libFiles[nlibFiles++] = getStringArg("-l", argv, &i, argc);
break;
+
+ case 'o':
+ {
+ char *p;
+
+ /* copy the file name into the buffer */
+ strcpy (buffer, getStringArg("-o", argv, &i, argc));
+ /* point to last character */
+ p = buffer + strlen (buffer) - 1;
+ if (*p == DIR_SEPARATOR_CHAR)
+ {
+ /* only output path specified */
+ dstPath = Safe_strdup (buffer);
+ fullDstFileName = NULL;
+ }
+ else
+ {
+ fullDstFileName = Safe_strdup (buffer);
+
+ /* get rid of the "."-extension */
+
+ /* is there a dot at all? */
+ if (strrchr (buffer, '.') &&
+ /* is the dot in the filename, not in the path? */
+ (strrchr (buffer, DIR_SEPARATOR_CHAR) < strrchr (buffer, '.')))
+ *strrchr (buffer, '.') = '\0';
+
+ dstFileName = Safe_strdup (buffer);
+
+ /* strip module name to get path */
+ p = strrchr (buffer, DIR_SEPARATOR_CHAR);
+ if (p)
+ {
+ /* path with trailing / */
+ p[1] = '\0';
+ dstPath = Safe_strdup (buffer);
+ }
+ }
+ break;
+ }
case 'W':
/* pre-processer options */
}
}
+ /* if no dstFileName given with -o, we've to find one: */
+ if (!dstFileName)
+ {
+ /* use the modulename from the C-source */
+ if (fullSrcFileName)
+ {
+ dstFileName = Safe_alloc (strlen (dstPath) + strlen (moduleName) + 1);
+ strcpy (dstFileName, dstPath);
+ strcat (dstFileName, moduleName);
+ }
+ /* use the modulename from the first object file */
+ else if (nrelFiles >= 1)
+ {
+ char *objectName;
+
+ strcpy (buffer, relFiles[0]);
+ /* remove extension (it must be .rel) */
+ *strrchr (buffer, '.') = '\0';
+ /* remove path */
+ objectName = strrchr (buffer, DIR_SEPARATOR_CHAR);
+ if (objectName)
+ {
+ ++objectName;
+ }
+ else
+ {
+ objectName = buffer;
+ }
+ dstFileName = Safe_alloc (strlen (dstPath) + strlen (objectName) + 1);
+ strcpy (dstFileName, dstPath);
+ strcat (dstFileName, objectName);
+ }
+ /* else no module given: help text is displayed */
+ }
+
/* set up external stack location if not explicitly specified */
if (!options.xstack_loc)
options.xstack_loc = options.xdata_loc;
/* if debug option is set the open the cdbFile */
- if (options.debug && srcFileName)
+ if (options.debug && fullSrcFileName)
{
- sprintf (scratchFileName, "%s.adb", srcFileName); //JCF: Nov 30, 2002
+ sprintf (scratchFileName, "%s.adb", dstFileName); //JCF: Nov 30, 2002
if ((cdbFile = fopen (scratchFileName, "w")) == NULL)
werror (E_FILE_OPEN_ERR, scratchFileName);
else
{
FILE *lnkfile;
char *segName, *c;
-
int i;
- if (!srcFileName)
- srcFileName = "temp";
/* first we need to create the <filename>.lnk file */
- sprintf (scratchFileName, "%s.lnk", srcFileName);
+ sprintf (scratchFileName, "%s.lnk", dstFileName);
if (!(lnkfile = fopen (scratchFileName, "w")))
{
werror (E_FILE_OPEN_ERR, scratchFileName);
fprintf (lnkfile, "-l %s\n", libFiles[i]);
/* put in the object files */
- if (strcmp (srcFileName, "temp"))
- fprintf (lnkfile, "%s ", srcFileName);
+ if (fullSrcFileName)
+ fprintf (lnkfile, "%s ", dstFileName);
for (i = 0; i < nrelFiles; i++)
fprintf (lnkfile, "%s\n", relFiles[i]);
if (port->linker.cmd)
{
char buffer2[PATH_MAX];
- buildCmdLine (buffer2, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+ buildCmdLine (buffer2, port->linker.cmd, dstFileName, NULL, NULL, NULL);
buildCmdLine2 (buffer, buffer2);
}
else
{
exit (1);
}
-
- if (strcmp (srcFileName, "temp") == 0)
+ /* -o option overrides default name? */
+ if (fullDstFileName)
+ {
+ /* the linked file gets the name of the first modul */
+ if (fullSrcFileName)
{
- /* rename "temp.cdb" to "firstRelFile.cdb" */
- char *f = strtok (Safe_strdup (relFiles[0]), ".");
- f = strcat (f, ".cdb");
- rename ("temp.cdb", f);
- srcFileName = NULL;
+ strcpy (scratchFileName, dstFileName);
+ }
+ else
+ {
+ strcpy (scratchFileName, relFiles[0]);
+ /* strip ".rel" extension */
+ *strrchr (scratchFileName, '.') = '\0';
+ }
+ strcat (scratchFileName, options.out_fmt ? ".S19" : ".ihx");
+ rename (scratchFileName, fullDstFileName);
}
}
port->assembler.do_assemble(asmOptions);
return ;
} else if (port->assembler.cmd) {
- buildCmdLine (buffer, port->assembler.cmd, srcFileName, NULL,
+ buildCmdLine (buffer, port->assembler.cmd, dstFileName, NULL,
options.debug ? port->assembler.debug_opts : port->assembler.plain_opts,
asmOptions);
} else {
*/
exit (1);
}
+ /* -o option overrides default name? */
+ if (options.cc_only && fullDstFileName) {
+ strcpy (scratchFileName, dstFileName);
+ strcat (scratchFileName, ".rel");
+ rename (scratchFileName, fullDstFileName);
+ }
}
/*-----------------------------------------------------------------*/
setMainValue ("objext", port->linker.rel_ext);
setMainValue ("asmext", port->assembler.file_ext);
+ setMainValue ("dstfilename", dstFileName);
setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
- setMainValue ("srcfilename", srcFileName ? srcFileName : "srcfilename");
+
+ if (options.cc_only && fullDstFileName)
+ /* compile + assemble and -o given: -o specifies name of object file */
+ {
+ setMainValue ("z80objdstfilename", fullDstFileName);
+ }
+ else
+ {
+ setMainValue ("z80objdstfilename", "{z80stdobjdstfilename}");
+ }
+ if (fullDstFileName)
+ /* if we're linking, -o gives the final file name */
+ {
+ setMainValue ("z80linkdstfilename", fullDstFileName);
+ }
+ else
+ {
+ setMainValue ("z80linkdstfilename", "{z80stdlinkdstfilename}");
+ }
+
}
/*
parseCmdLine (argc, argv);
/* if no input then printUsage & exit */
- if ((!options.c1mode && !srcFileName && !nrelFiles) ||
- (options.c1mode && !srcFileName && !options.out_name))
+ if ((!options.c1mode && !fullSrcFileName && !nrelFiles) ||
+ (options.c1mode && !fullSrcFileName && !options.out_name))
{
printUsage ();
exit (0);
initValues ();
_discoverPaths (argv[0]);
- if (srcFileName)
+ if (fullSrcFileName)
{
initMem ();
!fatalError &&
!noAssemble &&
!options.c1mode &&
- (srcFileName || nrelFiles))
+ (fullSrcFileName || nrelFiles))
{
if (port->linker.do_link)
port->linker.do_link ();
break;
case 'F':
// Source file name.
- pInto = _appendAt (pInto, newFormat, srcFileName);
+ pInto = _appendAt (pInto, newFormat, fullSrcFileName);
sz++;
break;
case 'N':
};
char buffer[100];
- buildCmdLine(buffer,macroCmd,srcFileName,NULL,NULL,NULL);
+ buildCmdLine(buffer,macroCmd,dstFileName,NULL,NULL,NULL);
if (my_system(buffer)) {
exit(1);
}
- buildCmdLine(buffer,a390Cmd,srcFileName,NULL,NULL,asmOptions);
+ buildCmdLine(buffer,a390Cmd,dstFileName,NULL,NULL,asmOptions);
if (my_system(buffer)) {
exit(1);
}
/* create the assembler file name */
if (!options.c1mode) {
- sprintf (buffer, srcFileName);
- strcat (buffer, ".asm");
+ if (noAssemble && fullDstFileName)
+ {
+ sprintf (buffer, fullDstFileName);
+ }
+ else
+ {
+ sprintf (buffer, dstFileName);
+ strcat (buffer, ".asm");
+ }
}
else {
strcpy(buffer, options.out_name);
char buffer[100];
/* create the file name */
- strcpy(buffer,srcFileName);
+ strcpy(buffer,dstFileName);
strcat(buffer,".p");
if( !(pFile = fopen(buffer, "w" ))) {
//char *bufferP=buffer;
va_list ap;
- if (!debug || !srcFileName)
+ if (!debug || !dstFileName)
return;
if (!debugF)
{
/* create the file name */
- strcpy (buffer, srcFileName);
+ strcpy (buffer, dstFileName);
strcat (buffer, ".d");
if (!(debugF = fopen (buffer, (append ? "a+" : "w"))))
/* create the assembler file name */
if (!options.c1mode) {
- sprintf (buffer, srcFileName);
+ if (noAssemble && fullDstFileName)
+ {
+ sprintf (buffer, fullDstFileName);
+ }
+ else
+ {
+ sprintf (buffer, dstFileName);
strcat (buffer, ".asm");
}
+ }
else {
strcpy(buffer, options.out_name);
}
char buffer[100];
/* create the file name */
- strcpy(buffer,srcFileName);
+ strcpy(buffer,dstFileName);
strcat(buffer,".p");
if( !(pFile = fopen(buffer, "w" ))) {
//char *bufferP=buffer;
va_list ap;
- if (!debug || !srcFileName)
+ if (!debug || !dstFileName)
return;
if (!debugF)
{
/* create the file name */
- strcpy (buffer, srcFileName);
+ strcpy (buffer, dstFileName);
strcat (buffer, ".d");
if (!(debugF = fopen (buffer, (append ? "a+" : "w"))))
_gbz80_rgblink (void)
{
FILE *lnkfile;
- const char *sz;
-
int i;
- sz = srcFileName;
- if (!sz)
- sz = "a";
/* first we need to create the <filename>.lnk file */
- sprintf (scratchFileName, "%s.lnk", sz);
+ sprintf (scratchFileName, "%s.lnk", dstFileName);
if (!(lnkfile = fopen (scratchFileName, "w")))
{
werror (E_FILE_OPEN_ERR, scratchFileName);
fprintf (lnkfile, "[Objects]\n");
- if (srcFileName)
- fprintf (lnkfile, "%s.o\n", sz);
+ fprintf (lnkfile, "%s.o\n", dstFileName);
for (i = 0; i < nrelFiles; i++)
fprintf (lnkfile, "%s\n", relFiles[i]);
fprintf (lnkfile, "%s\n", libFiles[i]);
- fprintf (lnkfile, "\n[Output]\n" "%s.gb", sz);
+ fprintf (lnkfile, "\n[Output]\n" "%s.gb", dstFileName);
fclose (lnkfile);
- buildCmdLine (buffer,port->linker.cmd, sz, NULL, NULL, NULL);
+ buildCmdLine (buffer,port->linker.cmd, dstFileName, NULL, NULL, NULL);
/* call the linker */
if (my_system (buffer))
{
setMainValue ("z80outext", ".ihx");
}
+ setMainValue ("z80stdobjdstfilename" , "{dstfilename}{objext}");
+ setMainValue ("z80stdlinkdstfilename", "{dstfilename}{z80outext}");
+
setMainValue ("z80extraobj", joinn (relFiles, nrelFiles));
sprintf (buffer, "-b_CODE=0x%04X -b_DATA=0x%04X", options.code_loc, options.data_loc);
"{bindir}{sep}link-{port} -n -c -- {z80bases} -m -j" \
" {z80libspec}" \
" {z80extralibfiles} {z80extralibpaths}" \
- " {z80outputtypeflag} {srcfilename}{z80outext}" \
+ " {z80outputtypeflag} {z80linkdstfilename}" \
" {z80crt0}" \
- " {srcfilename}{objext}" \
+ " {dstfilename}{objext}" \
" {z80extraobj}"
#define ASMCMD \
- "{bindir}{sep}as-{port} -plosgff {srcfilename}{objext} {srcfilename}{asmext}"
+ "{bindir}{sep}as-{port} -plosgff {z80objdstfilename} {dstfilename}{asmext}"
/* Globals */
PORT z80_port =
#define USAGE PROGNAME " : 1.00\n" \
"Usage : " PROGNAME " timeout_in_seconds filename [arguments]\n" \
- " ´filename´ is executed, the arguments are passed to ´filename´.\n" \
- " When ´filename´exits before the timeout expires, the\n" \
- " exit-status of ´filename´ is returned.\n" \
- " When the timeout expires before ´filename´ exits, ´filename´\n" \
+ " \"filename\" is executed, the arguments are passed to \"filename\".\n" \
+ " When \"filename\" exits before the timeout expires, the\n" \
+ " exit-status of \"filename\" is returned.\n" \
+ " When the timeout expires before \"filename\" exits, \"filename\"\n" \
" will be killed and an exit-status of 1 is returned.\n"
/* First the program tries to limit the maximum CPU-time to the timeout-value.
}
}
}
+
# Rule to link into .ihx
%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $(EXTRAS) $<
- mv fwk/lib/testfwk.ihx $@
- mv fwk/lib/testfwk.map $(@:.ihx=.map)
+ $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@
%$(OBJEXT): %.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# run simulator with 10 seconds timeout
%.out: %$(EXEEXT) fwk/lib/timeout
mkdir -p `dirname $@`
-fwk/lib/timeout 10 $(S51) -tds390f -S in=/dev/null,out=$@ $< < $(PORTS_DIR)/ds390/uCsim.cmd >/dev/null || \
- echo -e --- FAIL: \"timeout, simulation killed\" in $(<:.ihx=.c)"\n"--- Summary: 1/1/1: timeout >> $@
+ echo -e --- FAIL: \"timeout, simulation killed\" in $(<:$(EXEEXT)=.c)"\n"--- Summary: 1/1/1: timeout >> $@
-grep -n FAIL $@ /dev/null || true
fwk/lib/timeout: fwk/lib/timeout.c
# Rule to link into .ihx
%.gb: %.c $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $< $(EXTRAS)
+ $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
%$(OBJEXT): %.asm
../../bin/as-gbz80 -plosgff $@ $<
../../bin/as-gbz80 -plosgff $@ $<
%$(OBJEXT): %.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# PENDING: Path to sdcc-extra
%.out: %$(EXEEXT)
mkdir -p $(LIBDIR)
$(LIBDIR)/%.rel: $(LIBSRCDIR)/%.c
- -$(SDCC) -I../../device/include $(LIBSDCCFLAGS) -c $< \
- && mv -f $(<:.c=.rel) $@ \
- && mv -f $(<:.c=.asm) $(@:.rel=.asm) \
- && mv -f $(<:.c=.lst) $(@:.rel=.lst)
+ -$(SDCC) -I../../device/include $(LIBSDCCFLAGS) -c $< -o $@
lib-files:
cp $(LIBSRCDIR)/*.lib $(LIBDIR)
# Rule to link into .ihx
%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $(EXTRAS) $<
- mv fwk/lib/testfwk.ihx $@
- mv fwk/lib/testfwk.map $(@:.ihx=.map)
+ $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@
%$(OBJEXT): %.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# run simulator with 10 seconds timeout
%.out: %$(EXEEXT) fwk/lib/timeout
mkdir -p `dirname $@`
-fwk/lib/timeout 10 $(S51) -t32 -S in=/dev/null,out=$@ $< < $(PORTS_DIR)/mcs51/uCsim.cmd >/dev/null \
- || echo -e --- FAIL: \"timeout, simulation killed\" in $(<:.ihx=.c)"\n"--- Summary: 1/1/1: timeout >> $@
+ || echo -e --- FAIL: \"timeout, simulation killed\" in $(<:$(EXEEXT)=.c)"\n"--- Summary: 1/1/1: timeout >> $@
-grep -n FAIL $@ /dev/null || true
fwk/lib/timeout: fwk/lib/timeout.c
#%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
%$(EXEEXT): %.c $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $< $(EXTRAS)
-# mv fwk/lib/testfwk.ihx $@
-# mv fwk/lib/testfwk.map $(@:.ihx=.map)
+ $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
%$(OBJEXT): %.asm
$(SDCC_DIR)/bin/as-z80 -plosgff $@ $<
%$(OBJEXT): %.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# run simulator with 10 seconds timeout
%.out: %$(EXEEXT) fwk/lib/timeout
mkdir -p `dirname $@`
-fwk/lib/timeout 10 $(UCZ80) -t32 $< < $(PORTS_DIR)/$(PORT)/uCsim.cmd > $@ \
- || echo -e --- FAIL: \"timeout, simulation killed\" in $(<:.ihx=.c)"\n"--- Summary: 1/1/1: timeout >> $@
+ || echo -e --- FAIL: \"timeout, simulation killed\" in $(<:$(EXEEXT)=.c)"\n"--- Summary: 1/1/1: timeout >> $@
-grep -n FAIL $@ /dev/null || true
fwk/lib/timeout: fwk/lib/timeout.c
_clean:
rm -f fwk/lib/timeout fwk/lib/timeout.exe $(PORTS_DIR)/$(PORT)/*.rel $(PORTS_DIR)/$(PORT)/*.rst \
- $(PORTS_DIR)/$(PORT)/*.lst $(PORTS_DIR)/$(PORT)/*.sym $(PORTS_DIR)/$(PORT)/*.asm temp.lnk
+ $(PORTS_DIR)/$(PORT)/*.lst $(PORTS_DIR)/$(PORT)/*.sym temp.lnk
# Rule to link into .hex
%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $(EXTRAS) $<
+ $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@
mv fwk/lib/testfwk.hex $@
mv fwk/lib/testfwk.map $(@:.hex=.map)
%$(OBJEXT): %.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# run simulator with 10 seconds timeout
%.out: %$(EXEEXT) fwk/lib/timeout
# Rule to link into .ihx
%.ihx: %.c $(EXTRAS)
- $(SDCC) $(SDCCFLAGS) $< $(EXTRAS)
+ $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
%$(OBJEXT): %.asm
$(SDCC_DIR)/bin/as-z80 -plosgff $@ $<
$(SDCC) $(SDCCFLAGS) -c $<
fwk/lib/testfwk$(OBJEXT): fwk/lib/testfwk.c
- $(SDCC) $(SDCCFLAGS) -c $<
+ $(SDCC) $(SDCCFLAGS) -c $< -o $@
# PENDING: Path to sdcc-extra
%.out: %$(EXEEXT)