Browse Source

--- Merging r15192 into '.':
U utils/fpcmkcfg/Makefile.fpc
U utils/fpcmkcfg/Makefile
U utils/fpcmkcfg/fpcmkcfg.pp
D utils/fpcmkcfg/usubst.pp
--- Merging r15193 into '.':
A utils/fpcmkcfg/default.cft
A utils/fpcmkcfg/fppkg.inc
G utils/fpcmkcfg/Makefile.fpc
A utils/fpcmkcfg/fppkg.cfg
A utils/fpcmkcfg/default.inc
G utils/fpcmkcfg/Makefile
G utils/fpcmkcfg/fpcmkcfg.pp
--- Merging r15216 into '.':
G utils/fpcmkcfg/fpcmkcfg.pp
--- Merging r15219 into '.':
U utils/fpcmkcfg/fpccfg.inc
U utils/fpcmkcfg/fpc.cft
G utils/fpcmkcfg/fpcmkcfg.pp
--- Merging r15220 into '.':
G utils/fpcmkcfg/fpccfg.inc
G utils/fpcmkcfg/fpc.cft
G utils/fpcmkcfg/Makefile.fpc
G utils/fpcmkcfg/Makefile
G utils/fpcmkcfg/fpcmkcfg.pp
--- Merging r15226 into '.':
G utils/fpcmkcfg/fpcmkcfg.pp

# revisions: 15192,15193,15216,15219,15220,15226
------------------------------------------------------------------------
r15192 | joost | 2010-04-27 11:25:36 +0200 (Tue, 27 Apr 2010) | 2 lines
Changed paths:
M /trunk/utils/fpcmkcfg/Makefile
M /trunk/utils/fpcmkcfg/Makefile.fpc
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp
D /trunk/utils/fpcmkcfg/usubst.pp

* Removed usubst unit, use fpTemplate instead
* Commented out not-implemented option -l from help screen
------------------------------------------------------------------------
------------------------------------------------------------------------
r15193 | joost | 2010-04-27 14:12:30 +0200 (Tue, 27 Apr 2010) | 1 line
Changed paths:
M /trunk/utils/fpcmkcfg/Makefile
M /trunk/utils/fpcmkcfg/Makefile.fpc
A /trunk/utils/fpcmkcfg/default.cft
A /trunk/utils/fpcmkcfg/default.inc
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp
A /trunk/utils/fpcmkcfg/fppkg.cfg
A /trunk/utils/fpcmkcfg/fppkg.inc

* Added templates for fppkg configuration files
------------------------------------------------------------------------
------------------------------------------------------------------------
r15216 | joost | 2010-05-03 16:43:15 +0200 (Mon, 03 May 2010) | 2 lines
Changed paths:
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp

* Added -m option to show values of all macros
* Removed unused resourcestrings
------------------------------------------------------------------------
------------------------------------------------------------------------
r15219 | joost | 2010-05-03 18:58:41 +0200 (Mon, 03 May 2010) | 1 line
Changed paths:
M /trunk/utils/fpcmkcfg/fpc.cft
M /trunk/utils/fpcmkcfg/fpccfg.inc
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp

* Not in all cross-compile cases the -XP$FPCTARGET- option is necessary
------------------------------------------------------------------------
------------------------------------------------------------------------
r15220 | joost | 2010-05-04 11:05:43 +0200 (Tue, 04 May 2010) | 1 line
Changed paths:
M /trunk/utils/fpcmkcfg/Makefile
M /trunk/utils/fpcmkcfg/Makefile.fpc
M /trunk/utils/fpcmkcfg/fpc.cft
M /trunk/utils/fpcmkcfg/fpccfg.inc
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp

* Determine and add gcclib path to fpc.cfg configuration file
------------------------------------------------------------------------
------------------------------------------------------------------------
r15226 | joost | 2010-05-04 22:36:20 +0200 (Tue, 04 May 2010) | 1 line
Changed paths:
M /trunk/utils/fpcmkcfg/fpcmkcfg.pp

* Define NEEDCROSSBINUTILS when compiling from darwin to non-darwin platforms
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_4@16841 -

marco 14 years ago
parent
commit
9585db83a3

+ 4 - 1
.gitattributes

@@ -10717,6 +10717,8 @@ utils/fpcm/printmakefilefpcrequirements.sh svneol=native#text/plain
 utils/fpcm/readme.txt svneol=native#text/plain
 utils/fpcm/readme.txt svneol=native#text/plain
 utils/fpcmkcfg/Makefile svneol=native#text/plain
 utils/fpcmkcfg/Makefile svneol=native#text/plain
 utils/fpcmkcfg/Makefile.fpc svneol=native#text/plain
 utils/fpcmkcfg/Makefile.fpc svneol=native#text/plain
+utils/fpcmkcfg/default.cft svneol=native#text/plain
+utils/fpcmkcfg/default.inc svneol=native#text/plain
 utils/fpcmkcfg/fpc.cft svneol=native#text/plain
 utils/fpcmkcfg/fpc.cft svneol=native#text/plain
 utils/fpcmkcfg/fpccfg.inc svneol=native#text/plain
 utils/fpcmkcfg/fpccfg.inc svneol=native#text/plain
 utils/fpcmkcfg/fpcfg.inc svneol=native#text/plain
 utils/fpcmkcfg/fpcfg.inc svneol=native#text/plain
@@ -10724,7 +10726,8 @@ utils/fpcmkcfg/fpcmkcfg.pp svneol=native#text/plain
 utils/fpcmkcfg/fpinc.cfg svneol=native#text/plain
 utils/fpcmkcfg/fpinc.cfg svneol=native#text/plain
 utils/fpcmkcfg/fpinc.ini svneol=native#text/plain
 utils/fpcmkcfg/fpinc.ini svneol=native#text/plain
 utils/fpcmkcfg/fpini.inc svneol=native#text/plain
 utils/fpcmkcfg/fpini.inc svneol=native#text/plain
-utils/fpcmkcfg/usubst.pp svneol=native#text/plain
+utils/fpcmkcfg/fppkg.cfg svneol=native#text/plain
+utils/fpcmkcfg/fppkg.inc svneol=native#text/plain
 utils/fpcres/Makefile svneol=native#text/plain
 utils/fpcres/Makefile svneol=native#text/plain
 utils/fpcres/Makefile.fpc svneol=native#text/plain
 utils/fpcres/Makefile.fpc svneol=native#text/plain
 utils/fpcres/closablefilestream.pas svneol=native#text/plain
 utils/fpcres/closablefilestream.pas svneol=native#text/plain

+ 221 - 552
utils/fpcmkcfg/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/04/26]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/04/27]
 #
 #
 default: all
 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 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
 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 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
@@ -447,556 +447,7 @@ endif
 ifeq ($(FULL_TARGET),mipsel-linux)
 ifeq ($(FULL_TARGET),mipsel-linux)
 override TARGET_PROGRAMS+=fpcmkcfg
 override TARGET_PROGRAMS+=fpcmkcfg
 endif
 endif
-ifeq ($(FULL_TARGET),i386-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override CLEAN_UNITS+=usubst
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override CLEAN_UNITS+=usubst
-endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_UNITDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_SOURCEDIR+=..
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_SOURCEDIR+=..
-endif
 override SHARED_BUILD=n
 override SHARED_BUILD=n
 override SHARED_BUILD=n
 override SHARED_BUILD=n
 ifdef REQUIRE_UNITSDIR
 ifdef REQUIRE_UNITSDIR
@@ -1769,189 +1220,316 @@ else
 TAROPT=vz
 TAROPT=vz
 TAREXT=.tar.gz
 TAREXT=.tar.gz
 endif
 endif
-override REQUIRE_PACKAGES=rtl 
+override REQUIRE_PACKAGES=rtl fcl-base fcl-process
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
 ifeq ($(FULL_TARGET),i386-haiku)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
 ifeq ($(FULL_TARGET),i386-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
 ifeq ($(FULL_TARGET),i386-symbian)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
 ifeq ($(FULL_TARGET),i386-nativent)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
 ifeq ($(FULL_TARGET),m68k-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
 ifeq ($(FULL_TARGET),powerpc-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
 ifeq ($(FULL_TARGET),x86_64-solaris)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 ifeq ($(FULL_TARGET),x86_64-darwin)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 ifeq ($(FULL_TARGET),x86_64-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
 ifeq ($(FULL_TARGET),arm-darwin)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-nds)
 ifeq ($(FULL_TARGET),arm-nds)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(FULL_TARGET),arm-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
 ifeq ($(FULL_TARGET),arm-symbian)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_UNIVINT=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
 ifeq ($(FULL_TARGET),avr-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
 ifeq ($(FULL_TARGET),armeb-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 ifeq ($(FULL_TARGET),armeb-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
 ifeq ($(FULL_TARGET),mipsel-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
 endif
 endif
 ifdef REQUIRE_PACKAGES_RTL
 ifdef REQUIRE_PACKAGES_RTL
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
@@ -1979,6 +1557,84 @@ ifdef UNITDIR_RTL
 override COMPILER_UNITDIR+=$(UNITDIR_RTL)
 override COMPILER_UNITDIR+=$(UNITDIR_RTL)
 endif
 endif
 endif
 endif
+ifdef REQUIRE_PACKAGES_FCL-BASE
+PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-BASE),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-BASE)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FCL-BASE) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-BASE)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-BASE=
+UNITDIR_FCL-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-BASE),)
+UNITDIR_FCL-BASE:=$(firstword $(UNITDIR_FCL-BASE))
+else
+UNITDIR_FCL-BASE=
+endif
+endif
+ifdef UNITDIR_FCL-BASE
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-BASE)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PROCESS
+PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PROCESS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PROCESS=
+UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PROCESS),)
+UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
+else
+UNITDIR_FCL-PROCESS=
+endif
+endif
+ifdef UNITDIR_FCL-PROCESS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_UNIVINT
+PACKAGEDIR_UNIVINT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /univint/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_UNIVINT),)
+ifneq ($(wildcard $(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)),)
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_UNIVINT=$(PACKAGEDIR_UNIVINT)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_UNIVINT)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_UNIVINT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_UNIVINT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_UNIVINT=
+UNITDIR_UNIVINT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /univint/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_UNIVINT),)
+UNITDIR_UNIVINT:=$(firstword $(UNITDIR_UNIVINT))
+else
+UNITDIR_UNIVINT=
+endif
+endif
+ifdef UNITDIR_UNIVINT
+override COMPILER_UNITDIR+=$(UNITDIR_UNIVINT)
+endif
+endif
 ifndef NOCPUDEF
 ifndef NOCPUDEF
 override FPCOPTDEF=$(ARCH)
 override FPCOPTDEF=$(ARCH)
 endif
 endif
@@ -2485,6 +2141,15 @@ DATA2INC:=$(firstword $(DATA2INC))
 endif
 endif
 endif
 endif
 export DATA2INC
 export DATA2INC
+ifndef DATA2INC
+DATA2INC:=$(strip $(wildcard $(addsuffix /data2inc$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATA2INC),)
+DATA2INC= __missing_command_DATA2INC
+else
+DATA2INC:=$(firstword $(DATA2INC))
+endif
+endif
+export DATA2INC
 all: fpc_all
 all: fpc_all
 debug: fpc_debug
 debug: fpc_debug
 smart: fpc_smart
 smart: fpc_smart
@@ -2510,7 +2175,7 @@ ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 include fpcmake.loc
 endif
 endif
 .NOTPARALLEL:
 .NOTPARALLEL:
-fpcmkcfg$(EXEEXT): fpcmkcfg.pp usubst.pp fpccfg.inc fpcfg.inc fpini.inc
+fpcmkcfg$(EXEEXT): fpcmkcfg.pp fpccfg.inc fpcfg.inc fpini.inc
 ifneq ($(DATA2INC),)
 ifneq ($(DATA2INC),)
 fpccfg.inc: fpc.cft
 fpccfg.inc: fpc.cft
 	$(DATA2INC) -b -s fpc.cft fpccfg.inc DefaultConfig
 	$(DATA2INC) -b -s fpc.cft fpccfg.inc DefaultConfig
@@ -2518,4 +2183,8 @@ fpcfg.inc : fpinc.cfg
 	$(DATA2INC) -b -s fpinc.cfg fpcfg.inc fpcfg
 	$(DATA2INC) -b -s fpinc.cfg fpcfg.inc fpcfg
 fpini.inc : fpinc.ini
 fpini.inc : fpinc.ini
 	$(DATA2INC) -b -s fpinc.ini fpini.inc fpini
 	$(DATA2INC) -b -s fpinc.ini fpini.inc fpini
+fppkg.inc : fppkg.cfg
+	$(DATA2INC) -b -s fppkg.cfg fppkg.inc fppkg
+default.inc : default.cft
+	$(DATA2INC) -b -s default.cft default.inc fppkg_default
 endif
 endif

+ 10 - 8
utils/fpcmkcfg/Makefile.fpc

@@ -6,18 +6,13 @@
 programs=fpcmkcfg
 programs=fpcmkcfg
 rst=fpcmkcfg
 rst=fpcmkcfg
 
 
-[clean]
-units=usubst
-
-[compiler]
-unitdir=..
-sourcedir=..
-
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [require]
 [require]
 tools=data2inc
 tools=data2inc
+packages=fcl-base fcl-process
+tools=data2inc
 
 
 [default]
 [default]
 fpcdir=../..
 fpcdir=../..
@@ -34,7 +29,7 @@ build=n
 # due to overwriting each other's link.res file
 # due to overwriting each other's link.res file
 .NOTPARALLEL:
 .NOTPARALLEL:
 
 
-fpcmkcfg$(EXEEXT): fpcmkcfg.pp usubst.pp fpccfg.inc fpcfg.inc fpini.inc
+fpcmkcfg$(EXEEXT): fpcmkcfg.pp fpccfg.inc fpcfg.inc fpini.inc
 
 
 ifneq ($(DATA2INC),)
 ifneq ($(DATA2INC),)
 fpccfg.inc: fpc.cft
 fpccfg.inc: fpc.cft
@@ -45,5 +40,12 @@ fpcfg.inc : fpinc.cfg
 
 
 fpini.inc : fpinc.ini
 fpini.inc : fpinc.ini
         $(DATA2INC) -b -s fpinc.ini fpini.inc fpini
         $(DATA2INC) -b -s fpinc.ini fpini.inc fpini
+
+fppkg.inc : fppkg.cfg
+        $(DATA2INC) -b -s fppkg.cfg fppkg.inc fppkg
+
+default.inc : default.cft
+        $(DATA2INC) -b -s default.cft default.inc fppkg_default
+
 endif
 endif
 
 

+ 8 - 0
utils/fpcmkcfg/default.cft

@@ -0,0 +1,8 @@
+[Defaults]
+ConfigVersion=4
+GlobalInstallDir=%basepath%
+LocalInstallDir={LocalRepository}lib/%fpcversion%/
+Compiler=%fpcbin%
+OS=%fpctargetos%
+CPU=%fpctarget%
+Version=%fpcversion%

+ 14 - 0
utils/fpcmkcfg/default.inc

@@ -0,0 +1,14 @@
+{$ifdef Delphi}
+const fppkg_default : array[0..0] of string[240]=(
+{$else Delphi}
+const fppkg_default : array[0..0,1..240] of char=(
+{$endif Delphi}
+  '[Defaults]'#010+
+  'ConfigVersion=4'#010+
+  'GlobalInstallDir=%basepath%'#010+
+  'LocalInstallDir={LocalRepository}lib/%fpcversion%/'#010+
+  'Compiler=%fpcbin%'#010+
+  'OS=%fpctargetos%'#010+
+  'CPU=%fpctarget%'#010+
+  'Version=%fpcversion%'#010
+);

+ 7 - 3
utils/fpcmkcfg/fpc.cft

@@ -122,9 +122,6 @@
 #-Fr%basepath%/msg/errord.msg
 #-Fr%basepath%/msg/errord.msg
 #-Fr%basepath%/msg/errorr.msg
 #-Fr%basepath%/msg/errorr.msg
 
 
-# path to the gcclib
-#-Fl%basepath%/lib
-
 #IFDEF FPCAPACHE_1_13
 #IFDEF FPCAPACHE_1_13
 -Fu%basepath%/units/$FPCTARGET/httpd13/
 -Fu%basepath%/units/$FPCTARGET/httpd13/
 #ELSE
 #ELSE
@@ -140,6 +137,9 @@
 -Fu%basepath%/units/$FPCTARGET/*
 -Fu%basepath%/units/$FPCTARGET/*
 -Fu%basepath%/units/$FPCTARGET/rtl
 -Fu%basepath%/units/$FPCTARGET/rtl
 
 
+# path to the gcclib
+%gcclibpath%
+
 # searchpath for libraries
 # searchpath for libraries
 #-Fl%basepath%/lib
 #-Fl%basepath%/lib
 #-Fl/lib;/usr/lib
 #-Fl/lib;/usr/lib
@@ -147,10 +147,14 @@
 # searchpath for tools
 # searchpath for tools
 -FD%basepath%/bin/$FPCTARGET
 -FD%basepath%/bin/$FPCTARGET
 
 
+%NEEDCROSSBINUTILSIFDEF%
+
 # binutils prefix for cross compiling
 # binutils prefix for cross compiling
 #IFDEF FPC_CROSSCOMPILING
 #IFDEF FPC_CROSSCOMPILING
+#IFDEF NEEDCROSSBINUTILS
   -XP$FPCTARGET-
   -XP$FPCTARGET-
 #ENDIF
 #ENDIF
+#ENDIF
 
 
 
 
 # -------------
 # -------------

+ 22 - 18
utils/fpcmkcfg/fpccfg.inc

@@ -1,7 +1,7 @@
 {$ifdef Delphi}
 {$ifdef Delphi}
-const DefaultConfig : array[0..22] of string[240]=(
+const DefaultConfig : array[0..23] of string[240]=(
 {$else Delphi}
 {$else Delphi}
-const DefaultConfig : array[0..22,1..240] of char=(
+const DefaultConfig : array[0..23,1..240] of char=(
 {$endif Delphi}
 {$endif Delphi}
   '#'#010+
   '#'#010+
   '# Config file generated by fpcmkcfg on %BUILDDATE% - %BUILDTIME%'#010+
   '# Config file generated by fpcmkcfg on %BUILDDATE% - %BUILDTIME%'#010+
@@ -135,16 +135,13 @@ const DefaultConfig : array[0..22,1..240] of char=(
   '#-Fr%basepath%/msg/errord.msg'#010+
   '#-Fr%basepath%/msg/errord.msg'#010+
   '#-Fr%basepath%/msg/errorr.msg'#010+
   '#-Fr%basepath%/msg/errorr.msg'#010+
   #010+
   #010+
-  '# path to the gcclib'#010+
-  '#-Fl%basepath%/lib'#010+
-  #010+
   '#IFDEF FPCAPACHE_1_13'#010+
   '#IFDEF FPCAPACHE_1_13'#010+
   '-Fu%basepath%/units/$FPCTARGET/httpd13/'#010+
   '-Fu%basepath%/units/$FPCTARGET/httpd13/'#010+
   '#ELSE'#010+
   '#ELSE'#010+
   '#IFDEF FPCAPACHE_2_0'#010+
   '#IFDEF FPCAPACHE_2_0'#010+
-  '-Fu%basepath%/units/$FPCTA','RGET/httpd20'#010+
+  '-Fu%basepath%/units/$FPCTARGET/httpd20'#010+
   '#ELSE'#010+
   '#ELSE'#010+
-  '-Fu%basepath%/units/$FPCTARGET/httpd22'#010+
+  '-Fu%basepath%/units/$F','PCTARGET/httpd22'#010+
   '#ENDIF'#010+
   '#ENDIF'#010+
   '#ENDIF'#010+
   '#ENDIF'#010+
   #010+
   #010+
@@ -153,22 +150,29 @@ const DefaultConfig : array[0..22,1..240] of char=(
   '-Fu%basepath%/units/$FPCTARGET/*'#010+
   '-Fu%basepath%/units/$FPCTARGET/*'#010+
   '-Fu%basepath%/units/$FPCTARGET/rtl'#010+
   '-Fu%basepath%/units/$FPCTARGET/rtl'#010+
   #010+
   #010+
-  '# searchp','ath for libraries'#010+
+  '# path to the gcclib'#010+
+  '%gcclibpath%'#010+
+  #010+
+  '# searchpath fo','r libraries'#010+
   '#-Fl%basepath%/lib'#010+
   '#-Fl%basepath%/lib'#010+
   '#-Fl/lib;/usr/lib'#010+
   '#-Fl/lib;/usr/lib'#010+
   #010+
   #010+
   '# searchpath for tools'#010+
   '# searchpath for tools'#010+
   '-FD%basepath%/bin/$FPCTARGET'#010+
   '-FD%basepath%/bin/$FPCTARGET'#010+
   #010+
   #010+
+  '%NEEDCROSSBINUTILSIFDEF%'#010+
+  #010+
   '# binutils prefix for cross compiling'#010+
   '# binutils prefix for cross compiling'#010+
   '#IFDEF FPC_CROSSCOMPILING'#010+
   '#IFDEF FPC_CROSSCOMPILING'#010+
+  '#IFDEF NEEDCROSSBINUTILS'#010+
   '  -XP$FPCTARGET-'#010+
   '  -XP$FPCTARGET-'#010+
+  '#ENDI','F'#010+
   '#ENDIF'#010+
   '#ENDIF'#010+
   #010+
   #010+
   #010+
   #010+
   '# -------------'#010+
   '# -------------'#010+
   '# Linking'#010+
   '# Linking'#010+
-  '# -------------',#010+
+  '# -------------'#010+
   #010+
   #010+
   '# generate always debugging information for GDB (slows down the compil'+
   '# generate always debugging information for GDB (slows down the compil'+
   'ing'#010+
   'ing'#010+
@@ -176,12 +180,12 @@ const DefaultConfig : array[0..22,1..240] of char=(
   '#      -gc        generate checks for pointers'#010+
   '#      -gc        generate checks for pointers'#010+
   '#      -gd        use dbx'#010+
   '#      -gd        use dbx'#010+
   '#      -gg        use gsym'#010+
   '#      -gg        use gsym'#010+
-  '#      -gh        use heap trace unit (for memory lea','k debugging)'#010+
+  '#','      -gh        use heap trace unit (for memory leak debugging)'#010+
   '#      -gl        use line info unit to show more info for backtraces'#010+
   '#      -gl        use line info unit to show more info for backtraces'#010+
   '#      -gv        generates programs tracable with valgrind'#010+
   '#      -gv        generates programs tracable with valgrind'#010+
-  '#      -gw        generate dwarf debugging info'#010+
+  '#      -gw        generate dwarf debugging in','fo'#010+
   '#'#010+
   '#'#010+
-  '# Enable debuginfo and use the line info unit b','y default'#010+
+  '# Enable debuginfo and use the line info unit by default'#010+
   '#-gl'#010+
   '#-gl'#010+
   #010+
   #010+
   '# always pass an option to the linker'#010+
   '# always pass an option to the linker'#010+
@@ -195,19 +199,19 @@ const DefaultConfig : array[0..22,1..240] of char=(
   '# Miscellaneous'#010+
   '# Miscellaneous'#010+
   '# -------------'#010+
   '# -------------'#010+
   #010+
   #010+
-  '# Write always a nice FPC logo ;)'#010+
+  '# Write always a nice FPC l','ogo ;)'#010+
   '-l'#010+
   '-l'#010+
   #010+
   #010+
   '# Verbosity'#010+
   '# Verbosity'#010+
-  '#      e : Show errors (defau','lt)       d : Show debug info'#010+
+  '#      e : Show errors (default)       d : Show debug info'#010+
   '#      w : Show warnings               u : Show unit info'#010+
   '#      w : Show warnings               u : Show unit info'#010+
   '#      n : Show notes                  t : Show tried/used files'#010+
   '#      n : Show notes                  t : Show tried/used files'#010+
-  '#      h : Show hints                  m : Show defined macros'#010+
-  '#      i : Show general ','info           p : Show compiled procedures'#010+
+  '#      h : Show hints              ','    m : Show defined macros'#010+
+  '#      i : Show general info           p : Show compiled procedures'#010+
   '#      l : Show linenumbers            c : Show conditionals'#010+
   '#      l : Show linenumbers            c : Show conditionals'#010+
   '#      a : Show everything             0 : Show nothing (except errors'+
   '#      a : Show everything             0 : Show nothing (except errors'+
   ')'#010+
   ')'#010+
-  '#      b : Show all procedure          r : Rhide/GCC compatibil','ity m'+
+  '#      b : ','Show all procedure          r : Rhide/GCC compatibility m'+
   'ode'#010+
   'ode'#010+
   '#          declarations if an error    x : Executable info (Win32 only'+
   '#          declarations if an error    x : Executable info (Win32 only'+
   ')'#010+
   ')'#010+
@@ -215,6 +219,6 @@ const DefaultConfig : array[0..22,1..240] of char=(
   '#'#010+
   '#'#010+
   '# Display Info, Warnings, Notes and Hints'#010+
   '# Display Info, Warnings, Notes and Hints'#010+
   '-viwn'#010+
   '-viwn'#010+
-  '# If you don'#039't want so much verbosity use'#010+
+  '# If you don'#039't want so much verbosity u','se'#010+
   '#-vw'#010
   '#-vw'#010
 );
 );

+ 231 - 23
utils/fpcmkcfg/fpcmkcfg.pp

@@ -16,7 +16,7 @@
  **********************************************************************}
  **********************************************************************}
 program fpcmkcfg;
 program fpcmkcfg;
 
 
-uses usubst,SysUtils,Classes;
+uses SysUtils,Classes,fpTemplate, process;
 
 
 {
 {
   The inc files must be built from a template with the data2inc
   The inc files must be built from a template with the data2inc
@@ -24,16 +24,25 @@ uses usubst,SysUtils,Classes;
   data2inc -b -s fpc.cft fpccfg.inc DefaultConfig
   data2inc -b -s fpc.cft fpccfg.inc DefaultConfig
   data2inc -b -s fpinc.ini fpini.inc fpini
   data2inc -b -s fpinc.ini fpini.inc fpini
   data2inc -b -s fpinc.cfg fpcfg.inc fpcfg
   data2inc -b -s fpinc.cfg fpcfg.inc fpcfg
+  data2inc -b -s fppkg.cfg fppkg.inc fppkg
+  data2inc -b -s default.cft default.inc fppkg_default
 }
 }
 
 
 {$i fpccfg.inc}
 {$i fpccfg.inc}
 {$i fpini.inc}
 {$i fpini.inc}
 {$i fpcfg.inc}
 {$i fpcfg.inc}
+{$i fppkg.inc}
+{$i default.inc}
 
 
 Const
 Const
   BuildVersion={$I %FPCVERSION%};
   BuildVersion={$I %FPCVERSION%};
   BuildTarget={$I %FPCTARGET%};
   BuildTarget={$I %FPCTARGET%};
   BuildOSTarget={$I %FPCTARGETOS%};
   BuildOSTarget={$I %FPCTARGETOS%};
+{$ifdef unix}
+  ExeExt = '';
+{$else unix}
+  ExeExt = '.exe';
+{$endif unix}
 
 
 
 
 Resourcestring
 Resourcestring
@@ -44,44 +53,207 @@ Resourcestring
   SUsage40  = '  -d name=value define name=value pair.';
   SUsage40  = '  -d name=value define name=value pair.';
   SUsage50  = '  -h            show this help and exit.';
   SUsage50  = '  -h            show this help and exit.';
   SUsage60  = '  -u name       remove name from list of name/value pairs.';
   SUsage60  = '  -u name       remove name from list of name/value pairs.';
-  SUsage70  = '  -l filename   read name/value pairs from filename';
+//  SUsage70  = '  -l filename   read name/value pairs from filename';
+  SUsage70  = '  -m            show builtin macros and exit.';
   SUsage80  = '  -b            show builtin template and exit.';
   SUsage80  = '  -b            show builtin template and exit.';
   SUsage90  = '  -v            be verbose.';
   SUsage90  = '  -v            be verbose.';
   Susage100 = '  -0            use built in fpc.cfg template (default)';
   Susage100 = '  -0            use built in fpc.cfg template (default)';
   Susage110 = '  -1            use built in fp.cfg template';
   Susage110 = '  -1            use built in fp.cfg template';
   Susage120 = '  -2            use built in fp.ini template';
   Susage120 = '  -2            use built in fp.ini template';
+  Susage130 = '  -3            use built in fppkg.cfg template';
+  Susage140 = '  -4            use built in fppkg default compiler template';
   SErrUnknownOption   = 'Error: Unknown option.';
   SErrUnknownOption   = 'Error: Unknown option.';
   SErrArgExpected     = 'Error: Option "%s" requires an argument.';
   SErrArgExpected     = 'Error: Option "%s" requires an argument.';
+  SErrIncompletePair  = 'Error: Incomplete name-value pair "%s".';
   SErrNoSuchFile      = 'Error: File "%s" does not exist.';
   SErrNoSuchFile      = 'Error: File "%s" does not exist.';
   SErrBackupFailed    = 'Error: Backup of file "%s" to "%s" failed.';
   SErrBackupFailed    = 'Error: Backup of file "%s" to "%s" failed.';
   SErrDelBackupFailed = 'Error: Delete of old backup file "%s" failed.';
   SErrDelBackupFailed = 'Error: Delete of old backup file "%s" failed.';
   SWarnIgnoringFile   = 'Warning: Ignoring non-existent file: ';
   SWarnIgnoringFile   = 'Warning: Ignoring non-existent file: ';
-  SWarnIgnoringPair   = 'Warning: ignoring wrong name/value pair: ';
-  SStats              = 'Replaced %d placeholders in %d lines.';
-  SSubstInLine        = 'Replaced %s placeholders in line %d.';
+  SWarnIgnoringPair   = 'Warning: Ignoring wrong name/value pair: ';
+  SWarngccNotFound    = 'Warning: Could not find gcc. Unable to determine the gcclib path.';
 
 
 
 
 Var
 Var
   Verbose : Boolean;
   Verbose : Boolean;
   SkipBackup : Boolean;
   SkipBackup : Boolean;
-  List,Cfg : TStringList;
+  Cfg : TStringList;
+  TemplateParser: TTemplateParser;
   TemplateFileName,
   TemplateFileName,
   OutputFileName : String;
   OutputFileName : String;
   IDEBuildin : Integer;
   IDEBuildin : Integer;
 
 
+function GetDefaultLocalRepository: string;
+
+begin
+{$IFDEF Unix}
+  result := '{UserDir}.fppkg'+PathDelim;
+{$ELSE Unix}
+  result := '{AppConfigDir}';
+{$ENDIF Unix}
+end;
+
+function GetDefaultNeedCrossBinutilsIfdef: string;
+
+begin
+  result := '';
+  // On Darwin there is never a need for a crossbinutils prefix
+  if SameText(BuildOSTarget,'Darwin') then
+    result := '#IFNDEF ' + BuildOSTarget + LineEnding +
+              '#DEFINE NEEDCROSSBINUTILS' + LineEnding +
+              '#ENDIF'
+  else if (BuildTarget = 'i386') or (BuildTarget = 'x86_64') then
+    begin
+    // Cross-binutils are not needed to compile for i386 on an x86_64 system
+    result := '#IFNDEF CPUI386' + LineEnding +
+              '#IFNDEF CPUAMD64' + LineEnding +
+              '#DEFINE NEEDCROSSBINUTILS' + LineEnding +
+              '#ENDIF' + LineEnding +
+              '#ENDIF' + LineEnding +
+              LineEnding +
+              '#IFNDEF ' + BuildOSTarget + LineEnding +
+              '#DEFINE NEEDCROSSBINUTILS' + LineEnding +
+              '#ENDIF';
+    end
+  else
+    result := '#DEFINE NEEDCROSSBINUTILS';
+end;
+
+function GetDefaultGCCDir: string;
+
+var GccExecutable: string;
+
+  function GetGccExecutable: string;
+  begin
+    if GccExecutable='' then
+      begin
+      GccExecutable := ExeSearch('gcc'+ExeExt,GetEnvironmentVariable('PATH'));
+      if GccExecutable='' then
+        begin
+        Writeln(StdErr,SWarngccNotFound);
+        GccExecutable:='-';
+        end;
+      end;
+    if GccExecutable = '-' then
+      result := ''
+    else
+      result := GccExecutable;
+  end;
+
+  function ExecuteProc(const CommandLine: string; ReadStdErr: boolean) : string;
+
+  const BufSize=2048;
+
+  var S: TProcess;
+      buf: array[0..BufSize-1] of byte;
+      count: integer;
+
+  begin
+    S:=TProcess.Create(Nil);
+    try
+      S.Commandline:=CommandLine;
+      S.Options:=[poUsePipes,poWaitOnExit];
+      S.execute;
+      Count:=s.output.read(buf,BufSize);
+      if (count=0) and ReadStdErr then
+        Count:=s.Stderr.read(buf,BufSize);
+      setlength(result,count);
+      move(buf[0],result[1],count);
+    finally
+      S.Free;
+    end;
+  end;
+
+  function Get4thWord(const AString: string): string;
+  var p: pchar;
+      spacecount: integer;
+      StartWord: pchar;
+  begin
+    if length(AString)>6 then
+      begin
+      p := @AString[1];
+      spacecount:=0;
+      StartWord:=nil;
+      while (not (p^ in [#0,#10,#13])) and ((p^<>' ') or (StartWord=nil)) do
+        begin
+        if p^=' ' then
+          begin
+          inc(spacecount);
+          if spacecount=3 then StartWord:=p+1;
+          end;
+        inc(p);
+        end;
+      if StartWord<>nil then
+        begin
+        SetLength(result,p-StartWord);
+        move(StartWord^,result[1],p-StartWord);
+        end
+      else
+        result := '';
+      end;
+  end;
+
+  function GetGccDirArch(const ACpuType, GCCParams: string) : string;
+  var ExecResult: string;
+      libgccFilename: string;
+      gccDir: string;
+  begin
+    ExecResult:=ExecuteProc(GetGccExecutable+' -v '+GCCParams, True);
+    libgccFilename:=Get4thWord(ExecResult);
+    if libgccFilename='' then
+      libgccFilename:=ExecuteProc(GetGccExecutable+' --print-libgcc-file-name '+GCCParams, False);
+    gccDir := ExtractFileDir(libgccFilename);
+    if gccDir='' then
+      result := ''
+    else if ACpuType = '' then
+      result := '-Fl'+gccDir
+    else
+      result := '#ifdef ' + ACpuType + LineEnding + '-Fl' + gccDir + LineEnding + '#endif';
+  end;
+
+begin
+  result := '';
+  GccExecutable:='';
+  if sametext(BuildOSTarget,'Freebsd') or sametext(BuildOSTarget,'Openbsd') then
+    result := '-Fl/usr/local/lib'
+  else if sametext(BuildOSTarget,'Netbsd') then
+    result := '-Fl/usr/pkg/lib'
+  else if sametext(BuildOSTarget,'Linux') then
+    begin
+    if (BuildTarget = 'i386') or (BuildTarget = 'x86_64') then
+      result := GetGccDirArch('cpui386','-m32') + LineEnding +
+                GetGccDirArch('cpux86_64','-m64')
+    else if (BuildTarget = 'powerpc') or (BuildTarget = 'powerpc64') then
+      result := GetGccDirArch('cpupowerpc','-m32') + LineEnding +
+                GetGccDirArch('cpupowerpc64','-m64')
+    end
+  else if sametext(BuildOSTarget,'Darwin') then
+    result := GetGccDirArch('cpupowerpc','-arch ppc') + LineEnding +
+              GetGccDirArch('cpupowerpc64','-arch ppc64') + LineEnding +
+              GetGccDirArch('cpui386','-arch i386') + LineEnding +
+              GetGccDirArch('cpux86_64','-arch x86_64');
+end;
+
 
 
 procedure Init;
 procedure Init;
 
 
 begin
 begin
   Verbose:=False;
   Verbose:=False;
   IDEBuildIn:=0;
   IDEBuildIn:=0;
-  List:=TStringList.Create;
-  AddToList(List,'FPCVERSION',BuildVersion);
-  AddToList(List,'FPCTARGET',BuildTarget);
-  AddToList(List,'FPCTARGETOS',BuildOSTarget);
-  AddToList(List,'PWD',GetCurrentDir);
-  AddToList(List,'BUILDDATE',DateToStr(Date));
-  AddToList(List,'BUILDTIME',TimeToStr(Time));
+
+  TemplateParser := TTemplateParser.Create;
+  TemplateParser.StartDelimiter:='%';
+  TemplateParser.EndDelimiter:='%';
+  TemplateParser.Values['FPCVERSION'] := BuildVersion;
+  TemplateParser.Values['FPCTARGET'] := BuildTarget;
+  TemplateParser.Values['FPCTARGETOS'] := BuildOSTarget;
+  TemplateParser.Values['PWD'] := GetCurrentDir;
+  TemplateParser.Values['BUILDDATE'] := DateToStr(Date);
+  TemplateParser.Values['BUILDTIME'] := TimeToStr(Time);
+
+  TemplateParser.Values['LOCALREPOSITORY'] := GetDefaultLocalRepository;
+  TemplateParser.Values['NEEDCROSSBINUTILSIFDEF'] := GetDefaultNeedCrossBinutilsIfdef;
+  TemplateParser.Values['GCCLIBPATH'] := GetDefaultGCCDIR;
+
   Cfg:=TStringList.Create;
   Cfg:=TStringList.Create;
   Cfg.Text:=StrPas(Addr(DefaultConfig[0][1]));
   Cfg.Text:=StrPas(Addr(DefaultConfig[0][1]));
 end;
 end;
@@ -89,8 +261,8 @@ end;
 Procedure Done;
 Procedure Done;
 
 
 begin
 begin
-  FreeAndNil(List);
   FreeAndNil(Cfg);
   FreeAndNil(Cfg);
+  FreeAndNil(TemplateParser);
 end;
 end;
 
 
 Procedure Usage;
 Procedure Usage;
@@ -109,6 +281,8 @@ begin
   Writeln(SUsage100);
   Writeln(SUsage100);
   Writeln(SUsage110);
   Writeln(SUsage110);
   Writeln(SUsage120);
   Writeln(SUsage120);
+  Writeln(SUsage130);
+  Writeln(SUsage140);
   Halt(1);
   Halt(1);
 end;
 end;
 
 
@@ -131,6 +305,17 @@ begin
 end;
 end;
 
 
 
 
+Procedure ShowBuiltInMacros;
+
+Var
+  I : Integer;
+
+begin
+  For I:=0 to TemplateParser.ValueCount-1 do
+    Writeln(TemplateParser.NamesByIndex[I]+'='+TemplateParser.ValuesByIndex[I]);
+end;
+
+
 Procedure ProcessCommandline;
 Procedure ProcessCommandline;
 
 
 Var
 Var
@@ -149,6 +334,22 @@ Var
     Result:=ParamStr(I);
     Result:=ParamStr(I);
   end;
   end;
 
 
+  procedure AddPair(const Value: String);
+  var P: integer;
+      N,V: String;
+  begin
+    P:=Pos('=',Value);
+    If p=0 then
+      begin
+      Writeln(StdErr,Format(SErrIncompletePair,[Value]));
+      Halt(1);
+      end;
+    V:=Value;
+    N:=Copy(V,1,P-1);
+    Delete(V,1,P);
+    TemplateParser.Values[N] := V;
+  end;
+
 begin
 begin
   I:=1;
   I:=1;
   While( I<=ParamCount) do
   While( I<=ParamCount) do
@@ -164,14 +365,20 @@ begin
               ShowBuiltin;
               ShowBuiltin;
               halt(0);
               halt(0);
               end;
               end;
+        'm' : begin
+              ShowBuiltinMacros;
+              halt(0);
+              end;
         't' : TemplateFileName:=GetOptArg;
         't' : TemplateFileName:=GetOptArg;
-        'd' : AddPair(List,GetOptArg);
-        'u' : AddPair(List,GetOptArg+'=');
+        'd' : AddPair(GetOptArg);
+        'u' : TemplateParser.Values[GetOptArg]:='';
         'o' : OutputFileName:=GetoptArg;
         'o' : OutputFileName:=GetoptArg;
         's' : SkipBackup:=True;
         's' : SkipBackup:=True;
         '0' : IDEBuildin:=0;
         '0' : IDEBuildin:=0;
         '1' : IDEBuildin:=1;
         '1' : IDEBuildin:=1;
         '2' : IDEBuildin:=2;
         '2' : IDEBuildin:=2;
+        '3' : IDEBuildin:=3;
+        '4' : IDEBuildin:=4;
       else
       else
         UnknownOption(S);
         UnknownOption(S);
       end;
       end;
@@ -185,7 +392,7 @@ begin
       Halt(1);
       Halt(1);
       end;
       end;
     Cfg.LoadFromFile(TemplateFileName);
     Cfg.LoadFromFile(TemplateFileName);
-    AddToList(List,'TEMPLATEFILE',TemplateFileName);
+    TemplateParser.Values['TEMPLATEFILE'] := TemplateFileName;
     end
     end
   else
   else
     begin
     begin
@@ -194,9 +401,13 @@ begin
            Cfg.Text:=StrPas(Addr(fpcfg[0][1]));
            Cfg.Text:=StrPas(Addr(fpcfg[0][1]));
         2:
         2:
            Cfg.Text:=StrPas(Addr(fpini[0][1]));
            Cfg.Text:=StrPas(Addr(fpini[0][1]));
+        3:
+           Cfg.Text:=StrPas(Addr(fppkg[0][1]));
+        4:
+           Cfg.Text:=StrPas(Addr(fppkg_default[0][1]));
       end;
       end;
 
 
-      AddToList(List,'TEMPLATEFILE','builtin');
+    TemplateParser.Values['TEMPLATEFILE'] := 'builtin';
     end;
     end;
 end;
 end;
 
 
@@ -206,7 +417,7 @@ Procedure CreateFile;
 Var
 Var
   Fout : Text;
   Fout : Text;
   S,BFN : String;
   S,BFN : String;
-  I,RCount : INteger;
+  I : Integer;
 
 
 begin
 begin
   If (OutputFileName<>'')
   If (OutputFileName<>'')
@@ -228,15 +439,12 @@ begin
   Assign(Fout,OutputFileName);
   Assign(Fout,OutputFileName);
   Rewrite(FOut);
   Rewrite(FOut);
   Try
   Try
-    RCount:=0;
     For I:=0 to Cfg.Count-1 do
     For I:=0 to Cfg.Count-1 do
       begin
       begin
       S:=Cfg[i];
       S:=Cfg[i];
-      Inc(RCount,DoSubstitutions(List,S));
+      S := TemplateParser.ParseString(S);
       Writeln(FOut,S);
       Writeln(FOut,S);
       end;
       end;
-    If Verbose then
-      Writeln(StdErr,Format(SStats,[RCount,Cfg.Count]));
   Finally
   Finally
     Close(Fout);
     Close(Fout);
   end;
   end;

+ 11 - 0
utils/fpcmkcfg/fppkg.cfg

@@ -0,0 +1,11 @@
+[Defaults]
+ConfigVersion=4
+LocalRepository=%LocalRepository%
+BuildDir={LocalRepository}build/
+ArchivesDir={LocalRepository}archives/
+CompilerConfigDir={LocalRepository}config/
+RemoteMirrors=http://www.freepascal.org/repository/mirrors.xml
+RemoteRepository=auto
+CompilerConfig=default
+FPMakeCompilerConfig=default
+Downloader=lnet

+ 17 - 0
utils/fpcmkcfg/fppkg.inc

@@ -0,0 +1,17 @@
+{$ifdef Delphi}
+const fppkg : array[0..1] of string[240]=(
+{$else Delphi}
+const fppkg : array[0..1,1..240] of char=(
+{$endif Delphi}
+  '[Defaults]'#010+
+  'ConfigVersion=4'#010+
+  'LocalRepository=%LocalRepository%'#010+
+  'BuildDir={LocalRepository}build/'#010+
+  'ArchivesDir={LocalRepository}archives/'#010+
+  'CompilerConfigDir={LocalRepository}config/'#010+
+  'RemoteMirrors=http://www.freepascal.org/repository/mirrors.xml'#010+
+  'R','emoteRepository=auto'#010+
+  'CompilerConfig=default'#010+
+  'FPMakeCompilerConfig=default'#010+
+  'Downloader=lnet'#010
+);

+ 0 - 109
utils/fpcmkcfg/usubst.pp

@@ -1,109 +0,0 @@
-{$mode objfpc}
-{$H+}
-{
-    This file is part of Free Pascal build tools
-    Copyright (c) 2005 by Michael Van Canneyt
-
-    Implements string substitutions
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-unit usubst;
-
-interface
-
-uses SysUtils,Classes;
-
-// Add N=V pair to list.
-Procedure AddToList(List : TStrings; Const N,V : String);
-// Split NV to N/V and call AddToList
-Function  AddPair(List : TStrings; Const NV : String) : Boolean;
-// Perform substitutions in S, from List.
-Function  DoSubStitutions(List : TStrings; Var S : String) : Integer;
-
-implementation
-
-Procedure AddToList(List : TStrings; Const N,V : String);
-
-var
-  I : Integer;
-
-begin
-  I:=List.IndexOfName(N);
-  If (V='') then
-    begin
-    If (I<>-1) then
-      List.Delete(I)
-    end
-  else
-    begin
-    If (I=-1) then
-      List.Add(N+'='+V)
-    else
-      List[I]:=N+'='+V;
-    end;
-end;
-
-Function AddPair(List : TStrings; Const NV : String) : Boolean;
-
-Var
-  P : Integer;
-  N,V : string;
-
-begin
-  P:=Pos('=',NV);
-  Result:=(P<>0);
-  If Result then
-    begin
-    V:=NV;
-    N:=Copy(V,1,P-1);
-    Delete(V,1,P);
-    AddToList(List,N,V);
-    end;
-end;
-
-Function DoSubstitutions(List : TStrings; Var S : String) : Integer;
-
-Var
-  N,T : String;
-  P : Integer;
-
-begin
-  Result:=0;
-  T:=S;
-  S:='';
-  P:=Pos('%',T);
-  While (P>0) do
-    begin
-    S:=S+Copy(T,1,P-1);
-    Delete(T,1,P);
-    If (Length(T)>0) then
-      if (T[1]='%') then
-        begin
-        S:=S+'%';
-        Delete(T,1,1);
-        end
-      else
-        begin
-        P:=Pos('%',T);
-        If (P=0) then
-          S:=S+'%'
-        else
-          begin
-          N:=Copy(T,1,P-1);
-          Delete(T,1,P);
-          S:=S+List.Values[N];
-          end;
-        end;
-    P:=Pos('%',T);
-    end;
-  S:=S+T;
-end;
-
-end.