DIFF attached for comment and review.  Provides the following features / 
difference:

1) Switched operation of cpuinfo.pas - there is still a SET containing  the ct_ 
constants, but that now indexes an array of structures rather  than a 
collection 
of arrays.  The array contains the info from the old  arrays, PLUS FLASH, SRAM 
and EPROM memory definitions i.e. BASE and SIZE  for each.
NOTE:  Switched for both ARM and AVR.  AVR changes will compile the  cross 
compiler, but choke while building the RTL  (complaining about a  function 
being 
too complex). However, the SVN and daily build exhibit  the same behaviour - so 
I do not believe I have broken the AVR any  further than it was broken.

2) Added LM3FURY controller unit file - this will be built up into a  base unit 
file for all the Fury class Stellaris controllers.

3) I intend to leave the "Stellaris" controller class with the intention  that 
those that don't want a full set of system defines can use this  class and will 
receive nothing more than the bare minimum to boot a chip  into PASCALMAIN.  
The 
Flash and SRAM sizes will be set very large - so  caveat emptor to the user if, 
as they will need to ensure the programs  do not require more resources than 
their chip require.

4) t_embed.pas was changed.  The case() statement is still in there, but  all 
the cases fall down to the same code - which uses the cpuinfo.pas  memory 
definitions to create the linker file.

5) put a test in t_embed.pas - if we are only compiling to assembly,  then we 
skip the Internal Error on not having a link definition.

6) option.pas, globals.pas, ncgutil.pas and pmodules.pas were modified to 
accommodate the addition of the structure.

7) IF controllerunitstr is empty - then no added file is included in the  build 
(again, to support a "base" controller type - with no defines  what so ever - 
power user option)

NOTE:  The Makefile changes were picked up by svn diff - not sure why  they 
changed so much, my incantation of fpcmake must be different than  the original 
sources code

NOTE:  The AVR link script generation has not been changed to  accommodate the 
additional information - the original link script did  not set memory sizes to 
match the processor.

John
Index: rtl/embedded/Makefile.fpc
===================================================================
--- rtl/embedded/Makefile.fpc   (revision 18278)
+++ rtl/embedded/Makefile.fpc   (working copy)
@@ -48,7 +48,7 @@
 SYSINIT_UNITS=
 
 ifeq ($(ARCH),arm)
-CPU_UNITS=lpc21x4 at91sam7x256 stellaris stm32f103
+CPU_UNITS=lpc21x4 at91sam7x256 stellaris stm32f103 lm3fury
 endif
 
 ifeq ($(ARCH),avr)
Index: rtl/embedded/Makefile
===================================================================
--- rtl/embedded/Makefile       (revision 18278)
+++ rtl/embedded/Makefile       (working copy)
@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/11]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/04/23]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd 
i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware 
i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc 
i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux 
m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos 
m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos 
powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux 
sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd 
x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos 
arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux 
powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded 
mipsel-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd 
i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware 
i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc 
i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd 
m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux 
powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos 
powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded 
x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 
x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds 
arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded 
avr-embedded armeb-linux armeb-embedded mipsel-linux
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -189,11 +189,7 @@
 TARGETSUFFIX=$(OS_TARGET)
 SOURCESUFFIX=$(OS_SOURCE)
 else
-ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-else
 TARGETSUFFIX=$(FULL_TARGET)
-endif
 SOURCESUFFIX=$(FULL_SOURCE)
 endif
 ifneq ($(FULL_TARGET),$(FULL_SOURCE))
@@ -250,7 +246,7 @@
 ifndef CROSSBINDIR
 CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
 endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_TARGET),darwin)
 ifeq ($(OS_SOURCE),darwin)
 DARWIN2DARWIN=1
 endif
@@ -269,30 +265,6 @@
 UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base 
$(FPCDIR)/packages/extra)
-ifndef FPCFPMAKE
-ifdef CROSSCOMPILE
-ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPCFPMAKE:=$(shell $(FPCPROG) -PB)
-ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
-FPCFPMAKE:=$(firstword $(FPCPROG))
-endif
-else
-override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix 
/ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
-FPMAKE_SKIP_CONFIG=-n
-export FPCFPMAKE
-export FPMAKE_SKIP_CONFIG
-endif
-else
-FPMAKE_SKIP_CONFIG=-n
-FPCFPMAKE=$(FPC)
-endif
-endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard 
$(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 RTL=..
@@ -308,7 +280,7 @@
 CPU_UNITS=
 SYSINIT_UNITS=
 ifeq ($(ARCH),arm)
-CPU_UNITS=lpc21x4 at91sam7x256 stellaris stm32f103
+CPU_UNITS=lpc21x4 at91sam7x256 stellaris stm32f103 lm3fury
 endif
 ifeq ($(ARCH),avr)
 CPU_UNITS=atmega128
@@ -378,12 +350,6 @@
 ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
-endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
 endif
@@ -429,9 +395,6 @@
 ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
-endif
 ifeq ($(FULL_TARGET),sparc-linux)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) objpas # macpas iso7185 
strings
 endif
@@ -568,12 +531,6 @@
 ifeq ($(FULL_TARGET),i386-symbian)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -619,9 +576,6 @@
 ifeq ($(FULL_TARGET),powerpc-embedded)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
 ifeq ($(FULL_TARGET),sparc-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -757,12 +711,6 @@
 ifeq ($(FULL_TARGET),i386-symbian)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
-endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
 endif
@@ -808,9 +756,6 @@
 ifeq ($(FULL_TARGET),powerpc-embedded)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
-endif
 ifeq ($(FULL_TARGET),sparc-linux)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
 endif
@@ -1213,7 +1158,7 @@
 SHORTSUFFIX=mac
 IMPORTLIBPREFIX=imp
 endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_TARGET),darwin)
 BATCHEXT=.sh
 EXEEXT=
 HASSHAREDLIB=1
@@ -1228,15 +1173,6 @@
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 endif
-ifeq ($(OS_TARGET),NativeNT)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=nativent
-endif
-ifeq ($(OS_TARGET),wii)
-EXEEXT=.dol
-SHAREDLIBEXT=.so
-SHORTSUFFIX=wii
-endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -1772,7 +1708,7 @@
 endif
 endif
 ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifneq ($(findstring $(OS_TARGET),linux solaris),)
+ifeq ($(OS_TARGET),linux)
 ifeq ($(CPU_TARGET),x86_64)
 override FPCOPT+=-Cg
 endif
@@ -2063,7 +1999,6 @@
        @$(ECHO)  Full Target.. $(FULL_TARGET)
        @$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
        @$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-       @$(ECHO)  FPC fpmake... $(FPCFPMAKE)
        @$(ECHO)
        @$(ECHO)  == Directory info ==
        @$(ECHO)
Index: compiler/avr/cpuinfo.pas
===================================================================
--- compiler/avr/cpuinfo.pas    (revision 18278)
+++ compiler/avr/cpuinfo.pas    (working copy)
@@ -72,6 +72,14 @@
       ct_atmega128
      );
 
+     tcontrollerdatatype = record
+
+        controllertypestr, controllerunitstr: string[20];
+        interruptvectors:integer;
+        flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize: 
dword;
+     end;
+
+
 Const
    {# Size of native extended floating point type }
    extended_size = 12;
@@ -112,23 +120,75 @@
      'LIBGCC'
    );
 
-   controllertypestr : array[tcontrollertype] of string[20] =
-     ('',
-      'ATMEGA16',
-      'ATMEGA32',
-      'ATMEGA48',
-      'ATMEGA64',
-      'ATMEGA128'
-     );
+   embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
+   ((
+       controllertypestr:'';
+        controllerunitstr:'';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:0;
+        srambase:0;
+        sramsize:0;
+        eeprombase:0;
+        eepromsize:0
+       ),
+        (
+       controllertypestr:'ATMEGA16';
+        controllerunitstr:'ATMEGA16';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:$4000;
+        srambase:0;
+        sramsize:1024;
+        eeprombase:0;
+        eepromsize:512
+        ),
+        (
+       controllertypestr:'ATMEGA32';
+        controllerunitstr:'ATMEGA32';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:$8000;
+        srambase:0;
+        sramsize:1024;
+        eeprombase:0;
+        eepromsize:512
+        ),
+       (
+        controllertypestr:'ATMEGA48';
+        controllerunitstr:'ATMEGA48';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:$1000;
+        srambase:0;
+        sramsize:512;
+        eeprombase:0;
+        eepromsize:256;
+        ),
+       (
+        controllertypestr:'ATMEGA64';
+        controllerunitstr:'ATMEGA64';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:$10000;
+        srambase:0;
+        sramsize:4096;
+        eeprombase:0;
+        eepromsize:2048;
+        ),
+       (
+        controllertypestr:'ATMEGA128';
+        controllerunitstr:'ATMEGA128';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:$20000;
+        srambase:0;
+        sramsize:4096;
+        eeprombase:0;
+        eepromsize:4096;
+        )
+   );
 
-   controllerunitstr : array[tcontrollertype] of string[20] =
-     ('',
-      'ATMEGA16',
-      'ATMEGA32',
-      'ATMEGA48',
-      'ATMEGA64',
-      'ATMEGA128'
-     );
    { Supported optimizations, only used for information }
    supported_optimizerswitches = genericlevel1optimizerswitches+
                                  genericlevel2optimizerswitches+
Index: compiler/pmodules.pas
===================================================================
--- compiler/pmodules.pas       (revision 18278)
+++ compiler/pmodules.pas       (working copy)
@@ -714,8 +714,9 @@
 
         { CPU targets with microcontroller support can add a controller 
specific unit }
 {$if defined(ARM) or defined(AVR)}
-        if (target_info.system in systems_embedded) and 
(current_settings.controllertype<>ct_none) then
-          AddUnit(controllerunitstr[current_settings.controllertype]);
+        if (target_info.system in systems_embedded) and 
(current_settings.controllertype<>ct_none) and
+               
(embedded_controllers[current_settings.controllertype].controllerunitstr<>'') 
then
+          
AddUnit(embedded_controllers[current_settings.controllertype].controllerunitstr);
 {$endif ARM}
       end;
 
Index: compiler/globals.pas
===================================================================
--- compiler/globals.pas        (revision 18278)
+++ compiler/globals.pas        (working copy)
@@ -1108,7 +1108,7 @@
         result:=false;
         hs:=Upper(s);
         for t:=low(tcontrollertype) to high(tcontrollertype) do
-          if controllertypestr[t]=hs then
+          if embedded_controllers[t].controllertypestr=hs then
             begin
               a:=t;
               result:=true;
Index: compiler/ncgutil.pas
===================================================================
--- compiler/ncgutil.pas        (revision 18278)
+++ compiler/ncgutil.pas        (working copy)
@@ -3153,7 +3153,7 @@
       function GetInterruptTableLength: longint;
         begin
 {$if defined(ARM)}
-          result:=interruptvectors[current_settings.controllertype];
+          
result:=embedded_controllers[current_settings.controllertype].interruptvectors;
 {$else}
           result:=0;
 {$endif}
Index: compiler/arm/cpuinfo.pas
===================================================================
--- compiler/arm/cpuinfo.pas    (revision 18278)
+++ compiler/arm/cpuinfo.pas    (working copy)
@@ -76,9 +76,17 @@
       ct_stm32f103re,
 
       { TI }
+      ct_lm3s8962,
       ct_stellaris
      );
 
+     tcontrollerdatatype = record
+
+        controllertypestr, controllerunitstr: string[20];
+        interruptvectors:integer;
+        flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize: 
dword;
+     end;
+
 Const
    {# Size of native extended floating point type }
    extended_size = 12;
@@ -125,45 +133,119 @@
      'VFPV3'
    );
 
-   controllertypestr : array[tcontrollertype] of string[20] =
-     ('',
-      'LPC2114',
-      'LPC2124',
-      'LPC2194',
-      'AT91SAM7S256',
-      'AT91SAM7SE256',
-      'AT91SAM7X256',
-      'AT91SAM7XC256',
-      'STM32F103RE',
-      'STELLARIS'
-     );
+   embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
+   ((
+       controllertypestr:'';
+        controllerunitstr:'';
+        interruptvectors:0;
+        flashbase:0;
+        flashsize:0;
+        srambase:0;
+        sramsize:0
+       ),
 
-   controllerunitstr : array[tcontrollertype] of string[20] =
-     ('',
-      'LPC21x4',
-      'LPC21x4',
-      'LPC21x4',
-      'AT91SAM7x256',
-      'AT91SAM7x256',
-      'AT91SAM7x256',
-      'AT91SAM7x256',
-      'STM32F103',
-      'STELLARIS'
-     );
+        (
+       controllertypestr:'LPC2114';
+        controllerunitstr:'LPC21x4';
+        interruptvectors:8;
+       flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00004000
+        ),
 
-   interruptvectors : array[tcontrollertype] of longint =
-     (0,
-      8,
-      8,
-      8,
-      8,
-      8,
-      8,
-      8,
-      12+59, { XL-density }
-      12 { No model specified }
-     );
+        (
+       controllertypestr:'LPC2124';
+        controllerunitstr:'LPC21x4';
+        interruptvectors:8;
+       flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00004000
+        ),
 
+        (
+       controllertypestr:'LPC2194';
+        controllerunitstr:'LPC21x4';
+        interruptvectors:8;
+       flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00004000
+       ),
+
+        (
+       controllertypestr:'AT91SAM7S256';
+        controllerunitstr:'AT91SAM7x256';
+        interruptvectors:8;
+        flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'AT91SAM7SE256';
+        controllerunitstr:'AT91SAM7x256';
+        interruptvectors:8;
+        flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'AT91SAM7X256';
+        controllerunitstr:'AT91SAM7x256';
+        interruptvectors:8;
+        flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'AT91SAM7XC256';
+        controllerunitstr:'AT91SAM7x256';
+        interruptvectors:8;
+       flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'STM32F103RE';
+        controllerunitstr:'STM32F103';
+        interruptvectors:12;
+        flashbase:$08000000;
+        flashsize:$00080000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'LM3S8962';
+        controllerunitstr:'LM3FURY';
+        interruptvectors:72;
+       flashbase:$00000000;
+        flashsize:$00040000;
+        srambase:$40000000;
+        sramsize:$00010000
+        ),
+
+        (
+       controllertypestr:'STELLARIS';
+        controllerunitstr:'LM3FURY';
+        interruptvectors:128;
+       flashbase:$00000000;
+        flashsize:$00100000;
+        srambase:$40000000;
+        sramsize:$00100000
+        )
+    );
+
+
    vfp_scalar = [fpu_vfpv2,fpu_vfpv3];
 
    { Supported optimizations, only used for information }
Index: compiler/systems/t_embed.pas
===================================================================
--- compiler/systems/t_embed.pas        (revision 18278)
+++ compiler/systems/t_embed.pas        (working copy)
@@ -79,6 +79,7 @@
   linklibc : boolean;
   found1,
   found2   : boolean;
+  LinkStr  : string;
 begin
   WriteResponseFile:=False;
   linklibc:=(SharedLibFiles.Find('c')<>nil);
@@ -216,49 +217,42 @@
 
 {$ifdef ARM}
   case current_settings.controllertype of
-    ct_none:
-      ;
-    ct_lpc2114,
-    ct_lpc2124,
-    ct_lpc2194:
-      with linkres do
-        begin
-          Add('ENTRY(_START)');
-          Add('MEMORY');
-          Add('{');
-          Add('    flash : ORIGIN = 0, LENGTH = 256K');
-          Add('    ram : ORIGIN = 0x40000000, LENGTH = 16K');
-          Add('}');
-          Add('_stack_top = 0x40003FFC;');
-        end;
+      ct_none:
+           begin
+           end;
+      ct_lpc2114,
+      ct_lpc2124,
+      ct_lpc2194,
       ct_at91sam7s256,
       ct_at91sam7se256,
       ct_at91sam7x256,
-      ct_at91sam7xc256:
-      with linkres do
+      ct_at91sam7xc256,
+      ct_stm32f103re,
+      ct_lm3s8962,
+      ct_stellaris:
         begin
-          Add('ENTRY(_START)');
-          Add('MEMORY');
-          Add('{');
-          Add('    flash : ORIGIN = 0, LENGTH = 256K');
-          Add('    ram : ORIGIN = 0x200000, LENGTH = 64K');
-          Add('}');
-          Add('_stack_top = 0x20FFFC;');
-        end;
-      ct_stm32f103re:
-      with linkres do
-        begin
-          Add('ENTRY(_START)');
-          Add('MEMORY');
-          Add('{');
-          Add('    flash : ORIGIN = 0x08000000, LENGTH = 512K');
-          Add('    ram : ORIGIN = 0x20000000, LENGTH = 64K');
-          Add('}');
-          Add('_stack_top = 0x2000FFFC;');
-        end;
+         with embedded_controllers[current_settings.controllertype] do
+          with linkres do
+            begin
+              Add('ENTRY(_START)');
+              Add('MEMORY');
+              Add('{');
 
+              LinkStr := '    flash : ORIGIN = 0x' + IntToHex(flashbase,8)
+                + ', LENGTH = ' + IntToStr(flashsize div 1024)+'K';
+              Add(LinkStr);
+
+              LinkStr := '    ram : ORIGIN = 0x' + IntToHex(srambase,8)
+               + ', LENGTH = ' + IntToStr(sramsize div 1024)+'K';
+              Add(LinkStr);
+
+              Add('}');
+              Add('_stack_top = 0x' + IntToHex(sramsize+srambase-4,8) + ';');
+            end;
+        end
     else
-      internalerror(200902011);
+      if not (cs_link_nolink in current_settings.globalswitches) then
+        internalerror(200902011);
   end;
 
   with linkres do
Index: compiler/options.pas
===================================================================
--- compiler/options.pas        (revision 18278)
+++ compiler/options.pas        (working copy)
@@ -286,7 +286,7 @@
 }
               begin
                 hs:=s;
-                hs1:=ControllerTypeStr[controllertype];
+                hs1:=embedded_controllers[controllertype].ControllerTypeStr;
                 if hs1<>'' then
                   begin
                     Replace(hs,'$CONTROLLERTYPES',hs1);
Index: Makefile
===================================================================
--- Makefile    (revision 18278)
+++ Makefile    (working copy)
@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/11]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/04/23]
 #
 default: help
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd 
i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware 
i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc 
i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux 
m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos 
m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos 
powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux 
sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd 
x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos 
arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux 
powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded 
mipsel-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd 
i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware 
i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc 
i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd 
m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux 
powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos 
powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded 
x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 
x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds 
arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded 
avr-embedded armeb-linux armeb-embedded mipsel-linux
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -188,11 +188,7 @@
 TARGETSUFFIX=$(OS_TARGET)
 SOURCESUFFIX=$(OS_SOURCE)
 else
-ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-else
 TARGETSUFFIX=$(FULL_TARGET)
-endif
 SOURCESUFFIX=$(FULL_SOURCE)
 endif
 ifneq ($(FULL_TARGET),$(FULL_SOURCE))
@@ -249,7 +245,7 @@
 ifndef CROSSBINDIR
 CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
 endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_TARGET),darwin)
 ifeq ($(OS_SOURCE),darwin)
 DARWIN2DARWIN=1
 endif
@@ -268,30 +264,6 @@
 UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base 
$(FPCDIR)/packages/extra)
-ifndef FPCFPMAKE
-ifdef CROSSCOMPILE
-ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPCFPMAKE:=$(shell $(FPCPROG) -PB)
-ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
-FPCFPMAKE:=$(firstword $(FPCPROG))
-endif
-else
-override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix 
/ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
-FPMAKE_SKIP_CONFIG=-n
-export FPCFPMAKE
-export FPMAKE_SKIP_CONFIG
-endif
-else
-FPMAKE_SKIP_CONFIG=-n
-FPCFPMAKE=$(FPC)
-endif
-endif
 override PACKAGE_NAME=fpc
 override PACKAGE_VERSION=2.7.1
 ifndef inOS2
@@ -459,12 +431,6 @@
 ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_DIRS+=compiler rtl utils packages ide installer
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_DIRS+=compiler rtl utils packages ide installer
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_DIRS+=compiler rtl utils packages ide installer
-endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_DIRS+=compiler rtl utils packages ide installer
 endif
@@ -510,9 +476,6 @@
 ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_DIRS+=compiler rtl utils packages ide installer
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_DIRS+=compiler rtl utils packages ide installer
-endif
 ifeq ($(FULL_TARGET),sparc-linux)
 override TARGET_DIRS+=compiler rtl utils packages ide installer
 endif
@@ -916,7 +879,7 @@
 SHORTSUFFIX=mac
 IMPORTLIBPREFIX=imp
 endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_TARGET),darwin)
 BATCHEXT=.sh
 EXEEXT=
 HASSHAREDLIB=1
@@ -931,15 +894,6 @@
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 endif
-ifeq ($(OS_TARGET),NativeNT)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=nativent
-endif
-ifeq ($(OS_TARGET),wii)
-EXEEXT=.dol
-SHAREDLIBEXT=.so
-SHORTSUFFIX=wii
-endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -1475,7 +1429,7 @@
 endif
 endif
 ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifneq ($(findstring $(OS_TARGET),linux solaris),)
+ifeq ($(OS_TARGET),linux)
 ifeq ($(CPU_TARGET),x86_64)
 override FPCOPT+=-Cg
 endif
@@ -1769,7 +1723,6 @@
        @$(ECHO)  Full Target.. $(FULL_TARGET)
        @$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
        @$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-       @$(ECHO)  FPC fpmake... $(FPCFPMAKE)
        @$(ECHO)
        @$(ECHO)  == Directory info ==
        @$(ECHO)
@@ -2017,22 +1970,6 @@
 TARGET_DIRS_IDE=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
-TARGET_DIRS_COMPILER=1
-TARGET_DIRS_RTL=1
-TARGET_DIRS_UTILS=1
-TARGET_DIRS_PACKAGES=1
-TARGET_DIRS_IDE=1
-TARGET_DIRS_INSTALLER=1
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-TARGET_DIRS_COMPILER=1
-TARGET_DIRS_RTL=1
-TARGET_DIRS_UTILS=1
-TARGET_DIRS_PACKAGES=1
-TARGET_DIRS_IDE=1
-TARGET_DIRS_INSTALLER=1
-endif
 ifeq ($(FULL_TARGET),m68k-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
@@ -2153,14 +2090,6 @@
 TARGET_DIRS_IDE=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-TARGET_DIRS_COMPILER=1
-TARGET_DIRS_RTL=1
-TARGET_DIRS_UTILS=1
-TARGET_DIRS_PACKAGES=1
-TARGET_DIRS_IDE=1
-TARGET_DIRS_INSTALLER=1
-endif
 ifeq ($(FULL_TARGET),sparc-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to