From 17503f90303ce97a2ec018a1d3b0ed4ae162a5fd Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 25 Apr 2002 20:06:04 +0000 Subject: [PATCH] More changes for module support git-svn-id: svn://svn.cc65.org/cc65/trunk@1267 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cl65/main.c | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/cl65/main.c b/src/cl65/main.c index c6c597536..e152a9dba 100644 --- a/src/cl65/main.c +++ b/src/cl65/main.c @@ -114,6 +114,9 @@ static const char* FirstInput = 0; /* Remember if we should link a module */ static int Module = 0; +/* Extension used for a module */ +#define MODULE_EXT ".o65" + /* Name of the crt0 object file and the runtime library */ static char* TargetCRT0 = 0; static char* TargetLib = 0; @@ -121,7 +124,7 @@ static char* TargetLib = 0; /*****************************************************************************/ -/* Determine a file type */ +/* Determine a file type */ /*****************************************************************************/ @@ -363,26 +366,29 @@ static void Link (void) */ if (OutputName) { - CmdAddArg (&LD65, "-o"); - CmdAddArg (&LD65, OutputName); + CmdAddArg (&LD65, "-o"); + CmdAddArg (&LD65, OutputName); } else if (FirstInput && FindExt (FirstInput)) { /* Only if ext present! */ - - char* Output = MakeFilename (FirstInput, ""); - CmdAddArg (&LD65, "-o"); - CmdAddArg (&LD65, Output); - xfree (Output); + + const char* Extension = Module? MODULE_EXT : ""; + char* Output = MakeFilename (FirstInput, Extension); + CmdAddArg (&LD65, "-o"); + CmdAddArg (&LD65, Output); + xfree (Output); } - /* If we have a startup file, add its name as a parameter */ - if (TargetCRT0) { - CmdAddArg (&LD65, TargetCRT0); + /* If we have a startup file and if we are not linking a module, add its + * name as a parameter + */ + if (TargetCRT0 && !Module) { + CmdAddArg (&LD65, TargetCRT0); } /* Add all object files as parameters */ for (I = 0; I < LD65.FileCount; ++I) { - CmdAddArg (&LD65, LD65.Files [I]); + CmdAddArg (&LD65, LD65.Files [I]); } /* Add the system runtime library */ @@ -816,15 +822,11 @@ static void OptStaticLocals (const char* Opt attribute ((unused)), static void OptTarget (const char* Opt attribute ((unused)), const char* Arg) /* Set the target system */ { - if (Target != TGT_NONE) { - Error ("Cannot specify -t twice"); - } else { - Target = FindTarget (Arg); - if (Target == TGT_UNKNOWN) { - Error ("No such target system: `%s'", Arg); - } else if (Target == TGT_MODULE) { - Error ("Cannot use `module' as target, use --module instead"); - } + Target = FindTarget (Arg); + if (Target == TGT_UNKNOWN) { + Error ("No such target system: `%s'", Arg); + } else if (Target == TGT_MODULE) { + Error ("Cannot use `module' as target, use --module instead"); } } -- 2.39.5