#endif
// Globally accessible scratch buffer for file names.
-char scratchFileName[FILENAME_MAX];
-char buffer[FILENAME_MAX];
+char scratchFileName[PATH_MAX];
+char buffer[PATH_MAX];
// In MSC VC6 default search path for exe's to path for this
{ 'M', NULL, NULL, "Preprocessor option" },
{ 'V', NULL, &verboseExec, "Execute verbosely. Show sub commands as they are run" },
{ 'S', NULL, &noAssemble, "Compile only; do not assemble or link" },
- { 'W', NULL, NULL, "Pass through options to the assembler (a) or linker (l)" },
+ { 'W', NULL, NULL, "Pass through options to the pre-processor (p), assembler (a) or linker (l)" },
{ 'L', NULL, NULL, "Add the next field to the library search path" },
{ 'l', NULL, NULL, "Include the given library in the link" },
{ 0, OPTION_LARGE_MODEL, NULL, "external data space is used" },
{ 0, "--dumpliverange", &options.dump_range, NULL },
{ 0, "--dumpregpack", &options.dump_pack, NULL },
{ 0, "--dumpregassign", &options.dump_rassgn, NULL },
+ { 0, "--dumptree", &options.dump_tree, "dump front-end AST before generating iCode" },
{ 0, OPTION_DUMP_ALL, NULL, "Dump the internal structure at all stages" },
{ 0, OPTION_XRAM_LOC, NULL, "<nnnn> External Ram start location" },
{ 0, OPTION_IRAM_SIZE, NULL, "<nnnn> Internal Ram size" },
{ 0, "--verbose", &options.verbose, "Trace calls to the preprocessor, assembler, and linker" },
{ 0, OPTION_LESS_PEDANTIC, NULL, "Disable some of the more pedantic warnings" },
{ 0, OPTION_SHORT_IS_8BITS, NULL, "Make short 8bits (for old times sake)" },
- { 0, "--profile", &options.profile, "On supported ports, generate extra profiling information" }
+ { 0, "--profile", &options.profile, "On supported ports, generate extra profiling information" },
+ { 0, "--fommit-frame-pointer", &options.ommitFramePtr, "Leave out the frame pointer." },
+ { 0, "--all-callee-saves", &options.all_callee_saves, "callee will always save registers used" },
+ { 0, "--use-accelerator", &options.useAccelerator,"generate code for DS390 Arithmetic Accelerator"},
+ { 0, "--stack-probe", &options.stack_probe,"insert call to function __stack_probe at each function prologue"}
};
/** Table of all unsupported options and help text to display when one
break;
case 'W':
+ /* pre-processer options */
+ if (argv[i][2] == 'p')
+ {
+ parseWithComma ((char **)preArgv, getStringArg("-Wp", argv, &i, argc));
+ }
/* linker options */
- if (argv[i][2] == 'l')
- {
- parseWithComma(linkOptions, getStringArg("-Wl", argv, &i, argc));
- }
- else
+ else if (argv[i][2] == 'l')
{
- /* assembler options */
- if (argv[i][2] == 'a')
- {
- parseWithComma ((char **) asmOptions, getStringArg("-Wa", argv, &i, argc));
- }
- else
- {
- werror (W_UNKNOWN_OPTION, argv[i]);
- }
+ parseWithComma(linkOptions, getStringArg("-Wl", argv, &i, argc));
}
+ /* assembler options */
+ else if (argv[i][2] == 'a')
+ {
+ parseWithComma ((char **) asmOptions, getStringArg("-Wa", argv, &i, argc));
+ }
+ else
+ {
+ werror (W_UNKNOWN_OPTION, argv[i]);
+ }
break;
case 'v':
break;
}
}
- fprintf (lnkfile, "-k %s/%s\n", SDCC_LIB_DIR /*STD_LIB_PATH */ , c);
+ mfprintf (lnkfile, getRuntimeVariables(), "-k {libdir}{sep}%s\n", c);
/* standard library files */
/* if (strcmp (port->target, "ds390") == 0) */
if (port->linker.cmd)
{
- buildCmdLine (buffer, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+ char buffer2[PATH_MAX];
+ buildCmdLine (buffer2, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+ buildCmdLine2 (buffer, buffer2);
}
else
{
if (options.stack10bit)
addToList (preArgv, "-DSDCC_STACK_TENBIT");
+ /* set the macro for no overlay */
+ if (options.noOverlay)
+ addToList (preArgv, "-DSDCC_NOOVERLAY");
+
/* set the macro for large model */
switch (options.model)
{
{
populateMainValues (_baseValues);
setMainValue ("port", port->target);
- setMainValue ("fullsrcfilename", fullSrcFileName);
- setMainValue ("srcfilename", srcFileName);
setMainValue ("objext", port->linker.rel_ext);
setMainValue ("asmext", port->assembler.file_ext);
+
+ setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
+ setMainValue ("srcfilename", srcFileName ? srcFileName : "srcfilename");
}
/*
exit (0);
}
+ initValues ();
+ _discoverPaths (argv[0]);
+
if (srcFileName)
{
- initValues ();
- _discoverPaths (argv[0]);
-
preProcess (envp);
initMem ();
initSymt ();
initiCode ();
initCSupport ();
+ initBuiltIns();
initPeepHole ();
if (options.verbose)