]> git.sur5r.net Git - cc65/commitdiff
New --memory-model switch
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 25 Nov 2003 18:36:32 +0000 (18:36 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 25 Nov 2003 18:36:32 +0000 (18:36 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2684 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/main.c
src/cc65/make/gcc.mak

index 0c3f0714b4c9e4bc5b9decef69aa7fbe3bdc6831..78df3c22c8025fa1e24fefef31f533e32b93cfd0 100644 (file)
@@ -7,7 +7,7 @@
 /*                                                                           */
 /*                                                                           */
 /* (C) 2000-2003 Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
+/*               Römerstraße 52                                              */
 /*               D-70794 Filderstadt                                         */
 /* EMail:        uz@cc65.org                                                 */
 /*                                                                           */
@@ -45,6 +45,7 @@
 #include "cpu.h"
 #include "debugflag.h"
 #include "fname.h"
+#include "mmodel.h"
 #include "print.h"
 #include "segnames.h"
 #include "target.h"
@@ -73,6 +74,7 @@
 
 
 static void Usage (void)
+/* Print usage information to stderr */
 {
     fprintf (stderr,
             "Usage: %s [options] file\n"
@@ -92,6 +94,7 @@ static void Usage (void)
                     "  -g\t\t\tAdd debug info to object file\n"
                     "  -h\t\t\tHelp (this text)\n"
                     "  -j\t\t\tDefault characters are signed\n"
+             "  -mm model\t\tSet the memory model\n"
                     "  -o name\t\tName the output file\n"
              "  -r\t\t\tEnable register variables\n"
                     "  -t sys\t\tSet the target system\n"
@@ -116,6 +119,7 @@ static void Usage (void)
             "  --help\t\tHelp (this text)\n"
                     "  --include-dir dir\tSet an include directory search path\n"
             "  --list-opt-steps\tList all optimizer steps and exit\n"
+             "  --memory-model model\tSet the memory model\n"
              "  --register-space b\tSet space available for register variables\n"
              "  --register-vars\tEnable register variables\n"
                     "  --rodata-name seg\tSet the name of the RODATA segment\n"
@@ -219,7 +223,7 @@ static void SetSys (const char* Sys)
             DefineNumericMacro ("__SUPERVISION__", 1);
             break;
 
-       default:    
+       default:
                    AbEnd ("Unknown target system type %d", Target);
     }
 
@@ -549,6 +553,22 @@ static void OptListOptSteps (const char* Opt attribute ((unused)),
 
 
 
+static void OptMemoryModel (const char* Opt, const char* Arg)
+/* Set the memory model */
+{
+    if (MemoryModel != MMODEL_UNKNOWN) {
+        AbEnd ("Cannot use option `%s' twice", Opt);
+    }
+    MemoryModel = FindMemoryModel (Arg);
+    if (MemoryModel == MMODEL_UNKNOWN) {
+        AbEnd ("Unknown memory model: %s", Arg);
+    } else if (MemoryModel == MMODEL_HUGE) {
+        AbEnd ("Unsupported memory model: %s", Arg);
+    }
+}
+
+
+
 static void OptRegisterSpace (const char* Opt, const char* Arg)
 /* Handle the --register-space option */
 {
@@ -649,6 +669,7 @@ int main (int argc, char* argv[])
        { "--help",             0,      OptHelp                 },
        { "--include-dir",      1,      OptIncludeDir           },
        { "--list-opt-steps",   0,      OptListOptSteps         },
+        { "--memory-model",     1,      OptMemoryModel          },
         { "--register-space",   1,      OptRegisterSpace        },
         { "--register-vars",    0,      OptRegisterVars         },
        { "--rodata-name",      1,      OptRodataName           },
index 10df2079c9897b8e93e322cb23a2e51097f4f452..179b875c5874abf1acf39b59d667f37db5f46a9b 100644 (file)
@@ -12,8 +12,11 @@ EXE          = cc65
 # Library directories
 COMMON = ../common
 
-# Default for the compiler lib search path as compiler define
-CDEFS=-DCC65_INC=\"/usr/lib/cc65/include/\"
+# The compiler library search path. Default is "/usr/lib/cc65/include/" if
+# nothing is defined
+#CDEFS=-DCC65_INC=\"/usr/lib/cc65/include/\"
+
+#
 CFLAGS = -O2 -g -Wall -W -I$(COMMON) $(CDEFS)
 CC=gcc
 EBIND=emxbind