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