From bdd3b4e695f5b05287797abbb597b0dbd049d1f6 Mon Sep 17 00:00:00 2001 From: pierre Date: Sat, 6 Jan 2018 12:27:28 +0000 Subject: [PATCH] * Move rtl.cfg content to system.cfg + New rtl.cfg containg non-feature options of former file (i8086 only) * Use system.cfg for system unit compilation + add @rtl.cfg option for i8086 CPU git-svn-id: trunk@37920 - --- .gitattributes | 1 + rtl/embedded/Makefile | 5 +- rtl/embedded/Makefile.fpc | 7 +- rtl/embedded/rtl.cfg | 200 +----------------------------------- rtl/embedded/system.cfg | 207 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 220 insertions(+), 200 deletions(-) create mode 100644 rtl/embedded/system.cfg diff --git a/.gitattributes b/.gitattributes index b77879bb4e..30a233ec9d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9093,6 +9093,7 @@ rtl/embedded/sysfile.inc svneol=native#text/plain rtl/embedded/sysheap.inc svneol=native#text/plain rtl/embedded/sysos.inc svneol=native#text/plain rtl/embedded/sysosh.inc svneol=native#text/plain +rtl/embedded/system.cfg svneol=native#text/plain rtl/embedded/system.pp svneol=native#text/plain rtl/embedded/systhrd.inc svneol=native#text/plain rtl/embedded/sysutils.pp svneol=native#text/pascal diff --git a/rtl/embedded/Makefile b/rtl/embedded/Makefile index 3abf48fbda..644badbf2a 100644 --- a/rtl/embedded/Makefile +++ b/rtl/embedded/Makefile @@ -349,6 +349,9 @@ endif ifdef RELEASE override FPCOPT+=-Ur endif +ifeq ($(ARCH),i8086) +override FPCOPT+=@rtl.cfg +endif CPU_UNITS= SYSINIT_UNITS= CPU_SPECIFIC_COMMON_UNITS= @@ -2692,7 +2695,7 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) startup$(OEXT) : $(CPU_TARGET)/startup.s $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)startup$(OEXT) $(CPU_TARGET)/startup.s -mabi=32 -march=pic32mx -mtune=pic32mx -W -EL -msym32 $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp - $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @rtl.cfg $(REDIR) + $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @system.cfg $(REDIR) uuchar$(PPUEXT): $(INC)/uuchar.pp $(SYSTEMUNIT)$(PPUEXT) $(COMPILER) $< objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT) diff --git a/rtl/embedded/Makefile.fpc b/rtl/embedded/Makefile.fpc index dc3bbe00b7..7d2a539651 100644 --- a/rtl/embedded/Makefile.fpc +++ b/rtl/embedded/Makefile.fpc @@ -59,6 +59,11 @@ ifdef RELEASE override FPCOPT+=-Ur endif +# Always include rtl.cfg config file for i8086 +ifeq ($(ARCH),i8086) +override FPCOPT+=@rtl.cfg +endif + CPU_UNITS= SYSINIT_UNITS= CPU_SPECIFIC_COMMON_UNITS= @@ -197,7 +202,7 @@ startup$(OEXT) : $(CPU_TARGET)/startup.s # $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp - $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @rtl.cfg $(REDIR) + $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @system.cfg $(REDIR) uuchar$(PPUEXT): $(INC)/uuchar.pp $(SYSTEMUNIT)$(PPUEXT) $(COMPILER) $< diff --git a/rtl/embedded/rtl.cfg b/rtl/embedded/rtl.cfg index 3a29d7af17..e33f5490ac 100644 --- a/rtl/embedded/rtl.cfg +++ b/rtl/embedded/rtl.cfg @@ -1,206 +1,10 @@ -# first, disable all --Sf- -# enable required ones -# they don't add much additional code or data --SfTEXTIO --SfFILEIO --SfHEAP - -# uncomment to enable the stuff you want to use - -# include full heap management into the rtl -# -SfHEAP - -# include support for init final code of units into the rtl -# -SfINITFINAL - -# -SfCLASSES -# -SfEXCEPTIONS -# -SfEXITCODE -# -SfANSISTRINGS -# -SfWIDESTRINGS -# -SfTEXTIO -# -SfCONSOLEIO -# -SfFILEIO -# -SfRANDOM -# -SfVARIANTS -# -SfOBJECTS -# -SfDYNARRAYS -# -SfTHREADING -# -SfCOMMANDARGS -# -SfPROCESSES -# -SfSTACKCHECK -# -SfDYNLIBS - -# include exit code support --SfEXITCODE - -# i386 is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUI386 --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUI386 - -# x86_64 is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUX86_64 --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUX86_64 - -# arm is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUARM --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUARM - -# mipsel is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUMIPSEL --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUMIPSEL - -# mips is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUMIPS --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUMIPS - -# powerpc is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUPOWERPC --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUPOWERPC - -# powerpc64 is powerful enough to handle most object pascal constructs -# it is only a matter of size -#ifdef CPUPOWERPC64 --SfSOFTFPU --SfCLASSES --SfEXCEPTIONS --SfANSISTRINGS --SfRTTI --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif CPUPOWERPC64 - -# does not require extra memory, neither code nor data -# in programs not using e. g. writeln based I/O which is the common case for AVR -#ifdef CPUAVR --SfOBJECTS --SfEXCEPTIONS --SfCLASSES --SfRTTI -# AVR6 has normally more memory, so enable more functions -#ifdef CPUAVR6 --SfANSISTRINGS --SfWIDESTRINGS --SfDYNARRAYS --SfTHREADING --SfVARIANTS --SfOBJECTS --SfCOMMANDARGS --SfRANDOM --SfRESOURCES -#endif -#endif - -# Minimal set for m68k, copied from AVR above -# does not require extra memory, neither code nor data -# in programs not using e. g. writeln based I/O -#ifdef CPUM68K --SfSOFTFPU --SfOBJECTS --SfEXCEPTIONS --SfCLASSES --SfRTTI -#endif +# Keep only options that are not features +# as those are now restricted to system unit compilation only # Minimal set for i8086, copied from AVR above # does not require extra memory, neither code nor data # in programs not using e. g. writeln based I/OR #ifdef CPUI8086 --SfOBJECTS --SfEXCEPTIONS --SfCLASSES --SfRTTI -Cs2048 -CX -XX diff --git a/rtl/embedded/system.cfg b/rtl/embedded/system.cfg new file mode 100644 index 0000000000..3a29d7af17 --- /dev/null +++ b/rtl/embedded/system.cfg @@ -0,0 +1,207 @@ +# first, disable all +-Sf- +# enable required ones +# they don't add much additional code or data +-SfTEXTIO +-SfFILEIO +-SfHEAP + +# uncomment to enable the stuff you want to use + +# include full heap management into the rtl +# -SfHEAP + +# include support for init final code of units into the rtl +# -SfINITFINAL + +# -SfCLASSES +# -SfEXCEPTIONS +# -SfEXITCODE +# -SfANSISTRINGS +# -SfWIDESTRINGS +# -SfTEXTIO +# -SfCONSOLEIO +# -SfFILEIO +# -SfRANDOM +# -SfVARIANTS +# -SfOBJECTS +# -SfDYNARRAYS +# -SfTHREADING +# -SfCOMMANDARGS +# -SfPROCESSES +# -SfSTACKCHECK +# -SfDYNLIBS + +# include exit code support +-SfEXITCODE + +# i386 is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUI386 +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUI386 + +# x86_64 is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUX86_64 +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUX86_64 + +# arm is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUARM +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUARM + +# mipsel is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUMIPSEL +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUMIPSEL + +# mips is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUMIPS +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUMIPS + +# powerpc is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUPOWERPC +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUPOWERPC + +# powerpc64 is powerful enough to handle most object pascal constructs +# it is only a matter of size +#ifdef CPUPOWERPC64 +-SfSOFTFPU +-SfCLASSES +-SfEXCEPTIONS +-SfANSISTRINGS +-SfRTTI +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif CPUPOWERPC64 + +# does not require extra memory, neither code nor data +# in programs not using e. g. writeln based I/O which is the common case for AVR +#ifdef CPUAVR +-SfOBJECTS +-SfEXCEPTIONS +-SfCLASSES +-SfRTTI +# AVR6 has normally more memory, so enable more functions +#ifdef CPUAVR6 +-SfANSISTRINGS +-SfWIDESTRINGS +-SfDYNARRAYS +-SfTHREADING +-SfVARIANTS +-SfOBJECTS +-SfCOMMANDARGS +-SfRANDOM +-SfRESOURCES +#endif +#endif + +# Minimal set for m68k, copied from AVR above +# does not require extra memory, neither code nor data +# in programs not using e. g. writeln based I/O +#ifdef CPUM68K +-SfSOFTFPU +-SfOBJECTS +-SfEXCEPTIONS +-SfCLASSES +-SfRTTI +#endif + +# Minimal set for i8086, copied from AVR above +# does not require extra memory, neither code nor data +# in programs not using e. g. writeln based I/OR +#ifdef CPUI8086 +-SfOBJECTS +-SfEXCEPTIONS +-SfCLASSES +-SfRTTI +-Cs2048 +-CX +-XX +#endif