/* */
/* main.c */
/* */
-/* Main module for the cl65 compile and link utility */
+/* Main module for the cl65 compile-and-link utility */
/* */
/* */
/* */
-/* (C) 1999-2011, Ullrich von Bassewitz */
+/* (C) 1999-2012, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
static void CmdSetTarget (CmdDesc* Cmd, target_t Target)
/* Set the output file in a command desc */
{
- CmdAddArg2 (Cmd, "-t", TargetNames[Target]);
+ CmdAddArg2 (Cmd, "-t", GetTargetName (Target));
}
if (Target != TGT_NONE) {
/* Get a pointer to the system name and its length */
- const char* TargetName = TargetNames [Target];
+ const char* TargetName = GetTargetName (Target);
unsigned TargetNameLen = strlen (TargetName);
/* Set the library file */
/* Remember the current assembler argument count */
unsigned ArgCount = GRC.ArgCount;
+ /* Resource files need an geos-apple or geos-cbm target but this
+ * is checked within grc65.
+ */
+ CmdSetTarget (&GRC, Target);
+
/* Add the file as argument for the resource compiler */
CmdAddArg (&GRC, File);
{
printf ("Usage: %s [options] file [...]\n"
"Short options:\n"
- " -c\t\t\t\tCompile and assemble but don't link\n"
+ " -c\t\t\t\tCompile and assemble, but don't link\n"
" -d\t\t\t\tDebug mode\n"
" -g\t\t\t\tAdd debug info\n"
" -h\t\t\t\tHelp (this text)\n"
" -L path\t\t\tSpecify a library search path\n"
" -Ln name\t\t\tCreate a VICE label file\n"
" -O\t\t\t\tOptimize code\n"
- " -Oi\t\t\t\tOptimize code, inline functions\n"
+ " -Oi\t\t\t\tOptimize code, inline runtime functions\n"
" -Or\t\t\t\tOptimize code, honour the register keyword\n"
- " -Os\t\t\t\tOptimize code, inline known C funtions\n"
- " -S\t\t\t\tCompile but don't assemble and link\n"
+ " -Os\t\t\t\tOptimize code, inline known C functions\n"
+ " -S\t\t\t\tCompile, but don't assemble and link\n"
" -T\t\t\t\tInclude source as comment\n"
" -V\t\t\t\tPrint the version number\n"
- " -W name[,...]\t\t\tSupress compiler warnings\n"
+ " -W name[,...]\t\t\tSuppress compiler warnings\n"
" -Wa options\t\t\tPass options to the assembler\n"
+ " -Wc options\t\t\tPass options to the compiler\n"
" -Wl options\t\t\tPass options to the linker\n"
"\n"
"Long options:\n"
" --asm-args options\t\tPass options to the assembler\n"
" --asm-define sym[=v]\t\tDefine an assembler symbol\n"
" --asm-include-dir dir\t\tSet an assembler include directory\n"
- " --bin-include-dir dir\t\tSet an assembker binary include directory\n"
+ " --bin-include-dir dir\t\tSet an assembler binary include directory\n"
" --bss-label name\t\tDefine and export a BSS segment label\n"
" --bss-name seg\t\tSet the name of the BSS segment\n"
+ " --cc-args options\t\tPass options to the compiler\n"
" --cfg-path path\t\tSpecify a config file search path\n"
" --check-stack\t\t\tGenerate stack overflow checks\n"
" --code-label name\t\tDefine and export a CODE segment label\n"
" --code-name seg\t\tSet the name of the CODE segment\n"
" --codesize x\t\t\tAccept larger code by factor x\n"
" --config name\t\t\tUse linker config file\n"
- " --cpu type\t\t\tSet cpu type\n"
+ " --cpu type\t\t\tSet CPU type\n"
" --create-dep name\t\tCreate a make dependency file\n"
" --create-full-dep name\tCreate a full make dependency file\n"
" --data-label name\t\tDefine and export a DATA segment label\n"
" --mapfile name\t\tCreate a map file\n"
" --memory-model model\t\tSet the memory model\n"
" --module\t\t\tLink as a module\n"
- " --module-id id\t\tSpecify a module id for the linker\n"
+ " --module-id id\t\tSpecify a module ID for the linker\n"
" --o65-model model\t\tOverride the o65 model\n"
" --obj file\t\t\tLink this object file\n"
" --obj-path path\t\tSpecify an object file search path\n"
+static void OptCCArgs (const char* Opt attribute ((unused)), const char* Arg)
+/* Pass arguments to the compiler */
+{
+ CmdAddArgList (&CC65, Arg);
+}
+
+
+
static void OptCfgPath (const char* Opt attribute ((unused)), const char* Arg)
/* Config file search path (linker) */
{
const char* Arg attribute ((unused)))
/* List all targets */
{
- unsigned I;
+ target_t T;
/* List the targets */
- for (I = TGT_NONE; I < TGT_COUNT; ++I) {
- printf ("%s\n", TargetNames[I]);
+ for (T = TGT_NONE; T < TGT_COUNT; ++T) {
+ printf ("%s\n", GetTargetName (T));
}
/* Terminate */
{ "--bin-include-dir", 1, OptBinIncludeDir },
{ "--bss-label", 1, OptBssLabel },
{ "--bss-name", 1, OptBssName },
+ { "--cc-args", 1, OptCCArgs },
{ "--cfg-path", 1, OptCfgPath },
{ "--check-stack", 0, OptCheckStack },
{ "--code-label", 1, OptCodeLabel },
CmdInit (&CA65, "ca65");
CmdInit (&CO65, "co65");
CmdInit (&LD65, "ld65");
- CmdInit (&GRC, "grc");
+ CmdInit (&GRC, "grc65");
/* Our default target is the C64 instead of "none" */
Target = TGT_C64;
if (Arg[2] == 'a' && Arg[3] == '\0') {
/* -Wa: Pass options to assembler */
OptAsmArgs (Arg, GetArg (&I, 3));
+ } else if (Arg[2] == 'c' && Arg[3] == '\0') {
+ /* -Wc: Pass options to compiler */
+ OptCCArgs (Arg, GetArg (&I, 3));
} else if (Arg[2] == 'l' && Arg[3] == '\0') {
/* -Wl: Pass options to linker */
OptLdArgs (Arg, GetArg (&I, 3));