Browse Source

* Makefiles corrected for blockrtl (hardcoded in compiler)

Michael VAN CANNEYT 2 years ago
parent
commit
23d5ef3e31

+ 2347 - 1
rtl/Makefile

@@ -2,7 +2,7 @@
 # Don't edit, this file is generated by FPCMake Version 2.0.0
 #
 default: all
-MAKEFILETARGETS=i386-linux m68k-linux powerpc-linux sparc-linux x86_64-linux arm-linux powerpc64-linux armeb-linux mips-linux mipsel-linux mips64-linux mips64el-linux aarch64-linux sparc64-linux riscv32-linux riscv64-linux xtensa-linux loongarch64-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macosclassic m68k-embedded m68k-sinclairql powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macosclassic powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros arm-freertos arm-ios powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android mips64-linux mips64el-linux jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-freebsd aarch64-darwin aarch64-win64 aarch64-embedded aarch64-android aarch64-ios wasm32-embedded wasm32-wasi sparc64-linux riscv32-linux riscv32-embedded riscv32-freertos riscv64-linux riscv64-embedded xtensa-linux xtensa-embedded xtensa-freertos z80-embedded z80-zxspectrum z80-msxdos z80-amstradcpc loongarch64-linux
 BSDs = freebsd netbsd openbsd darwin dragonfly
 UNIXs = linux $(BSDs) solaris qnx haiku aix
 LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari
@@ -374,54 +374,327 @@ endif
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),i386-go32v2)
+override TARGET_DIRS+=go32v2
+endif
+ifeq ($(CPU_OS_TARGET),i386-win32)
+override TARGET_DIRS+=win32
+endif
+ifeq ($(CPU_OS_TARGET),i386-os2)
+override TARGET_DIRS+=os2
+endif
+ifeq ($(CPU_OS_TARGET),i386-freebsd)
+override TARGET_DIRS+=freebsd
+endif
+ifeq ($(CPU_OS_TARGET),i386-beos)
+override TARGET_DIRS+=beos
+endif
+ifeq ($(CPU_OS_TARGET),i386-haiku)
+override TARGET_DIRS+=haiku
+endif
+ifeq ($(CPU_OS_TARGET),i386-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),i386-solaris)
+override TARGET_DIRS+=solaris
+endif
+ifeq ($(CPU_OS_TARGET),i386-netware)
+override TARGET_DIRS+=netware
+endif
+ifeq ($(CPU_OS_TARGET),i386-openbsd)
+override TARGET_DIRS+=openbsd
+endif
+ifeq ($(CPU_OS_TARGET),i386-wdosx)
+override TARGET_DIRS+=win32
+endif
+ifeq ($(CPU_OS_TARGET),i386-darwin)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),i386-emx)
+override TARGET_DIRS+=emx
+endif
+ifeq ($(CPU_OS_TARGET),i386-watcom)
+override TARGET_DIRS+=watcom
+endif
+ifeq ($(CPU_OS_TARGET),i386-netwlibc)
+override TARGET_DIRS+=netwlibc
+endif
+ifeq ($(CPU_OS_TARGET),i386-wince)
+override TARGET_DIRS+=wince
+endif
+ifeq ($(CPU_OS_TARGET),i386-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),i386-symbian)
+override TARGET_DIRS+=symbian
+endif
+ifeq ($(CPU_OS_TARGET),i386-nativent)
+override TARGET_DIRS+=nativent
+endif
+ifeq ($(CPU_OS_TARGET),i386-iphonesim)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),i386-android)
+override TARGET_DIRS+=android
+endif
+ifeq ($(CPU_OS_TARGET),i386-aros)
+override TARGET_DIRS+=aros
+endif
 ifeq ($(CPU_OS_TARGET),m68k-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),m68k-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),m68k-amiga)
+override TARGET_DIRS+=amiga
+endif
+ifeq ($(CPU_OS_TARGET),m68k-atari)
+override TARGET_DIRS+=atari
+endif
+ifeq ($(CPU_OS_TARGET),m68k-palmos)
+override TARGET_DIRS+=palmos
+endif
+ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
+override TARGET_DIRS+=macos
+endif
+ifeq ($(CPU_OS_TARGET),m68k-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
+override TARGET_DIRS+=sinclairql
+endif
 ifeq ($(CPU_OS_TARGET),powerpc-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-amiga)
+override TARGET_DIRS+=amiga
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
+override TARGET_DIRS+=macos
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-darwin)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-morphos)
+override TARGET_DIRS+=morphos
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-wii)
+override TARGET_DIRS+=wii
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-aix)
+override TARGET_DIRS+=aix
+endif
 ifeq ($(CPU_OS_TARGET),sparc-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),sparc-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),sparc-solaris)
+override TARGET_DIRS+=solaris
+endif
+ifeq ($(CPU_OS_TARGET),sparc-embedded)
+override TARGET_DIRS+=embedded
+endif
 ifeq ($(CPU_OS_TARGET),x86_64-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
+override TARGET_DIRS+=freebsd
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-haiku)
+override TARGET_DIRS+=haiku
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-solaris)
+override TARGET_DIRS+=solaris
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
+override TARGET_DIRS+=openbsd
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-darwin)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-win64)
+override TARGET_DIRS+=win64
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-android)
+override TARGET_DIRS+=android
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-aros)
+override TARGET_DIRS+=aros
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
+override TARGET_DIRS+=dragonfly
+endif
 ifeq ($(CPU_OS_TARGET),arm-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),arm-netbsd)
+override TARGET_DIRS+=netbsd
+endif
+ifeq ($(CPU_OS_TARGET),arm-palmos)
+override TARGET_DIRS+=palmos
+endif
+ifeq ($(CPU_OS_TARGET),arm-wince)
+override TARGET_DIRS+=wince
+endif
+ifeq ($(CPU_OS_TARGET),arm-gba)
+override TARGET_DIRS+=gba
+endif
+ifeq ($(CPU_OS_TARGET),arm-nds)
+override TARGET_DIRS+=nds
+endif
+ifeq ($(CPU_OS_TARGET),arm-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),arm-symbian)
+override TARGET_DIRS+=symbian
+endif
+ifeq ($(CPU_OS_TARGET),arm-android)
+override TARGET_DIRS+=android
+endif
+ifeq ($(CPU_OS_TARGET),arm-aros)
+override TARGET_DIRS+=aros
+endif
+ifeq ($(CPU_OS_TARGET),arm-freertos)
+override TARGET_DIRS+=freertos
+endif
+ifeq ($(CPU_OS_TARGET),arm-ios)
+override TARGET_DIRS+=darwin
+endif
 ifeq ($(CPU_OS_TARGET),powerpc64-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),powerpc64-aix)
+override TARGET_DIRS+=aix
+endif
+ifeq ($(CPU_OS_TARGET),avr-embedded)
+override TARGET_DIRS+=embedded
+endif
 ifeq ($(CPU_OS_TARGET),armeb-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),armeb-embedded)
+override TARGET_DIRS+=embedded
+endif
 ifeq ($(CPU_OS_TARGET),mips-linux)
 override TARGET_DIRS+=linux
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),mipsel-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),mipsel-android)
+override TARGET_DIRS+=android
+endif
 ifeq ($(CPU_OS_TARGET),mips64-linux)
 override TARGET_DIRS+=linux
 endif
 ifeq ($(CPU_OS_TARGET),mips64el-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),jvm-java)
+override TARGET_DIRS+=java
+endif
+ifeq ($(CPU_OS_TARGET),jvm-android)
+override TARGET_DIRS+=android/jvm
+endif
+ifeq ($(CPU_OS_TARGET),i8086-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),i8086-msdos)
+override TARGET_DIRS+=msdos
+endif
+ifeq ($(CPU_OS_TARGET),i8086-win16)
+override TARGET_DIRS+=win16
+endif
 ifeq ($(CPU_OS_TARGET),aarch64-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
+override TARGET_DIRS+=freebsd
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-darwin)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-win64)
+override TARGET_DIRS+=win64
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-android)
+override TARGET_DIRS+=android
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-ios)
+override TARGET_DIRS+=darwin
+endif
+ifeq ($(CPU_OS_TARGET),wasm32-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),wasm32-wasi)
+override TARGET_DIRS+=wasi
+endif
 ifeq ($(CPU_OS_TARGET),sparc64-linux)
 override TARGET_DIRS+=linux
 endif
 ifeq ($(CPU_OS_TARGET),riscv32-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),riscv32-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),riscv32-freertos)
+override TARGET_DIRS+=freertos
+endif
 ifeq ($(CPU_OS_TARGET),riscv64-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),riscv64-embedded)
+override TARGET_DIRS+=embedded
+endif
 ifeq ($(CPU_OS_TARGET),xtensa-linux)
 override TARGET_DIRS+=linux
 endif
+ifeq ($(CPU_OS_TARGET),xtensa-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),xtensa-freertos)
+override TARGET_DIRS+=freertos
+endif
+ifeq ($(CPU_OS_TARGET),z80-embedded)
+override TARGET_DIRS+=embedded
+endif
+ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
+override TARGET_DIRS+=zxspectrum
+endif
+ifeq ($(CPU_OS_TARGET),z80-msxdos)
+override TARGET_DIRS+=msxdos
+endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_DIRS+=linux
 endif
@@ -1759,54 +2032,327 @@ endif
 ifeq ($(CPU_OS_TARGET),i386-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),i386-go32v2)
+TARGET_DIRS_GO32V2=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-win32)
+TARGET_DIRS_WIN32=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-os2)
+TARGET_DIRS_OS2=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-freebsd)
+TARGET_DIRS_FREEBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-beos)
+TARGET_DIRS_BEOS=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-haiku)
+TARGET_DIRS_HAIKU=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-solaris)
+TARGET_DIRS_SOLARIS=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-netware)
+TARGET_DIRS_NETWARE=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-openbsd)
+TARGET_DIRS_OPENBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-wdosx)
+TARGET_DIRS_WIN32=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-darwin)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-emx)
+TARGET_DIRS_EMX=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-watcom)
+TARGET_DIRS_WATCOM=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-netwlibc)
+TARGET_DIRS_NETWLIBC=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-wince)
+TARGET_DIRS_WINCE=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-symbian)
+TARGET_DIRS_SYMBIAN=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-nativent)
+TARGET_DIRS_NATIVENT=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-iphonesim)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-android)
+TARGET_DIRS_ANDROID=1
+endif
+ifeq ($(CPU_OS_TARGET),i386-aros)
+TARGET_DIRS_AROS=1
+endif
 ifeq ($(CPU_OS_TARGET),m68k-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),m68k-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-amiga)
+TARGET_DIRS_AMIGA=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-atari)
+TARGET_DIRS_ATARI=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-palmos)
+TARGET_DIRS_PALMOS=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
+TARGET_DIRS_MACOS=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
+TARGET_DIRS_SINCLAIRQL=1
+endif
 ifeq ($(CPU_OS_TARGET),powerpc-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-amiga)
+TARGET_DIRS_AMIGA=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
+TARGET_DIRS_MACOS=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-darwin)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-morphos)
+TARGET_DIRS_MORPHOS=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-wii)
+TARGET_DIRS_WII=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc-aix)
+TARGET_DIRS_AIX=1
+endif
 ifeq ($(CPU_OS_TARGET),sparc-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),sparc-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),sparc-solaris)
+TARGET_DIRS_SOLARIS=1
+endif
+ifeq ($(CPU_OS_TARGET),sparc-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
 ifeq ($(CPU_OS_TARGET),x86_64-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
+TARGET_DIRS_FREEBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-haiku)
+TARGET_DIRS_HAIKU=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-solaris)
+TARGET_DIRS_SOLARIS=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
+TARGET_DIRS_OPENBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-darwin)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-win64)
+TARGET_DIRS_WIN64=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-android)
+TARGET_DIRS_ANDROID=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-aros)
+TARGET_DIRS_AROS=1
+endif
+ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
+TARGET_DIRS_DRAGONFLY=1
+endif
 ifeq ($(CPU_OS_TARGET),arm-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),arm-netbsd)
+TARGET_DIRS_NETBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-palmos)
+TARGET_DIRS_PALMOS=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-wince)
+TARGET_DIRS_WINCE=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-gba)
+TARGET_DIRS_GBA=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-nds)
+TARGET_DIRS_NDS=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-symbian)
+TARGET_DIRS_SYMBIAN=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-android)
+TARGET_DIRS_ANDROID=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-aros)
+TARGET_DIRS_AROS=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-freertos)
+TARGET_DIRS_FREERTOS=1
+endif
+ifeq ($(CPU_OS_TARGET),arm-ios)
+TARGET_DIRS_DARWIN=1
+endif
 ifeq ($(CPU_OS_TARGET),powerpc64-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),powerpc64-aix)
+TARGET_DIRS_AIX=1
+endif
+ifeq ($(CPU_OS_TARGET),avr-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
 ifeq ($(CPU_OS_TARGET),armeb-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),armeb-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
 ifeq ($(CPU_OS_TARGET),mips-linux)
 TARGET_DIRS_LINUX=1
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),mipsel-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),mipsel-android)
+TARGET_DIRS_ANDROID=1
+endif
 ifeq ($(CPU_OS_TARGET),mips64-linux)
 TARGET_DIRS_LINUX=1
 endif
 ifeq ($(CPU_OS_TARGET),mips64el-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),jvm-java)
+TARGET_DIRS_JAVA=1
+endif
+ifeq ($(CPU_OS_TARGET),jvm-android)
+TARGET_DIRS_ANDROID/JVM=1
+endif
+ifeq ($(CPU_OS_TARGET),i8086-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),i8086-msdos)
+TARGET_DIRS_MSDOS=1
+endif
+ifeq ($(CPU_OS_TARGET),i8086-win16)
+TARGET_DIRS_WIN16=1
+endif
 ifeq ($(CPU_OS_TARGET),aarch64-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
+TARGET_DIRS_FREEBSD=1
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-darwin)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-win64)
+TARGET_DIRS_WIN64=1
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-android)
+TARGET_DIRS_ANDROID=1
+endif
+ifeq ($(CPU_OS_TARGET),aarch64-ios)
+TARGET_DIRS_DARWIN=1
+endif
+ifeq ($(CPU_OS_TARGET),wasm32-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),wasm32-wasi)
+TARGET_DIRS_WASI=1
+endif
 ifeq ($(CPU_OS_TARGET),sparc64-linux)
 TARGET_DIRS_LINUX=1
 endif
 ifeq ($(CPU_OS_TARGET),riscv32-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),riscv32-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),riscv32-freertos)
+TARGET_DIRS_FREERTOS=1
+endif
 ifeq ($(CPU_OS_TARGET),riscv64-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),riscv64-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
 ifeq ($(CPU_OS_TARGET),xtensa-linux)
 TARGET_DIRS_LINUX=1
 endif
+ifeq ($(CPU_OS_TARGET),xtensa-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),xtensa-freertos)
+TARGET_DIRS_FREERTOS=1
+endif
+ifeq ($(CPU_OS_TARGET),z80-embedded)
+TARGET_DIRS_EMBEDDED=1
+endif
+ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
+TARGET_DIRS_ZXSPECTRUM=1
+endif
+ifeq ($(CPU_OS_TARGET),z80-msxdos)
+TARGET_DIRS_MSXDOS=1
+endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 TARGET_DIRS_LINUX=1
 endif
@@ -1855,6 +2401,1806 @@ linux:
 	$(MAKE) -C linux all
 .PHONY: linux_all linux_debug linux_smart linux_release linux_units linux_examples linux_shared linux_install linux_sourceinstall linux_exampleinstall linux_distinstall linux_zipinstall linux_zipsourceinstall linux_zipexampleinstall linux_zipdistinstall linux_clean linux_distclean linux_cleanall linux_info linux_makefiles linux
 endif
+ifdef TARGET_DIRS_GO32V2
+go32v2_all:
+	$(MAKE) -C go32v2 all
+go32v2_debug:
+	$(MAKE) -C go32v2 debug
+go32v2_smart:
+	$(MAKE) -C go32v2 smart
+go32v2_release:
+	$(MAKE) -C go32v2 release
+go32v2_units:
+	$(MAKE) -C go32v2 units
+go32v2_examples:
+	$(MAKE) -C go32v2 examples
+go32v2_shared:
+	$(MAKE) -C go32v2 shared
+go32v2_install:
+	$(MAKE) -C go32v2 install
+go32v2_sourceinstall:
+	$(MAKE) -C go32v2 sourceinstall
+go32v2_exampleinstall:
+	$(MAKE) -C go32v2 exampleinstall
+go32v2_distinstall:
+	$(MAKE) -C go32v2 distinstall
+go32v2_zipinstall:
+	$(MAKE) -C go32v2 zipinstall
+go32v2_zipsourceinstall:
+	$(MAKE) -C go32v2 zipsourceinstall
+go32v2_zipexampleinstall:
+	$(MAKE) -C go32v2 zipexampleinstall
+go32v2_zipdistinstall:
+	$(MAKE) -C go32v2 zipdistinstall
+go32v2_clean:
+	$(MAKE) -C go32v2 clean
+go32v2_distclean:
+	$(MAKE) -C go32v2 distclean
+go32v2_cleanall:
+	$(MAKE) -C go32v2 cleanall
+go32v2_info:
+	$(MAKE) -C go32v2 info
+go32v2_makefiles:
+	$(MAKE) -C go32v2 makefiles
+go32v2:
+	$(MAKE) -C go32v2 all
+.PHONY: go32v2_all go32v2_debug go32v2_smart go32v2_release go32v2_units go32v2_examples go32v2_shared go32v2_install go32v2_sourceinstall go32v2_exampleinstall go32v2_distinstall go32v2_zipinstall go32v2_zipsourceinstall go32v2_zipexampleinstall go32v2_zipdistinstall go32v2_clean go32v2_distclean go32v2_cleanall go32v2_info go32v2_makefiles go32v2
+endif
+ifdef TARGET_DIRS_WIN32
+win32_all:
+	$(MAKE) -C win32 all
+win32_debug:
+	$(MAKE) -C win32 debug
+win32_smart:
+	$(MAKE) -C win32 smart
+win32_release:
+	$(MAKE) -C win32 release
+win32_units:
+	$(MAKE) -C win32 units
+win32_examples:
+	$(MAKE) -C win32 examples
+win32_shared:
+	$(MAKE) -C win32 shared
+win32_install:
+	$(MAKE) -C win32 install
+win32_sourceinstall:
+	$(MAKE) -C win32 sourceinstall
+win32_exampleinstall:
+	$(MAKE) -C win32 exampleinstall
+win32_distinstall:
+	$(MAKE) -C win32 distinstall
+win32_zipinstall:
+	$(MAKE) -C win32 zipinstall
+win32_zipsourceinstall:
+	$(MAKE) -C win32 zipsourceinstall
+win32_zipexampleinstall:
+	$(MAKE) -C win32 zipexampleinstall
+win32_zipdistinstall:
+	$(MAKE) -C win32 zipdistinstall
+win32_clean:
+	$(MAKE) -C win32 clean
+win32_distclean:
+	$(MAKE) -C win32 distclean
+win32_cleanall:
+	$(MAKE) -C win32 cleanall
+win32_info:
+	$(MAKE) -C win32 info
+win32_makefiles:
+	$(MAKE) -C win32 makefiles
+win32:
+	$(MAKE) -C win32 all
+.PHONY: win32_all win32_debug win32_smart win32_release win32_units win32_examples win32_shared win32_install win32_sourceinstall win32_exampleinstall win32_distinstall win32_zipinstall win32_zipsourceinstall win32_zipexampleinstall win32_zipdistinstall win32_clean win32_distclean win32_cleanall win32_info win32_makefiles win32
+endif
+ifdef TARGET_DIRS_OS2
+os2_all:
+	$(MAKE) -C os2 all
+os2_debug:
+	$(MAKE) -C os2 debug
+os2_smart:
+	$(MAKE) -C os2 smart
+os2_release:
+	$(MAKE) -C os2 release
+os2_units:
+	$(MAKE) -C os2 units
+os2_examples:
+	$(MAKE) -C os2 examples
+os2_shared:
+	$(MAKE) -C os2 shared
+os2_install:
+	$(MAKE) -C os2 install
+os2_sourceinstall:
+	$(MAKE) -C os2 sourceinstall
+os2_exampleinstall:
+	$(MAKE) -C os2 exampleinstall
+os2_distinstall:
+	$(MAKE) -C os2 distinstall
+os2_zipinstall:
+	$(MAKE) -C os2 zipinstall
+os2_zipsourceinstall:
+	$(MAKE) -C os2 zipsourceinstall
+os2_zipexampleinstall:
+	$(MAKE) -C os2 zipexampleinstall
+os2_zipdistinstall:
+	$(MAKE) -C os2 zipdistinstall
+os2_clean:
+	$(MAKE) -C os2 clean
+os2_distclean:
+	$(MAKE) -C os2 distclean
+os2_cleanall:
+	$(MAKE) -C os2 cleanall
+os2_info:
+	$(MAKE) -C os2 info
+os2_makefiles:
+	$(MAKE) -C os2 makefiles
+os2:
+	$(MAKE) -C os2 all
+.PHONY: os2_all os2_debug os2_smart os2_release os2_units os2_examples os2_shared os2_install os2_sourceinstall os2_exampleinstall os2_distinstall os2_zipinstall os2_zipsourceinstall os2_zipexampleinstall os2_zipdistinstall os2_clean os2_distclean os2_cleanall os2_info os2_makefiles os2
+endif
+ifdef TARGET_DIRS_FREEBSD
+freebsd_all:
+	$(MAKE) -C freebsd all
+freebsd_debug:
+	$(MAKE) -C freebsd debug
+freebsd_smart:
+	$(MAKE) -C freebsd smart
+freebsd_release:
+	$(MAKE) -C freebsd release
+freebsd_units:
+	$(MAKE) -C freebsd units
+freebsd_examples:
+	$(MAKE) -C freebsd examples
+freebsd_shared:
+	$(MAKE) -C freebsd shared
+freebsd_install:
+	$(MAKE) -C freebsd install
+freebsd_sourceinstall:
+	$(MAKE) -C freebsd sourceinstall
+freebsd_exampleinstall:
+	$(MAKE) -C freebsd exampleinstall
+freebsd_distinstall:
+	$(MAKE) -C freebsd distinstall
+freebsd_zipinstall:
+	$(MAKE) -C freebsd zipinstall
+freebsd_zipsourceinstall:
+	$(MAKE) -C freebsd zipsourceinstall
+freebsd_zipexampleinstall:
+	$(MAKE) -C freebsd zipexampleinstall
+freebsd_zipdistinstall:
+	$(MAKE) -C freebsd zipdistinstall
+freebsd_clean:
+	$(MAKE) -C freebsd clean
+freebsd_distclean:
+	$(MAKE) -C freebsd distclean
+freebsd_cleanall:
+	$(MAKE) -C freebsd cleanall
+freebsd_info:
+	$(MAKE) -C freebsd info
+freebsd_makefiles:
+	$(MAKE) -C freebsd makefiles
+freebsd:
+	$(MAKE) -C freebsd all
+.PHONY: freebsd_all freebsd_debug freebsd_smart freebsd_release freebsd_units freebsd_examples freebsd_shared freebsd_install freebsd_sourceinstall freebsd_exampleinstall freebsd_distinstall freebsd_zipinstall freebsd_zipsourceinstall freebsd_zipexampleinstall freebsd_zipdistinstall freebsd_clean freebsd_distclean freebsd_cleanall freebsd_info freebsd_makefiles freebsd
+endif
+ifdef TARGET_DIRS_BEOS
+beos_all:
+	$(MAKE) -C beos all
+beos_debug:
+	$(MAKE) -C beos debug
+beos_smart:
+	$(MAKE) -C beos smart
+beos_release:
+	$(MAKE) -C beos release
+beos_units:
+	$(MAKE) -C beos units
+beos_examples:
+	$(MAKE) -C beos examples
+beos_shared:
+	$(MAKE) -C beos shared
+beos_install:
+	$(MAKE) -C beos install
+beos_sourceinstall:
+	$(MAKE) -C beos sourceinstall
+beos_exampleinstall:
+	$(MAKE) -C beos exampleinstall
+beos_distinstall:
+	$(MAKE) -C beos distinstall
+beos_zipinstall:
+	$(MAKE) -C beos zipinstall
+beos_zipsourceinstall:
+	$(MAKE) -C beos zipsourceinstall
+beos_zipexampleinstall:
+	$(MAKE) -C beos zipexampleinstall
+beos_zipdistinstall:
+	$(MAKE) -C beos zipdistinstall
+beos_clean:
+	$(MAKE) -C beos clean
+beos_distclean:
+	$(MAKE) -C beos distclean
+beos_cleanall:
+	$(MAKE) -C beos cleanall
+beos_info:
+	$(MAKE) -C beos info
+beos_makefiles:
+	$(MAKE) -C beos makefiles
+beos:
+	$(MAKE) -C beos all
+.PHONY: beos_all beos_debug beos_smart beos_release beos_units beos_examples beos_shared beos_install beos_sourceinstall beos_exampleinstall beos_distinstall beos_zipinstall beos_zipsourceinstall beos_zipexampleinstall beos_zipdistinstall beos_clean beos_distclean beos_cleanall beos_info beos_makefiles beos
+endif
+ifdef TARGET_DIRS_HAIKU
+haiku_all:
+	$(MAKE) -C haiku all
+haiku_debug:
+	$(MAKE) -C haiku debug
+haiku_smart:
+	$(MAKE) -C haiku smart
+haiku_release:
+	$(MAKE) -C haiku release
+haiku_units:
+	$(MAKE) -C haiku units
+haiku_examples:
+	$(MAKE) -C haiku examples
+haiku_shared:
+	$(MAKE) -C haiku shared
+haiku_install:
+	$(MAKE) -C haiku install
+haiku_sourceinstall:
+	$(MAKE) -C haiku sourceinstall
+haiku_exampleinstall:
+	$(MAKE) -C haiku exampleinstall
+haiku_distinstall:
+	$(MAKE) -C haiku distinstall
+haiku_zipinstall:
+	$(MAKE) -C haiku zipinstall
+haiku_zipsourceinstall:
+	$(MAKE) -C haiku zipsourceinstall
+haiku_zipexampleinstall:
+	$(MAKE) -C haiku zipexampleinstall
+haiku_zipdistinstall:
+	$(MAKE) -C haiku zipdistinstall
+haiku_clean:
+	$(MAKE) -C haiku clean
+haiku_distclean:
+	$(MAKE) -C haiku distclean
+haiku_cleanall:
+	$(MAKE) -C haiku cleanall
+haiku_info:
+	$(MAKE) -C haiku info
+haiku_makefiles:
+	$(MAKE) -C haiku makefiles
+haiku:
+	$(MAKE) -C haiku all
+.PHONY: haiku_all haiku_debug haiku_smart haiku_release haiku_units haiku_examples haiku_shared haiku_install haiku_sourceinstall haiku_exampleinstall haiku_distinstall haiku_zipinstall haiku_zipsourceinstall haiku_zipexampleinstall haiku_zipdistinstall haiku_clean haiku_distclean haiku_cleanall haiku_info haiku_makefiles haiku
+endif
+ifdef TARGET_DIRS_NETBSD
+netbsd_all:
+	$(MAKE) -C netbsd all
+netbsd_debug:
+	$(MAKE) -C netbsd debug
+netbsd_smart:
+	$(MAKE) -C netbsd smart
+netbsd_release:
+	$(MAKE) -C netbsd release
+netbsd_units:
+	$(MAKE) -C netbsd units
+netbsd_examples:
+	$(MAKE) -C netbsd examples
+netbsd_shared:
+	$(MAKE) -C netbsd shared
+netbsd_install:
+	$(MAKE) -C netbsd install
+netbsd_sourceinstall:
+	$(MAKE) -C netbsd sourceinstall
+netbsd_exampleinstall:
+	$(MAKE) -C netbsd exampleinstall
+netbsd_distinstall:
+	$(MAKE) -C netbsd distinstall
+netbsd_zipinstall:
+	$(MAKE) -C netbsd zipinstall
+netbsd_zipsourceinstall:
+	$(MAKE) -C netbsd zipsourceinstall
+netbsd_zipexampleinstall:
+	$(MAKE) -C netbsd zipexampleinstall
+netbsd_zipdistinstall:
+	$(MAKE) -C netbsd zipdistinstall
+netbsd_clean:
+	$(MAKE) -C netbsd clean
+netbsd_distclean:
+	$(MAKE) -C netbsd distclean
+netbsd_cleanall:
+	$(MAKE) -C netbsd cleanall
+netbsd_info:
+	$(MAKE) -C netbsd info
+netbsd_makefiles:
+	$(MAKE) -C netbsd makefiles
+netbsd:
+	$(MAKE) -C netbsd all
+.PHONY: netbsd_all netbsd_debug netbsd_smart netbsd_release netbsd_units netbsd_examples netbsd_shared netbsd_install netbsd_sourceinstall netbsd_exampleinstall netbsd_distinstall netbsd_zipinstall netbsd_zipsourceinstall netbsd_zipexampleinstall netbsd_zipdistinstall netbsd_clean netbsd_distclean netbsd_cleanall netbsd_info netbsd_makefiles netbsd
+endif
+ifdef TARGET_DIRS_SOLARIS
+solaris_all:
+	$(MAKE) -C solaris all
+solaris_debug:
+	$(MAKE) -C solaris debug
+solaris_smart:
+	$(MAKE) -C solaris smart
+solaris_release:
+	$(MAKE) -C solaris release
+solaris_units:
+	$(MAKE) -C solaris units
+solaris_examples:
+	$(MAKE) -C solaris examples
+solaris_shared:
+	$(MAKE) -C solaris shared
+solaris_install:
+	$(MAKE) -C solaris install
+solaris_sourceinstall:
+	$(MAKE) -C solaris sourceinstall
+solaris_exampleinstall:
+	$(MAKE) -C solaris exampleinstall
+solaris_distinstall:
+	$(MAKE) -C solaris distinstall
+solaris_zipinstall:
+	$(MAKE) -C solaris zipinstall
+solaris_zipsourceinstall:
+	$(MAKE) -C solaris zipsourceinstall
+solaris_zipexampleinstall:
+	$(MAKE) -C solaris zipexampleinstall
+solaris_zipdistinstall:
+	$(MAKE) -C solaris zipdistinstall
+solaris_clean:
+	$(MAKE) -C solaris clean
+solaris_distclean:
+	$(MAKE) -C solaris distclean
+solaris_cleanall:
+	$(MAKE) -C solaris cleanall
+solaris_info:
+	$(MAKE) -C solaris info
+solaris_makefiles:
+	$(MAKE) -C solaris makefiles
+solaris:
+	$(MAKE) -C solaris all
+.PHONY: solaris_all solaris_debug solaris_smart solaris_release solaris_units solaris_examples solaris_shared solaris_install solaris_sourceinstall solaris_exampleinstall solaris_distinstall solaris_zipinstall solaris_zipsourceinstall solaris_zipexampleinstall solaris_zipdistinstall solaris_clean solaris_distclean solaris_cleanall solaris_info solaris_makefiles solaris
+endif
+ifdef TARGET_DIRS_NETWARE
+netware_all:
+	$(MAKE) -C netware all
+netware_debug:
+	$(MAKE) -C netware debug
+netware_smart:
+	$(MAKE) -C netware smart
+netware_release:
+	$(MAKE) -C netware release
+netware_units:
+	$(MAKE) -C netware units
+netware_examples:
+	$(MAKE) -C netware examples
+netware_shared:
+	$(MAKE) -C netware shared
+netware_install:
+	$(MAKE) -C netware install
+netware_sourceinstall:
+	$(MAKE) -C netware sourceinstall
+netware_exampleinstall:
+	$(MAKE) -C netware exampleinstall
+netware_distinstall:
+	$(MAKE) -C netware distinstall
+netware_zipinstall:
+	$(MAKE) -C netware zipinstall
+netware_zipsourceinstall:
+	$(MAKE) -C netware zipsourceinstall
+netware_zipexampleinstall:
+	$(MAKE) -C netware zipexampleinstall
+netware_zipdistinstall:
+	$(MAKE) -C netware zipdistinstall
+netware_clean:
+	$(MAKE) -C netware clean
+netware_distclean:
+	$(MAKE) -C netware distclean
+netware_cleanall:
+	$(MAKE) -C netware cleanall
+netware_info:
+	$(MAKE) -C netware info
+netware_makefiles:
+	$(MAKE) -C netware makefiles
+netware:
+	$(MAKE) -C netware all
+.PHONY: netware_all netware_debug netware_smart netware_release netware_units netware_examples netware_shared netware_install netware_sourceinstall netware_exampleinstall netware_distinstall netware_zipinstall netware_zipsourceinstall netware_zipexampleinstall netware_zipdistinstall netware_clean netware_distclean netware_cleanall netware_info netware_makefiles netware
+endif
+ifdef TARGET_DIRS_OPENBSD
+openbsd_all:
+	$(MAKE) -C openbsd all
+openbsd_debug:
+	$(MAKE) -C openbsd debug
+openbsd_smart:
+	$(MAKE) -C openbsd smart
+openbsd_release:
+	$(MAKE) -C openbsd release
+openbsd_units:
+	$(MAKE) -C openbsd units
+openbsd_examples:
+	$(MAKE) -C openbsd examples
+openbsd_shared:
+	$(MAKE) -C openbsd shared
+openbsd_install:
+	$(MAKE) -C openbsd install
+openbsd_sourceinstall:
+	$(MAKE) -C openbsd sourceinstall
+openbsd_exampleinstall:
+	$(MAKE) -C openbsd exampleinstall
+openbsd_distinstall:
+	$(MAKE) -C openbsd distinstall
+openbsd_zipinstall:
+	$(MAKE) -C openbsd zipinstall
+openbsd_zipsourceinstall:
+	$(MAKE) -C openbsd zipsourceinstall
+openbsd_zipexampleinstall:
+	$(MAKE) -C openbsd zipexampleinstall
+openbsd_zipdistinstall:
+	$(MAKE) -C openbsd zipdistinstall
+openbsd_clean:
+	$(MAKE) -C openbsd clean
+openbsd_distclean:
+	$(MAKE) -C openbsd distclean
+openbsd_cleanall:
+	$(MAKE) -C openbsd cleanall
+openbsd_info:
+	$(MAKE) -C openbsd info
+openbsd_makefiles:
+	$(MAKE) -C openbsd makefiles
+openbsd:
+	$(MAKE) -C openbsd all
+.PHONY: openbsd_all openbsd_debug openbsd_smart openbsd_release openbsd_units openbsd_examples openbsd_shared openbsd_install openbsd_sourceinstall openbsd_exampleinstall openbsd_distinstall openbsd_zipinstall openbsd_zipsourceinstall openbsd_zipexampleinstall openbsd_zipdistinstall openbsd_clean openbsd_distclean openbsd_cleanall openbsd_info openbsd_makefiles openbsd
+endif
+ifdef TARGET_DIRS_DARWIN
+darwin_all:
+	$(MAKE) -C darwin all
+darwin_debug:
+	$(MAKE) -C darwin debug
+darwin_smart:
+	$(MAKE) -C darwin smart
+darwin_release:
+	$(MAKE) -C darwin release
+darwin_units:
+	$(MAKE) -C darwin units
+darwin_examples:
+	$(MAKE) -C darwin examples
+darwin_shared:
+	$(MAKE) -C darwin shared
+darwin_install:
+	$(MAKE) -C darwin install
+darwin_sourceinstall:
+	$(MAKE) -C darwin sourceinstall
+darwin_exampleinstall:
+	$(MAKE) -C darwin exampleinstall
+darwin_distinstall:
+	$(MAKE) -C darwin distinstall
+darwin_zipinstall:
+	$(MAKE) -C darwin zipinstall
+darwin_zipsourceinstall:
+	$(MAKE) -C darwin zipsourceinstall
+darwin_zipexampleinstall:
+	$(MAKE) -C darwin zipexampleinstall
+darwin_zipdistinstall:
+	$(MAKE) -C darwin zipdistinstall
+darwin_clean:
+	$(MAKE) -C darwin clean
+darwin_distclean:
+	$(MAKE) -C darwin distclean
+darwin_cleanall:
+	$(MAKE) -C darwin cleanall
+darwin_info:
+	$(MAKE) -C darwin info
+darwin_makefiles:
+	$(MAKE) -C darwin makefiles
+darwin:
+	$(MAKE) -C darwin all
+.PHONY: darwin_all darwin_debug darwin_smart darwin_release darwin_units darwin_examples darwin_shared darwin_install darwin_sourceinstall darwin_exampleinstall darwin_distinstall darwin_zipinstall darwin_zipsourceinstall darwin_zipexampleinstall darwin_zipdistinstall darwin_clean darwin_distclean darwin_cleanall darwin_info darwin_makefiles darwin
+endif
+ifdef TARGET_DIRS_EMX
+emx_all:
+	$(MAKE) -C emx all
+emx_debug:
+	$(MAKE) -C emx debug
+emx_smart:
+	$(MAKE) -C emx smart
+emx_release:
+	$(MAKE) -C emx release
+emx_units:
+	$(MAKE) -C emx units
+emx_examples:
+	$(MAKE) -C emx examples
+emx_shared:
+	$(MAKE) -C emx shared
+emx_install:
+	$(MAKE) -C emx install
+emx_sourceinstall:
+	$(MAKE) -C emx sourceinstall
+emx_exampleinstall:
+	$(MAKE) -C emx exampleinstall
+emx_distinstall:
+	$(MAKE) -C emx distinstall
+emx_zipinstall:
+	$(MAKE) -C emx zipinstall
+emx_zipsourceinstall:
+	$(MAKE) -C emx zipsourceinstall
+emx_zipexampleinstall:
+	$(MAKE) -C emx zipexampleinstall
+emx_zipdistinstall:
+	$(MAKE) -C emx zipdistinstall
+emx_clean:
+	$(MAKE) -C emx clean
+emx_distclean:
+	$(MAKE) -C emx distclean
+emx_cleanall:
+	$(MAKE) -C emx cleanall
+emx_info:
+	$(MAKE) -C emx info
+emx_makefiles:
+	$(MAKE) -C emx makefiles
+emx:
+	$(MAKE) -C emx all
+.PHONY: emx_all emx_debug emx_smart emx_release emx_units emx_examples emx_shared emx_install emx_sourceinstall emx_exampleinstall emx_distinstall emx_zipinstall emx_zipsourceinstall emx_zipexampleinstall emx_zipdistinstall emx_clean emx_distclean emx_cleanall emx_info emx_makefiles emx
+endif
+ifdef TARGET_DIRS_WATCOM
+watcom_all:
+	$(MAKE) -C watcom all
+watcom_debug:
+	$(MAKE) -C watcom debug
+watcom_smart:
+	$(MAKE) -C watcom smart
+watcom_release:
+	$(MAKE) -C watcom release
+watcom_units:
+	$(MAKE) -C watcom units
+watcom_examples:
+	$(MAKE) -C watcom examples
+watcom_shared:
+	$(MAKE) -C watcom shared
+watcom_install:
+	$(MAKE) -C watcom install
+watcom_sourceinstall:
+	$(MAKE) -C watcom sourceinstall
+watcom_exampleinstall:
+	$(MAKE) -C watcom exampleinstall
+watcom_distinstall:
+	$(MAKE) -C watcom distinstall
+watcom_zipinstall:
+	$(MAKE) -C watcom zipinstall
+watcom_zipsourceinstall:
+	$(MAKE) -C watcom zipsourceinstall
+watcom_zipexampleinstall:
+	$(MAKE) -C watcom zipexampleinstall
+watcom_zipdistinstall:
+	$(MAKE) -C watcom zipdistinstall
+watcom_clean:
+	$(MAKE) -C watcom clean
+watcom_distclean:
+	$(MAKE) -C watcom distclean
+watcom_cleanall:
+	$(MAKE) -C watcom cleanall
+watcom_info:
+	$(MAKE) -C watcom info
+watcom_makefiles:
+	$(MAKE) -C watcom makefiles
+watcom:
+	$(MAKE) -C watcom all
+.PHONY: watcom_all watcom_debug watcom_smart watcom_release watcom_units watcom_examples watcom_shared watcom_install watcom_sourceinstall watcom_exampleinstall watcom_distinstall watcom_zipinstall watcom_zipsourceinstall watcom_zipexampleinstall watcom_zipdistinstall watcom_clean watcom_distclean watcom_cleanall watcom_info watcom_makefiles watcom
+endif
+ifdef TARGET_DIRS_NETWLIBC
+netwlibc_all:
+	$(MAKE) -C netwlibc all
+netwlibc_debug:
+	$(MAKE) -C netwlibc debug
+netwlibc_smart:
+	$(MAKE) -C netwlibc smart
+netwlibc_release:
+	$(MAKE) -C netwlibc release
+netwlibc_units:
+	$(MAKE) -C netwlibc units
+netwlibc_examples:
+	$(MAKE) -C netwlibc examples
+netwlibc_shared:
+	$(MAKE) -C netwlibc shared
+netwlibc_install:
+	$(MAKE) -C netwlibc install
+netwlibc_sourceinstall:
+	$(MAKE) -C netwlibc sourceinstall
+netwlibc_exampleinstall:
+	$(MAKE) -C netwlibc exampleinstall
+netwlibc_distinstall:
+	$(MAKE) -C netwlibc distinstall
+netwlibc_zipinstall:
+	$(MAKE) -C netwlibc zipinstall
+netwlibc_zipsourceinstall:
+	$(MAKE) -C netwlibc zipsourceinstall
+netwlibc_zipexampleinstall:
+	$(MAKE) -C netwlibc zipexampleinstall
+netwlibc_zipdistinstall:
+	$(MAKE) -C netwlibc zipdistinstall
+netwlibc_clean:
+	$(MAKE) -C netwlibc clean
+netwlibc_distclean:
+	$(MAKE) -C netwlibc distclean
+netwlibc_cleanall:
+	$(MAKE) -C netwlibc cleanall
+netwlibc_info:
+	$(MAKE) -C netwlibc info
+netwlibc_makefiles:
+	$(MAKE) -C netwlibc makefiles
+netwlibc:
+	$(MAKE) -C netwlibc all
+.PHONY: netwlibc_all netwlibc_debug netwlibc_smart netwlibc_release netwlibc_units netwlibc_examples netwlibc_shared netwlibc_install netwlibc_sourceinstall netwlibc_exampleinstall netwlibc_distinstall netwlibc_zipinstall netwlibc_zipsourceinstall netwlibc_zipexampleinstall netwlibc_zipdistinstall netwlibc_clean netwlibc_distclean netwlibc_cleanall netwlibc_info netwlibc_makefiles netwlibc
+endif
+ifdef TARGET_DIRS_WINCE
+wince_all:
+	$(MAKE) -C wince all
+wince_debug:
+	$(MAKE) -C wince debug
+wince_smart:
+	$(MAKE) -C wince smart
+wince_release:
+	$(MAKE) -C wince release
+wince_units:
+	$(MAKE) -C wince units
+wince_examples:
+	$(MAKE) -C wince examples
+wince_shared:
+	$(MAKE) -C wince shared
+wince_install:
+	$(MAKE) -C wince install
+wince_sourceinstall:
+	$(MAKE) -C wince sourceinstall
+wince_exampleinstall:
+	$(MAKE) -C wince exampleinstall
+wince_distinstall:
+	$(MAKE) -C wince distinstall
+wince_zipinstall:
+	$(MAKE) -C wince zipinstall
+wince_zipsourceinstall:
+	$(MAKE) -C wince zipsourceinstall
+wince_zipexampleinstall:
+	$(MAKE) -C wince zipexampleinstall
+wince_zipdistinstall:
+	$(MAKE) -C wince zipdistinstall
+wince_clean:
+	$(MAKE) -C wince clean
+wince_distclean:
+	$(MAKE) -C wince distclean
+wince_cleanall:
+	$(MAKE) -C wince cleanall
+wince_info:
+	$(MAKE) -C wince info
+wince_makefiles:
+	$(MAKE) -C wince makefiles
+wince:
+	$(MAKE) -C wince all
+.PHONY: wince_all wince_debug wince_smart wince_release wince_units wince_examples wince_shared wince_install wince_sourceinstall wince_exampleinstall wince_distinstall wince_zipinstall wince_zipsourceinstall wince_zipexampleinstall wince_zipdistinstall wince_clean wince_distclean wince_cleanall wince_info wince_makefiles wince
+endif
+ifdef TARGET_DIRS_EMBEDDED
+embedded_all:
+	$(MAKE) -C embedded all
+embedded_debug:
+	$(MAKE) -C embedded debug
+embedded_smart:
+	$(MAKE) -C embedded smart
+embedded_release:
+	$(MAKE) -C embedded release
+embedded_units:
+	$(MAKE) -C embedded units
+embedded_examples:
+	$(MAKE) -C embedded examples
+embedded_shared:
+	$(MAKE) -C embedded shared
+embedded_install:
+	$(MAKE) -C embedded install
+embedded_sourceinstall:
+	$(MAKE) -C embedded sourceinstall
+embedded_exampleinstall:
+	$(MAKE) -C embedded exampleinstall
+embedded_distinstall:
+	$(MAKE) -C embedded distinstall
+embedded_zipinstall:
+	$(MAKE) -C embedded zipinstall
+embedded_zipsourceinstall:
+	$(MAKE) -C embedded zipsourceinstall
+embedded_zipexampleinstall:
+	$(MAKE) -C embedded zipexampleinstall
+embedded_zipdistinstall:
+	$(MAKE) -C embedded zipdistinstall
+embedded_clean:
+	$(MAKE) -C embedded clean
+embedded_distclean:
+	$(MAKE) -C embedded distclean
+embedded_cleanall:
+	$(MAKE) -C embedded cleanall
+embedded_info:
+	$(MAKE) -C embedded info
+embedded_makefiles:
+	$(MAKE) -C embedded makefiles
+embedded:
+	$(MAKE) -C embedded all
+.PHONY: embedded_all embedded_debug embedded_smart embedded_release embedded_units embedded_examples embedded_shared embedded_install embedded_sourceinstall embedded_exampleinstall embedded_distinstall embedded_zipinstall embedded_zipsourceinstall embedded_zipexampleinstall embedded_zipdistinstall embedded_clean embedded_distclean embedded_cleanall embedded_info embedded_makefiles embedded
+endif
+ifdef TARGET_DIRS_SYMBIAN
+symbian_all:
+	$(MAKE) -C symbian all
+symbian_debug:
+	$(MAKE) -C symbian debug
+symbian_smart:
+	$(MAKE) -C symbian smart
+symbian_release:
+	$(MAKE) -C symbian release
+symbian_units:
+	$(MAKE) -C symbian units
+symbian_examples:
+	$(MAKE) -C symbian examples
+symbian_shared:
+	$(MAKE) -C symbian shared
+symbian_install:
+	$(MAKE) -C symbian install
+symbian_sourceinstall:
+	$(MAKE) -C symbian sourceinstall
+symbian_exampleinstall:
+	$(MAKE) -C symbian exampleinstall
+symbian_distinstall:
+	$(MAKE) -C symbian distinstall
+symbian_zipinstall:
+	$(MAKE) -C symbian zipinstall
+symbian_zipsourceinstall:
+	$(MAKE) -C symbian zipsourceinstall
+symbian_zipexampleinstall:
+	$(MAKE) -C symbian zipexampleinstall
+symbian_zipdistinstall:
+	$(MAKE) -C symbian zipdistinstall
+symbian_clean:
+	$(MAKE) -C symbian clean
+symbian_distclean:
+	$(MAKE) -C symbian distclean
+symbian_cleanall:
+	$(MAKE) -C symbian cleanall
+symbian_info:
+	$(MAKE) -C symbian info
+symbian_makefiles:
+	$(MAKE) -C symbian makefiles
+symbian:
+	$(MAKE) -C symbian all
+.PHONY: symbian_all symbian_debug symbian_smart symbian_release symbian_units symbian_examples symbian_shared symbian_install symbian_sourceinstall symbian_exampleinstall symbian_distinstall symbian_zipinstall symbian_zipsourceinstall symbian_zipexampleinstall symbian_zipdistinstall symbian_clean symbian_distclean symbian_cleanall symbian_info symbian_makefiles symbian
+endif
+ifdef TARGET_DIRS_NATIVENT
+nativent_all:
+	$(MAKE) -C nativent all
+nativent_debug:
+	$(MAKE) -C nativent debug
+nativent_smart:
+	$(MAKE) -C nativent smart
+nativent_release:
+	$(MAKE) -C nativent release
+nativent_units:
+	$(MAKE) -C nativent units
+nativent_examples:
+	$(MAKE) -C nativent examples
+nativent_shared:
+	$(MAKE) -C nativent shared
+nativent_install:
+	$(MAKE) -C nativent install
+nativent_sourceinstall:
+	$(MAKE) -C nativent sourceinstall
+nativent_exampleinstall:
+	$(MAKE) -C nativent exampleinstall
+nativent_distinstall:
+	$(MAKE) -C nativent distinstall
+nativent_zipinstall:
+	$(MAKE) -C nativent zipinstall
+nativent_zipsourceinstall:
+	$(MAKE) -C nativent zipsourceinstall
+nativent_zipexampleinstall:
+	$(MAKE) -C nativent zipexampleinstall
+nativent_zipdistinstall:
+	$(MAKE) -C nativent zipdistinstall
+nativent_clean:
+	$(MAKE) -C nativent clean
+nativent_distclean:
+	$(MAKE) -C nativent distclean
+nativent_cleanall:
+	$(MAKE) -C nativent cleanall
+nativent_info:
+	$(MAKE) -C nativent info
+nativent_makefiles:
+	$(MAKE) -C nativent makefiles
+nativent:
+	$(MAKE) -C nativent all
+.PHONY: nativent_all nativent_debug nativent_smart nativent_release nativent_units nativent_examples nativent_shared nativent_install nativent_sourceinstall nativent_exampleinstall nativent_distinstall nativent_zipinstall nativent_zipsourceinstall nativent_zipexampleinstall nativent_zipdistinstall nativent_clean nativent_distclean nativent_cleanall nativent_info nativent_makefiles nativent
+endif
+ifdef TARGET_DIRS_ANDROID
+android_all:
+	$(MAKE) -C android all
+android_debug:
+	$(MAKE) -C android debug
+android_smart:
+	$(MAKE) -C android smart
+android_release:
+	$(MAKE) -C android release
+android_units:
+	$(MAKE) -C android units
+android_examples:
+	$(MAKE) -C android examples
+android_shared:
+	$(MAKE) -C android shared
+android_install:
+	$(MAKE) -C android install
+android_sourceinstall:
+	$(MAKE) -C android sourceinstall
+android_exampleinstall:
+	$(MAKE) -C android exampleinstall
+android_distinstall:
+	$(MAKE) -C android distinstall
+android_zipinstall:
+	$(MAKE) -C android zipinstall
+android_zipsourceinstall:
+	$(MAKE) -C android zipsourceinstall
+android_zipexampleinstall:
+	$(MAKE) -C android zipexampleinstall
+android_zipdistinstall:
+	$(MAKE) -C android zipdistinstall
+android_clean:
+	$(MAKE) -C android clean
+android_distclean:
+	$(MAKE) -C android distclean
+android_cleanall:
+	$(MAKE) -C android cleanall
+android_info:
+	$(MAKE) -C android info
+android_makefiles:
+	$(MAKE) -C android makefiles
+android:
+	$(MAKE) -C android all
+.PHONY: android_all android_debug android_smart android_release android_units android_examples android_shared android_install android_sourceinstall android_exampleinstall android_distinstall android_zipinstall android_zipsourceinstall android_zipexampleinstall android_zipdistinstall android_clean android_distclean android_cleanall android_info android_makefiles android
+endif
+ifdef TARGET_DIRS_AROS
+aros_all:
+	$(MAKE) -C aros all
+aros_debug:
+	$(MAKE) -C aros debug
+aros_smart:
+	$(MAKE) -C aros smart
+aros_release:
+	$(MAKE) -C aros release
+aros_units:
+	$(MAKE) -C aros units
+aros_examples:
+	$(MAKE) -C aros examples
+aros_shared:
+	$(MAKE) -C aros shared
+aros_install:
+	$(MAKE) -C aros install
+aros_sourceinstall:
+	$(MAKE) -C aros sourceinstall
+aros_exampleinstall:
+	$(MAKE) -C aros exampleinstall
+aros_distinstall:
+	$(MAKE) -C aros distinstall
+aros_zipinstall:
+	$(MAKE) -C aros zipinstall
+aros_zipsourceinstall:
+	$(MAKE) -C aros zipsourceinstall
+aros_zipexampleinstall:
+	$(MAKE) -C aros zipexampleinstall
+aros_zipdistinstall:
+	$(MAKE) -C aros zipdistinstall
+aros_clean:
+	$(MAKE) -C aros clean
+aros_distclean:
+	$(MAKE) -C aros distclean
+aros_cleanall:
+	$(MAKE) -C aros cleanall
+aros_info:
+	$(MAKE) -C aros info
+aros_makefiles:
+	$(MAKE) -C aros makefiles
+aros:
+	$(MAKE) -C aros all
+.PHONY: aros_all aros_debug aros_smart aros_release aros_units aros_examples aros_shared aros_install aros_sourceinstall aros_exampleinstall aros_distinstall aros_zipinstall aros_zipsourceinstall aros_zipexampleinstall aros_zipdistinstall aros_clean aros_distclean aros_cleanall aros_info aros_makefiles aros
+endif
+ifdef TARGET_DIRS_AMIGA
+amiga_all:
+	$(MAKE) -C amiga all
+amiga_debug:
+	$(MAKE) -C amiga debug
+amiga_smart:
+	$(MAKE) -C amiga smart
+amiga_release:
+	$(MAKE) -C amiga release
+amiga_units:
+	$(MAKE) -C amiga units
+amiga_examples:
+	$(MAKE) -C amiga examples
+amiga_shared:
+	$(MAKE) -C amiga shared
+amiga_install:
+	$(MAKE) -C amiga install
+amiga_sourceinstall:
+	$(MAKE) -C amiga sourceinstall
+amiga_exampleinstall:
+	$(MAKE) -C amiga exampleinstall
+amiga_distinstall:
+	$(MAKE) -C amiga distinstall
+amiga_zipinstall:
+	$(MAKE) -C amiga zipinstall
+amiga_zipsourceinstall:
+	$(MAKE) -C amiga zipsourceinstall
+amiga_zipexampleinstall:
+	$(MAKE) -C amiga zipexampleinstall
+amiga_zipdistinstall:
+	$(MAKE) -C amiga zipdistinstall
+amiga_clean:
+	$(MAKE) -C amiga clean
+amiga_distclean:
+	$(MAKE) -C amiga distclean
+amiga_cleanall:
+	$(MAKE) -C amiga cleanall
+amiga_info:
+	$(MAKE) -C amiga info
+amiga_makefiles:
+	$(MAKE) -C amiga makefiles
+amiga:
+	$(MAKE) -C amiga all
+.PHONY: amiga_all amiga_debug amiga_smart amiga_release amiga_units amiga_examples amiga_shared amiga_install amiga_sourceinstall amiga_exampleinstall amiga_distinstall amiga_zipinstall amiga_zipsourceinstall amiga_zipexampleinstall amiga_zipdistinstall amiga_clean amiga_distclean amiga_cleanall amiga_info amiga_makefiles amiga
+endif
+ifdef TARGET_DIRS_ATARI
+atari_all:
+	$(MAKE) -C atari all
+atari_debug:
+	$(MAKE) -C atari debug
+atari_smart:
+	$(MAKE) -C atari smart
+atari_release:
+	$(MAKE) -C atari release
+atari_units:
+	$(MAKE) -C atari units
+atari_examples:
+	$(MAKE) -C atari examples
+atari_shared:
+	$(MAKE) -C atari shared
+atari_install:
+	$(MAKE) -C atari install
+atari_sourceinstall:
+	$(MAKE) -C atari sourceinstall
+atari_exampleinstall:
+	$(MAKE) -C atari exampleinstall
+atari_distinstall:
+	$(MAKE) -C atari distinstall
+atari_zipinstall:
+	$(MAKE) -C atari zipinstall
+atari_zipsourceinstall:
+	$(MAKE) -C atari zipsourceinstall
+atari_zipexampleinstall:
+	$(MAKE) -C atari zipexampleinstall
+atari_zipdistinstall:
+	$(MAKE) -C atari zipdistinstall
+atari_clean:
+	$(MAKE) -C atari clean
+atari_distclean:
+	$(MAKE) -C atari distclean
+atari_cleanall:
+	$(MAKE) -C atari cleanall
+atari_info:
+	$(MAKE) -C atari info
+atari_makefiles:
+	$(MAKE) -C atari makefiles
+atari:
+	$(MAKE) -C atari all
+.PHONY: atari_all atari_debug atari_smart atari_release atari_units atari_examples atari_shared atari_install atari_sourceinstall atari_exampleinstall atari_distinstall atari_zipinstall atari_zipsourceinstall atari_zipexampleinstall atari_zipdistinstall atari_clean atari_distclean atari_cleanall atari_info atari_makefiles atari
+endif
+ifdef TARGET_DIRS_PALMOS
+palmos_all:
+	$(MAKE) -C palmos all
+palmos_debug:
+	$(MAKE) -C palmos debug
+palmos_smart:
+	$(MAKE) -C palmos smart
+palmos_release:
+	$(MAKE) -C palmos release
+palmos_units:
+	$(MAKE) -C palmos units
+palmos_examples:
+	$(MAKE) -C palmos examples
+palmos_shared:
+	$(MAKE) -C palmos shared
+palmos_install:
+	$(MAKE) -C palmos install
+palmos_sourceinstall:
+	$(MAKE) -C palmos sourceinstall
+palmos_exampleinstall:
+	$(MAKE) -C palmos exampleinstall
+palmos_distinstall:
+	$(MAKE) -C palmos distinstall
+palmos_zipinstall:
+	$(MAKE) -C palmos zipinstall
+palmos_zipsourceinstall:
+	$(MAKE) -C palmos zipsourceinstall
+palmos_zipexampleinstall:
+	$(MAKE) -C palmos zipexampleinstall
+palmos_zipdistinstall:
+	$(MAKE) -C palmos zipdistinstall
+palmos_clean:
+	$(MAKE) -C palmos clean
+palmos_distclean:
+	$(MAKE) -C palmos distclean
+palmos_cleanall:
+	$(MAKE) -C palmos cleanall
+palmos_info:
+	$(MAKE) -C palmos info
+palmos_makefiles:
+	$(MAKE) -C palmos makefiles
+palmos:
+	$(MAKE) -C palmos all
+.PHONY: palmos_all palmos_debug palmos_smart palmos_release palmos_units palmos_examples palmos_shared palmos_install palmos_sourceinstall palmos_exampleinstall palmos_distinstall palmos_zipinstall palmos_zipsourceinstall palmos_zipexampleinstall palmos_zipdistinstall palmos_clean palmos_distclean palmos_cleanall palmos_info palmos_makefiles palmos
+endif
+ifdef TARGET_DIRS_MACOS
+macos_all:
+	$(MAKE) -C macos all
+macos_debug:
+	$(MAKE) -C macos debug
+macos_smart:
+	$(MAKE) -C macos smart
+macos_release:
+	$(MAKE) -C macos release
+macos_units:
+	$(MAKE) -C macos units
+macos_examples:
+	$(MAKE) -C macos examples
+macos_shared:
+	$(MAKE) -C macos shared
+macos_install:
+	$(MAKE) -C macos install
+macos_sourceinstall:
+	$(MAKE) -C macos sourceinstall
+macos_exampleinstall:
+	$(MAKE) -C macos exampleinstall
+macos_distinstall:
+	$(MAKE) -C macos distinstall
+macos_zipinstall:
+	$(MAKE) -C macos zipinstall
+macos_zipsourceinstall:
+	$(MAKE) -C macos zipsourceinstall
+macos_zipexampleinstall:
+	$(MAKE) -C macos zipexampleinstall
+macos_zipdistinstall:
+	$(MAKE) -C macos zipdistinstall
+macos_clean:
+	$(MAKE) -C macos clean
+macos_distclean:
+	$(MAKE) -C macos distclean
+macos_cleanall:
+	$(MAKE) -C macos cleanall
+macos_info:
+	$(MAKE) -C macos info
+macos_makefiles:
+	$(MAKE) -C macos makefiles
+macos:
+	$(MAKE) -C macos all
+.PHONY: macos_all macos_debug macos_smart macos_release macos_units macos_examples macos_shared macos_install macos_sourceinstall macos_exampleinstall macos_distinstall macos_zipinstall macos_zipsourceinstall macos_zipexampleinstall macos_zipdistinstall macos_clean macos_distclean macos_cleanall macos_info macos_makefiles macos
+endif
+ifdef TARGET_DIRS_SINCLAIRQL
+sinclairql_all:
+	$(MAKE) -C sinclairql all
+sinclairql_debug:
+	$(MAKE) -C sinclairql debug
+sinclairql_smart:
+	$(MAKE) -C sinclairql smart
+sinclairql_release:
+	$(MAKE) -C sinclairql release
+sinclairql_units:
+	$(MAKE) -C sinclairql units
+sinclairql_examples:
+	$(MAKE) -C sinclairql examples
+sinclairql_shared:
+	$(MAKE) -C sinclairql shared
+sinclairql_install:
+	$(MAKE) -C sinclairql install
+sinclairql_sourceinstall:
+	$(MAKE) -C sinclairql sourceinstall
+sinclairql_exampleinstall:
+	$(MAKE) -C sinclairql exampleinstall
+sinclairql_distinstall:
+	$(MAKE) -C sinclairql distinstall
+sinclairql_zipinstall:
+	$(MAKE) -C sinclairql zipinstall
+sinclairql_zipsourceinstall:
+	$(MAKE) -C sinclairql zipsourceinstall
+sinclairql_zipexampleinstall:
+	$(MAKE) -C sinclairql zipexampleinstall
+sinclairql_zipdistinstall:
+	$(MAKE) -C sinclairql zipdistinstall
+sinclairql_clean:
+	$(MAKE) -C sinclairql clean
+sinclairql_distclean:
+	$(MAKE) -C sinclairql distclean
+sinclairql_cleanall:
+	$(MAKE) -C sinclairql cleanall
+sinclairql_info:
+	$(MAKE) -C sinclairql info
+sinclairql_makefiles:
+	$(MAKE) -C sinclairql makefiles
+sinclairql:
+	$(MAKE) -C sinclairql all
+.PHONY: sinclairql_all sinclairql_debug sinclairql_smart sinclairql_release sinclairql_units sinclairql_examples sinclairql_shared sinclairql_install sinclairql_sourceinstall sinclairql_exampleinstall sinclairql_distinstall sinclairql_zipinstall sinclairql_zipsourceinstall sinclairql_zipexampleinstall sinclairql_zipdistinstall sinclairql_clean sinclairql_distclean sinclairql_cleanall sinclairql_info sinclairql_makefiles sinclairql
+endif
+ifdef TARGET_DIRS_MORPHOS
+morphos_all:
+	$(MAKE) -C morphos all
+morphos_debug:
+	$(MAKE) -C morphos debug
+morphos_smart:
+	$(MAKE) -C morphos smart
+morphos_release:
+	$(MAKE) -C morphos release
+morphos_units:
+	$(MAKE) -C morphos units
+morphos_examples:
+	$(MAKE) -C morphos examples
+morphos_shared:
+	$(MAKE) -C morphos shared
+morphos_install:
+	$(MAKE) -C morphos install
+morphos_sourceinstall:
+	$(MAKE) -C morphos sourceinstall
+morphos_exampleinstall:
+	$(MAKE) -C morphos exampleinstall
+morphos_distinstall:
+	$(MAKE) -C morphos distinstall
+morphos_zipinstall:
+	$(MAKE) -C morphos zipinstall
+morphos_zipsourceinstall:
+	$(MAKE) -C morphos zipsourceinstall
+morphos_zipexampleinstall:
+	$(MAKE) -C morphos zipexampleinstall
+morphos_zipdistinstall:
+	$(MAKE) -C morphos zipdistinstall
+morphos_clean:
+	$(MAKE) -C morphos clean
+morphos_distclean:
+	$(MAKE) -C morphos distclean
+morphos_cleanall:
+	$(MAKE) -C morphos cleanall
+morphos_info:
+	$(MAKE) -C morphos info
+morphos_makefiles:
+	$(MAKE) -C morphos makefiles
+morphos:
+	$(MAKE) -C morphos all
+.PHONY: morphos_all morphos_debug morphos_smart morphos_release morphos_units morphos_examples morphos_shared morphos_install morphos_sourceinstall morphos_exampleinstall morphos_distinstall morphos_zipinstall morphos_zipsourceinstall morphos_zipexampleinstall morphos_zipdistinstall morphos_clean morphos_distclean morphos_cleanall morphos_info morphos_makefiles morphos
+endif
+ifdef TARGET_DIRS_WII
+wii_all:
+	$(MAKE) -C wii all
+wii_debug:
+	$(MAKE) -C wii debug
+wii_smart:
+	$(MAKE) -C wii smart
+wii_release:
+	$(MAKE) -C wii release
+wii_units:
+	$(MAKE) -C wii units
+wii_examples:
+	$(MAKE) -C wii examples
+wii_shared:
+	$(MAKE) -C wii shared
+wii_install:
+	$(MAKE) -C wii install
+wii_sourceinstall:
+	$(MAKE) -C wii sourceinstall
+wii_exampleinstall:
+	$(MAKE) -C wii exampleinstall
+wii_distinstall:
+	$(MAKE) -C wii distinstall
+wii_zipinstall:
+	$(MAKE) -C wii zipinstall
+wii_zipsourceinstall:
+	$(MAKE) -C wii zipsourceinstall
+wii_zipexampleinstall:
+	$(MAKE) -C wii zipexampleinstall
+wii_zipdistinstall:
+	$(MAKE) -C wii zipdistinstall
+wii_clean:
+	$(MAKE) -C wii clean
+wii_distclean:
+	$(MAKE) -C wii distclean
+wii_cleanall:
+	$(MAKE) -C wii cleanall
+wii_info:
+	$(MAKE) -C wii info
+wii_makefiles:
+	$(MAKE) -C wii makefiles
+wii:
+	$(MAKE) -C wii all
+.PHONY: wii_all wii_debug wii_smart wii_release wii_units wii_examples wii_shared wii_install wii_sourceinstall wii_exampleinstall wii_distinstall wii_zipinstall wii_zipsourceinstall wii_zipexampleinstall wii_zipdistinstall wii_clean wii_distclean wii_cleanall wii_info wii_makefiles wii
+endif
+ifdef TARGET_DIRS_AIX
+aix_all:
+	$(MAKE) -C aix all
+aix_debug:
+	$(MAKE) -C aix debug
+aix_smart:
+	$(MAKE) -C aix smart
+aix_release:
+	$(MAKE) -C aix release
+aix_units:
+	$(MAKE) -C aix units
+aix_examples:
+	$(MAKE) -C aix examples
+aix_shared:
+	$(MAKE) -C aix shared
+aix_install:
+	$(MAKE) -C aix install
+aix_sourceinstall:
+	$(MAKE) -C aix sourceinstall
+aix_exampleinstall:
+	$(MAKE) -C aix exampleinstall
+aix_distinstall:
+	$(MAKE) -C aix distinstall
+aix_zipinstall:
+	$(MAKE) -C aix zipinstall
+aix_zipsourceinstall:
+	$(MAKE) -C aix zipsourceinstall
+aix_zipexampleinstall:
+	$(MAKE) -C aix zipexampleinstall
+aix_zipdistinstall:
+	$(MAKE) -C aix zipdistinstall
+aix_clean:
+	$(MAKE) -C aix clean
+aix_distclean:
+	$(MAKE) -C aix distclean
+aix_cleanall:
+	$(MAKE) -C aix cleanall
+aix_info:
+	$(MAKE) -C aix info
+aix_makefiles:
+	$(MAKE) -C aix makefiles
+aix:
+	$(MAKE) -C aix all
+.PHONY: aix_all aix_debug aix_smart aix_release aix_units aix_examples aix_shared aix_install aix_sourceinstall aix_exampleinstall aix_distinstall aix_zipinstall aix_zipsourceinstall aix_zipexampleinstall aix_zipdistinstall aix_clean aix_distclean aix_cleanall aix_info aix_makefiles aix
+endif
+ifdef TARGET_DIRS_WIN64
+win64_all:
+	$(MAKE) -C win64 all
+win64_debug:
+	$(MAKE) -C win64 debug
+win64_smart:
+	$(MAKE) -C win64 smart
+win64_release:
+	$(MAKE) -C win64 release
+win64_units:
+	$(MAKE) -C win64 units
+win64_examples:
+	$(MAKE) -C win64 examples
+win64_shared:
+	$(MAKE) -C win64 shared
+win64_install:
+	$(MAKE) -C win64 install
+win64_sourceinstall:
+	$(MAKE) -C win64 sourceinstall
+win64_exampleinstall:
+	$(MAKE) -C win64 exampleinstall
+win64_distinstall:
+	$(MAKE) -C win64 distinstall
+win64_zipinstall:
+	$(MAKE) -C win64 zipinstall
+win64_zipsourceinstall:
+	$(MAKE) -C win64 zipsourceinstall
+win64_zipexampleinstall:
+	$(MAKE) -C win64 zipexampleinstall
+win64_zipdistinstall:
+	$(MAKE) -C win64 zipdistinstall
+win64_clean:
+	$(MAKE) -C win64 clean
+win64_distclean:
+	$(MAKE) -C win64 distclean
+win64_cleanall:
+	$(MAKE) -C win64 cleanall
+win64_info:
+	$(MAKE) -C win64 info
+win64_makefiles:
+	$(MAKE) -C win64 makefiles
+win64:
+	$(MAKE) -C win64 all
+.PHONY: win64_all win64_debug win64_smart win64_release win64_units win64_examples win64_shared win64_install win64_sourceinstall win64_exampleinstall win64_distinstall win64_zipinstall win64_zipsourceinstall win64_zipexampleinstall win64_zipdistinstall win64_clean win64_distclean win64_cleanall win64_info win64_makefiles win64
+endif
+ifdef TARGET_DIRS_DRAGONFLY
+dragonfly_all:
+	$(MAKE) -C dragonfly all
+dragonfly_debug:
+	$(MAKE) -C dragonfly debug
+dragonfly_smart:
+	$(MAKE) -C dragonfly smart
+dragonfly_release:
+	$(MAKE) -C dragonfly release
+dragonfly_units:
+	$(MAKE) -C dragonfly units
+dragonfly_examples:
+	$(MAKE) -C dragonfly examples
+dragonfly_shared:
+	$(MAKE) -C dragonfly shared
+dragonfly_install:
+	$(MAKE) -C dragonfly install
+dragonfly_sourceinstall:
+	$(MAKE) -C dragonfly sourceinstall
+dragonfly_exampleinstall:
+	$(MAKE) -C dragonfly exampleinstall
+dragonfly_distinstall:
+	$(MAKE) -C dragonfly distinstall
+dragonfly_zipinstall:
+	$(MAKE) -C dragonfly zipinstall
+dragonfly_zipsourceinstall:
+	$(MAKE) -C dragonfly zipsourceinstall
+dragonfly_zipexampleinstall:
+	$(MAKE) -C dragonfly zipexampleinstall
+dragonfly_zipdistinstall:
+	$(MAKE) -C dragonfly zipdistinstall
+dragonfly_clean:
+	$(MAKE) -C dragonfly clean
+dragonfly_distclean:
+	$(MAKE) -C dragonfly distclean
+dragonfly_cleanall:
+	$(MAKE) -C dragonfly cleanall
+dragonfly_info:
+	$(MAKE) -C dragonfly info
+dragonfly_makefiles:
+	$(MAKE) -C dragonfly makefiles
+dragonfly:
+	$(MAKE) -C dragonfly all
+.PHONY: dragonfly_all dragonfly_debug dragonfly_smart dragonfly_release dragonfly_units dragonfly_examples dragonfly_shared dragonfly_install dragonfly_sourceinstall dragonfly_exampleinstall dragonfly_distinstall dragonfly_zipinstall dragonfly_zipsourceinstall dragonfly_zipexampleinstall dragonfly_zipdistinstall dragonfly_clean dragonfly_distclean dragonfly_cleanall dragonfly_info dragonfly_makefiles dragonfly
+endif
+ifdef TARGET_DIRS_GBA
+gba_all:
+	$(MAKE) -C gba all
+gba_debug:
+	$(MAKE) -C gba debug
+gba_smart:
+	$(MAKE) -C gba smart
+gba_release:
+	$(MAKE) -C gba release
+gba_units:
+	$(MAKE) -C gba units
+gba_examples:
+	$(MAKE) -C gba examples
+gba_shared:
+	$(MAKE) -C gba shared
+gba_install:
+	$(MAKE) -C gba install
+gba_sourceinstall:
+	$(MAKE) -C gba sourceinstall
+gba_exampleinstall:
+	$(MAKE) -C gba exampleinstall
+gba_distinstall:
+	$(MAKE) -C gba distinstall
+gba_zipinstall:
+	$(MAKE) -C gba zipinstall
+gba_zipsourceinstall:
+	$(MAKE) -C gba zipsourceinstall
+gba_zipexampleinstall:
+	$(MAKE) -C gba zipexampleinstall
+gba_zipdistinstall:
+	$(MAKE) -C gba zipdistinstall
+gba_clean:
+	$(MAKE) -C gba clean
+gba_distclean:
+	$(MAKE) -C gba distclean
+gba_cleanall:
+	$(MAKE) -C gba cleanall
+gba_info:
+	$(MAKE) -C gba info
+gba_makefiles:
+	$(MAKE) -C gba makefiles
+gba:
+	$(MAKE) -C gba all
+.PHONY: gba_all gba_debug gba_smart gba_release gba_units gba_examples gba_shared gba_install gba_sourceinstall gba_exampleinstall gba_distinstall gba_zipinstall gba_zipsourceinstall gba_zipexampleinstall gba_zipdistinstall gba_clean gba_distclean gba_cleanall gba_info gba_makefiles gba
+endif
+ifdef TARGET_DIRS_NDS
+nds_all:
+	$(MAKE) -C nds all
+nds_debug:
+	$(MAKE) -C nds debug
+nds_smart:
+	$(MAKE) -C nds smart
+nds_release:
+	$(MAKE) -C nds release
+nds_units:
+	$(MAKE) -C nds units
+nds_examples:
+	$(MAKE) -C nds examples
+nds_shared:
+	$(MAKE) -C nds shared
+nds_install:
+	$(MAKE) -C nds install
+nds_sourceinstall:
+	$(MAKE) -C nds sourceinstall
+nds_exampleinstall:
+	$(MAKE) -C nds exampleinstall
+nds_distinstall:
+	$(MAKE) -C nds distinstall
+nds_zipinstall:
+	$(MAKE) -C nds zipinstall
+nds_zipsourceinstall:
+	$(MAKE) -C nds zipsourceinstall
+nds_zipexampleinstall:
+	$(MAKE) -C nds zipexampleinstall
+nds_zipdistinstall:
+	$(MAKE) -C nds zipdistinstall
+nds_clean:
+	$(MAKE) -C nds clean
+nds_distclean:
+	$(MAKE) -C nds distclean
+nds_cleanall:
+	$(MAKE) -C nds cleanall
+nds_info:
+	$(MAKE) -C nds info
+nds_makefiles:
+	$(MAKE) -C nds makefiles
+nds:
+	$(MAKE) -C nds all
+.PHONY: nds_all nds_debug nds_smart nds_release nds_units nds_examples nds_shared nds_install nds_sourceinstall nds_exampleinstall nds_distinstall nds_zipinstall nds_zipsourceinstall nds_zipexampleinstall nds_zipdistinstall nds_clean nds_distclean nds_cleanall nds_info nds_makefiles nds
+endif
+ifdef TARGET_DIRS_FREERTOS
+freertos_all:
+	$(MAKE) -C freertos all
+freertos_debug:
+	$(MAKE) -C freertos debug
+freertos_smart:
+	$(MAKE) -C freertos smart
+freertos_release:
+	$(MAKE) -C freertos release
+freertos_units:
+	$(MAKE) -C freertos units
+freertos_examples:
+	$(MAKE) -C freertos examples
+freertos_shared:
+	$(MAKE) -C freertos shared
+freertos_install:
+	$(MAKE) -C freertos install
+freertos_sourceinstall:
+	$(MAKE) -C freertos sourceinstall
+freertos_exampleinstall:
+	$(MAKE) -C freertos exampleinstall
+freertos_distinstall:
+	$(MAKE) -C freertos distinstall
+freertos_zipinstall:
+	$(MAKE) -C freertos zipinstall
+freertos_zipsourceinstall:
+	$(MAKE) -C freertos zipsourceinstall
+freertos_zipexampleinstall:
+	$(MAKE) -C freertos zipexampleinstall
+freertos_zipdistinstall:
+	$(MAKE) -C freertos zipdistinstall
+freertos_clean:
+	$(MAKE) -C freertos clean
+freertos_distclean:
+	$(MAKE) -C freertos distclean
+freertos_cleanall:
+	$(MAKE) -C freertos cleanall
+freertos_info:
+	$(MAKE) -C freertos info
+freertos_makefiles:
+	$(MAKE) -C freertos makefiles
+freertos:
+	$(MAKE) -C freertos all
+.PHONY: freertos_all freertos_debug freertos_smart freertos_release freertos_units freertos_examples freertos_shared freertos_install freertos_sourceinstall freertos_exampleinstall freertos_distinstall freertos_zipinstall freertos_zipsourceinstall freertos_zipexampleinstall freertos_zipdistinstall freertos_clean freertos_distclean freertos_cleanall freertos_info freertos_makefiles freertos
+endif
+ifdef TARGET_DIRS_JAVA
+java_all:
+	$(MAKE) -C java all
+java_debug:
+	$(MAKE) -C java debug
+java_smart:
+	$(MAKE) -C java smart
+java_release:
+	$(MAKE) -C java release
+java_units:
+	$(MAKE) -C java units
+java_examples:
+	$(MAKE) -C java examples
+java_shared:
+	$(MAKE) -C java shared
+java_install:
+	$(MAKE) -C java install
+java_sourceinstall:
+	$(MAKE) -C java sourceinstall
+java_exampleinstall:
+	$(MAKE) -C java exampleinstall
+java_distinstall:
+	$(MAKE) -C java distinstall
+java_zipinstall:
+	$(MAKE) -C java zipinstall
+java_zipsourceinstall:
+	$(MAKE) -C java zipsourceinstall
+java_zipexampleinstall:
+	$(MAKE) -C java zipexampleinstall
+java_zipdistinstall:
+	$(MAKE) -C java zipdistinstall
+java_clean:
+	$(MAKE) -C java clean
+java_distclean:
+	$(MAKE) -C java distclean
+java_cleanall:
+	$(MAKE) -C java cleanall
+java_info:
+	$(MAKE) -C java info
+java_makefiles:
+	$(MAKE) -C java makefiles
+java:
+	$(MAKE) -C java all
+.PHONY: java_all java_debug java_smart java_release java_units java_examples java_shared java_install java_sourceinstall java_exampleinstall java_distinstall java_zipinstall java_zipsourceinstall java_zipexampleinstall java_zipdistinstall java_clean java_distclean java_cleanall java_info java_makefiles java
+endif
+ifdef TARGET_DIRS_ANDROID/JVM
+android/jvm_all:
+	$(MAKE) -C android/jvm all
+android/jvm_debug:
+	$(MAKE) -C android/jvm debug
+android/jvm_smart:
+	$(MAKE) -C android/jvm smart
+android/jvm_release:
+	$(MAKE) -C android/jvm release
+android/jvm_units:
+	$(MAKE) -C android/jvm units
+android/jvm_examples:
+	$(MAKE) -C android/jvm examples
+android/jvm_shared:
+	$(MAKE) -C android/jvm shared
+android/jvm_install:
+	$(MAKE) -C android/jvm install
+android/jvm_sourceinstall:
+	$(MAKE) -C android/jvm sourceinstall
+android/jvm_exampleinstall:
+	$(MAKE) -C android/jvm exampleinstall
+android/jvm_distinstall:
+	$(MAKE) -C android/jvm distinstall
+android/jvm_zipinstall:
+	$(MAKE) -C android/jvm zipinstall
+android/jvm_zipsourceinstall:
+	$(MAKE) -C android/jvm zipsourceinstall
+android/jvm_zipexampleinstall:
+	$(MAKE) -C android/jvm zipexampleinstall
+android/jvm_zipdistinstall:
+	$(MAKE) -C android/jvm zipdistinstall
+android/jvm_clean:
+	$(MAKE) -C android/jvm clean
+android/jvm_distclean:
+	$(MAKE) -C android/jvm distclean
+android/jvm_cleanall:
+	$(MAKE) -C android/jvm cleanall
+android/jvm_info:
+	$(MAKE) -C android/jvm info
+android/jvm_makefiles:
+	$(MAKE) -C android/jvm makefiles
+android/jvm:
+	$(MAKE) -C android/jvm all
+.PHONY: android/jvm_all android/jvm_debug android/jvm_smart android/jvm_release android/jvm_units android/jvm_examples android/jvm_shared android/jvm_install android/jvm_sourceinstall android/jvm_exampleinstall android/jvm_distinstall android/jvm_zipinstall android/jvm_zipsourceinstall android/jvm_zipexampleinstall android/jvm_zipdistinstall android/jvm_clean android/jvm_distclean android/jvm_cleanall android/jvm_info android/jvm_makefiles android/jvm
+endif
+ifdef TARGET_DIRS_MSDOS
+msdos_all:
+	$(MAKE) -C msdos all
+msdos_debug:
+	$(MAKE) -C msdos debug
+msdos_smart:
+	$(MAKE) -C msdos smart
+msdos_release:
+	$(MAKE) -C msdos release
+msdos_units:
+	$(MAKE) -C msdos units
+msdos_examples:
+	$(MAKE) -C msdos examples
+msdos_shared:
+	$(MAKE) -C msdos shared
+msdos_install:
+	$(MAKE) -C msdos install
+msdos_sourceinstall:
+	$(MAKE) -C msdos sourceinstall
+msdos_exampleinstall:
+	$(MAKE) -C msdos exampleinstall
+msdos_distinstall:
+	$(MAKE) -C msdos distinstall
+msdos_zipinstall:
+	$(MAKE) -C msdos zipinstall
+msdos_zipsourceinstall:
+	$(MAKE) -C msdos zipsourceinstall
+msdos_zipexampleinstall:
+	$(MAKE) -C msdos zipexampleinstall
+msdos_zipdistinstall:
+	$(MAKE) -C msdos zipdistinstall
+msdos_clean:
+	$(MAKE) -C msdos clean
+msdos_distclean:
+	$(MAKE) -C msdos distclean
+msdos_cleanall:
+	$(MAKE) -C msdos cleanall
+msdos_info:
+	$(MAKE) -C msdos info
+msdos_makefiles:
+	$(MAKE) -C msdos makefiles
+msdos:
+	$(MAKE) -C msdos all
+.PHONY: msdos_all msdos_debug msdos_smart msdos_release msdos_units msdos_examples msdos_shared msdos_install msdos_sourceinstall msdos_exampleinstall msdos_distinstall msdos_zipinstall msdos_zipsourceinstall msdos_zipexampleinstall msdos_zipdistinstall msdos_clean msdos_distclean msdos_cleanall msdos_info msdos_makefiles msdos
+endif
+ifdef TARGET_DIRS_WIN16
+win16_all:
+	$(MAKE) -C win16 all
+win16_debug:
+	$(MAKE) -C win16 debug
+win16_smart:
+	$(MAKE) -C win16 smart
+win16_release:
+	$(MAKE) -C win16 release
+win16_units:
+	$(MAKE) -C win16 units
+win16_examples:
+	$(MAKE) -C win16 examples
+win16_shared:
+	$(MAKE) -C win16 shared
+win16_install:
+	$(MAKE) -C win16 install
+win16_sourceinstall:
+	$(MAKE) -C win16 sourceinstall
+win16_exampleinstall:
+	$(MAKE) -C win16 exampleinstall
+win16_distinstall:
+	$(MAKE) -C win16 distinstall
+win16_zipinstall:
+	$(MAKE) -C win16 zipinstall
+win16_zipsourceinstall:
+	$(MAKE) -C win16 zipsourceinstall
+win16_zipexampleinstall:
+	$(MAKE) -C win16 zipexampleinstall
+win16_zipdistinstall:
+	$(MAKE) -C win16 zipdistinstall
+win16_clean:
+	$(MAKE) -C win16 clean
+win16_distclean:
+	$(MAKE) -C win16 distclean
+win16_cleanall:
+	$(MAKE) -C win16 cleanall
+win16_info:
+	$(MAKE) -C win16 info
+win16_makefiles:
+	$(MAKE) -C win16 makefiles
+win16:
+	$(MAKE) -C win16 all
+.PHONY: win16_all win16_debug win16_smart win16_release win16_units win16_examples win16_shared win16_install win16_sourceinstall win16_exampleinstall win16_distinstall win16_zipinstall win16_zipsourceinstall win16_zipexampleinstall win16_zipdistinstall win16_clean win16_distclean win16_cleanall win16_info win16_makefiles win16
+endif
+ifdef TARGET_DIRS_WASI
+wasi_all:
+	$(MAKE) -C wasi all
+wasi_debug:
+	$(MAKE) -C wasi debug
+wasi_smart:
+	$(MAKE) -C wasi smart
+wasi_release:
+	$(MAKE) -C wasi release
+wasi_units:
+	$(MAKE) -C wasi units
+wasi_examples:
+	$(MAKE) -C wasi examples
+wasi_shared:
+	$(MAKE) -C wasi shared
+wasi_install:
+	$(MAKE) -C wasi install
+wasi_sourceinstall:
+	$(MAKE) -C wasi sourceinstall
+wasi_exampleinstall:
+	$(MAKE) -C wasi exampleinstall
+wasi_distinstall:
+	$(MAKE) -C wasi distinstall
+wasi_zipinstall:
+	$(MAKE) -C wasi zipinstall
+wasi_zipsourceinstall:
+	$(MAKE) -C wasi zipsourceinstall
+wasi_zipexampleinstall:
+	$(MAKE) -C wasi zipexampleinstall
+wasi_zipdistinstall:
+	$(MAKE) -C wasi zipdistinstall
+wasi_clean:
+	$(MAKE) -C wasi clean
+wasi_distclean:
+	$(MAKE) -C wasi distclean
+wasi_cleanall:
+	$(MAKE) -C wasi cleanall
+wasi_info:
+	$(MAKE) -C wasi info
+wasi_makefiles:
+	$(MAKE) -C wasi makefiles
+wasi:
+	$(MAKE) -C wasi all
+.PHONY: wasi_all wasi_debug wasi_smart wasi_release wasi_units wasi_examples wasi_shared wasi_install wasi_sourceinstall wasi_exampleinstall wasi_distinstall wasi_zipinstall wasi_zipsourceinstall wasi_zipexampleinstall wasi_zipdistinstall wasi_clean wasi_distclean wasi_cleanall wasi_info wasi_makefiles wasi
+endif
+ifdef TARGET_DIRS_ZXSPECTRUM
+zxspectrum_all:
+	$(MAKE) -C zxspectrum all
+zxspectrum_debug:
+	$(MAKE) -C zxspectrum debug
+zxspectrum_smart:
+	$(MAKE) -C zxspectrum smart
+zxspectrum_release:
+	$(MAKE) -C zxspectrum release
+zxspectrum_units:
+	$(MAKE) -C zxspectrum units
+zxspectrum_examples:
+	$(MAKE) -C zxspectrum examples
+zxspectrum_shared:
+	$(MAKE) -C zxspectrum shared
+zxspectrum_install:
+	$(MAKE) -C zxspectrum install
+zxspectrum_sourceinstall:
+	$(MAKE) -C zxspectrum sourceinstall
+zxspectrum_exampleinstall:
+	$(MAKE) -C zxspectrum exampleinstall
+zxspectrum_distinstall:
+	$(MAKE) -C zxspectrum distinstall
+zxspectrum_zipinstall:
+	$(MAKE) -C zxspectrum zipinstall
+zxspectrum_zipsourceinstall:
+	$(MAKE) -C zxspectrum zipsourceinstall
+zxspectrum_zipexampleinstall:
+	$(MAKE) -C zxspectrum zipexampleinstall
+zxspectrum_zipdistinstall:
+	$(MAKE) -C zxspectrum zipdistinstall
+zxspectrum_clean:
+	$(MAKE) -C zxspectrum clean
+zxspectrum_distclean:
+	$(MAKE) -C zxspectrum distclean
+zxspectrum_cleanall:
+	$(MAKE) -C zxspectrum cleanall
+zxspectrum_info:
+	$(MAKE) -C zxspectrum info
+zxspectrum_makefiles:
+	$(MAKE) -C zxspectrum makefiles
+zxspectrum:
+	$(MAKE) -C zxspectrum all
+.PHONY: zxspectrum_all zxspectrum_debug zxspectrum_smart zxspectrum_release zxspectrum_units zxspectrum_examples zxspectrum_shared zxspectrum_install zxspectrum_sourceinstall zxspectrum_exampleinstall zxspectrum_distinstall zxspectrum_zipinstall zxspectrum_zipsourceinstall zxspectrum_zipexampleinstall zxspectrum_zipdistinstall zxspectrum_clean zxspectrum_distclean zxspectrum_cleanall zxspectrum_info zxspectrum_makefiles zxspectrum
+endif
+ifdef TARGET_DIRS_MSXDOS
+msxdos_all:
+	$(MAKE) -C msxdos all
+msxdos_debug:
+	$(MAKE) -C msxdos debug
+msxdos_smart:
+	$(MAKE) -C msxdos smart
+msxdos_release:
+	$(MAKE) -C msxdos release
+msxdos_units:
+	$(MAKE) -C msxdos units
+msxdos_examples:
+	$(MAKE) -C msxdos examples
+msxdos_shared:
+	$(MAKE) -C msxdos shared
+msxdos_install:
+	$(MAKE) -C msxdos install
+msxdos_sourceinstall:
+	$(MAKE) -C msxdos sourceinstall
+msxdos_exampleinstall:
+	$(MAKE) -C msxdos exampleinstall
+msxdos_distinstall:
+	$(MAKE) -C msxdos distinstall
+msxdos_zipinstall:
+	$(MAKE) -C msxdos zipinstall
+msxdos_zipsourceinstall:
+	$(MAKE) -C msxdos zipsourceinstall
+msxdos_zipexampleinstall:
+	$(MAKE) -C msxdos zipexampleinstall
+msxdos_zipdistinstall:
+	$(MAKE) -C msxdos zipdistinstall
+msxdos_clean:
+	$(MAKE) -C msxdos clean
+msxdos_distclean:
+	$(MAKE) -C msxdos distclean
+msxdos_cleanall:
+	$(MAKE) -C msxdos cleanall
+msxdos_info:
+	$(MAKE) -C msxdos info
+msxdos_makefiles:
+	$(MAKE) -C msxdos makefiles
+msxdos:
+	$(MAKE) -C msxdos all
+.PHONY: msxdos_all msxdos_debug msxdos_smart msxdos_release msxdos_units msxdos_examples msxdos_shared msxdos_install msxdos_sourceinstall msxdos_exampleinstall msxdos_distinstall msxdos_zipinstall msxdos_zipsourceinstall msxdos_zipexampleinstall msxdos_zipdistinstall msxdos_clean msxdos_distclean msxdos_cleanall msxdos_info msxdos_makefiles msxdos
+endif
 all: $(addsuffix _all,$(TARGET_DIRS))
 debug: $(addsuffix _debug,$(TARGET_DIRS))
 smart: $(addsuffix _smart,$(TARGET_DIRS))

+ 966 - 3
rtl/aix/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=aix
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1392,7 +1893,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst rtlconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) # $(OSPROCINC)
 endif
@@ -3407,6 +3908,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/amiga/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=amiga
 override CPU_TARGET_DEFAULT=powerpc
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1724,7 +2225,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
@@ -3766,6 +4267,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/android/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=android
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -2055,7 +2556,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override CLEAN_UNITS+=syslinux linux
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(LINUXINC) $(OSPROCINC)
 endif
@@ -4431,6 +4932,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/aros/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=aros
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1721,7 +2222,7 @@ ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
 override INSTALL_BUILDUNIT=buildrtl
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) i386
 endif
@@ -3763,6 +4264,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/atari/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=atari
 override CPU_TARGET_DEFAULT=m68k
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1712,7 +2213,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
 endif
@@ -3754,6 +4255,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/beos/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=beos
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
@@ -1712,7 +2213,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo sysconst rtlconsts
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
 endif
@@ -4087,6 +4588,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

File diff suppressed because it is too large
+ 1650 - 75
rtl/darwin/Makefile


+ 966 - 3
rtl/dragonfly/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=dragonfly
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1724,7 +2225,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y y
+override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
 endif
@@ -3766,6 +4267,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/embedded/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=embedded
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1224,7 +1725,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=$(LOADERS)
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3266,6 +3767,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/emx/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=emx
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
@@ -1716,7 +2217,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo pmhelp classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(OS2INC)
 endif
@@ -3758,6 +4259,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/freebsd/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=freebsd
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1729,7 +2230,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y y
+override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(OSPROCINC)
 endif
@@ -3771,6 +4272,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/freertos/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=freertos
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1547,7 +2048,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=$(LOADERS)
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3589,6 +4090,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/gba/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=gba
 override CPU_TARGET_DEFAULT=arm
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1380,7 +1881,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=$(LOADERS)
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3422,6 +3923,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/go32v2/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=go32v2
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -1717,7 +2218,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3759,6 +4260,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/haiku/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=haiku
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
@@ -1722,7 +2223,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo sysconst rtlconsts
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC) $(HAIKUINC)
 endif
@@ -4097,6 +4598,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 1 - 4
rtl/inc/Makefile.fpc

@@ -18,7 +18,7 @@ ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
-BLOCKRTLUNIT=CApi.BlockRtl
+BLOCKRTLUNIT=blockrtl
 BSDUNIT=BsdApi
 CHARACTERUNIT=System.Character
 CHARSETUNIT=System.CharSet
@@ -1373,9 +1373,6 @@ BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 
-CApi.BlockRtl$(PPUEXT) : $(NSINC)/CApi.BlockRtl.pp  $(BLOCKRTL_DEPS)
-	$(COMPILER) $(BLOCKRTL_OPT) $<
-
 ####################
 # Windows Units
 ####################

+ 0 - 2
rtl/inc/blockrtl.pp

@@ -12,9 +12,7 @@
 
  **********************************************************************}
 
-{$IFNDEF FPC_DOTTEDUNITS}
 unit blockrtl;
-{$ENDIF FPC_DOTTEDUNITS}
 
 { for tmethod }
 {$mode objfpc}

+ 966 - 3
rtl/java/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=java
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -716,7 +1217,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas jdk15
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -2731,6 +3232,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 .PHONY: installclasses
 installclasses:

File diff suppressed because it is too large
+ 2417 - 209
rtl/linux/Makefile


+ 966 - 3
rtl/macos/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=macosclassic
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 PROCINC=../$(CPU_TARGET)
@@ -1383,7 +1884,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3398,6 +3899,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/morphos/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=morphos
 override CPU_TARGET_DEFAULT=powerpc
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1381,7 +1882,7 @@ ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
 override INSTALL_BUILDUNIT=buildrtl
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(AMIINC)
 endif
@@ -3396,6 +3897,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/msdos/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=msdos
 override CPU_TARGET_DEFAULT=i8086
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -1381,7 +1882,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3423,6 +3924,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/msxdos/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=msxdos
 override CPU_TARGET_DEFAULT=z80
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -1048,7 +1549,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp3021 cp8859_1 cp8859_2 cp8859_3 cp8859_4 cp8859_5 cp8859_6 cp8859_7 cp8859_8 cp8859_9 cp8859_10 cp8859_11 cp8859_13 cp8859_14 cp8859_15 cp8859_16 cpkoi8_r cpkoi8_u
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3063,6 +3564,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/nativent/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=nativent
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1389,7 +1890,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(DDKINC) $(NDKINC)
 endif
@@ -3404,6 +3905,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 include $(INC)/makefile.inc

+ 966 - 3
rtl/nds/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=nds
 override CPU_TARGET_DEFAULT=arm
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1380,7 +1881,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=$(LOADERS)
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3422,6 +3923,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/netbsd/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=netbsd
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1726,7 +2227,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y y
+override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
 endif
@@ -3768,6 +4269,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/netware/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=netware
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1720,7 +2221,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst rtlconsts
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3762,6 +4263,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
 include $(INC)/makefile.inc

+ 966 - 3
rtl/netwlibc/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=netwlibc
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1713,7 +2214,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst rtlconsts system
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3755,6 +4256,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
 include $(INC)/makefile.inc

+ 966 - 3
rtl/openbsd/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=openbsd
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
@@ -1731,7 +2232,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y y
+override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(TARGETPROCINC)
 endif
@@ -3773,6 +4274,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/os2/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=os2
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1716,7 +2217,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo pmhelp classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3758,6 +4259,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/palmos/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=palmos
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1379,7 +1880,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=prt0
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/palmos
 endif
@@ -3421,6 +3922,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=syspalm.ppu
 include $(INC)/makefile.inc

+ 966 - 3
rtl/qnx/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=qnx
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
@@ -1384,7 +1885,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(POSIXINC) $(SYSCALLINC)
 endif
@@ -3759,6 +4260,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/sinclairql/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=sinclairql
 override CPU_TARGET_DEFAULT=m68k
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1712,7 +2213,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
 endif
@@ -3754,6 +4255,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/solaris/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=solaris
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1392,7 +1893,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst rtlconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(OSPROCINC)
 endif
@@ -3407,6 +3908,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/symbian/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=symbian
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 UNIXINC=$(RTL)/unix
@@ -1044,7 +1545,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_IMPLICITUNITS+=ctypes strings symbian
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3059,6 +3560,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 include $(INC)/makefile.inc

+ 966 - 3
rtl/wasi/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=wasi
 override CPU_TARGET_DEFAULT=wasm32
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -1049,7 +1550,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp3021 cp8859_1 cp8859_2 cp8859_3 cp8859_4 cp8859_5 cp8859_6 cp8859_7 cp8859_8 cp8859_9 cp8859_10 cp8859_11 cp8859_13 cp8859_14 cp8859_15 cp8859_16 cpkoi8_r cpkoi8_u
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3064,6 +3565,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/watcom/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=watcom
 override CPU_TARGET_DEFAULT=i386
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 PROCINC=../$(CPU_TARGET)
@@ -1715,7 +2216,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3757,6 +4258,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/wii/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=wii
 override CPU_TARGET_DEFAULT=powerpc
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1047,7 +1548,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp3021 cp8859_1 cp8859_2 cp8859_3 cp8859_4 cp8859_5 cp8859_6 cp8859_7 cp8859_8 cp8859_9 cp8859_10 cp8859_11 cp8859_13 cp8859_14 cp8859_15 cp8859_16 cpkoi8_r cpkoi8_u
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3062,6 +3563,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))

+ 966 - 3
rtl/win16/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=msdos
 override CPU_TARGET_DEFAULT=i8086
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -1381,7 +1882,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=prt0s prt0m prt0c prt0l prt0h
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -3423,6 +3924,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

+ 966 - 3
rtl/win32/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=win32
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1713,7 +2214,7 @@ ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_RSTS+=math typinfo classes sysconst
 endif
 override INSTALL_BUILDUNIT=buildrtl
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(WINDIR)
 endif
@@ -3755,6 +4256,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 include $(INC)/makefile.inc

File diff suppressed because it is too large
+ 2005 - 61
rtl/win64/Makefile


+ 966 - 3
rtl/wince/Makefile

@@ -102,7 +102,7 @@ endif
 export ECHO
 endif
 override OS_TARGET_DEFAULT=wince
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -195,7 +195,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -368,6 +369,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
@@ -1053,7 +1554,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp3021 cp8859_1 cp8859_2 cp8859_3 cp8859_4 cp8859_5 cp8859_6 cp8859_7 cp8859_8 cp8859_9 cp8859_10 cp8859_11 cp8859_13 cp8859_14 cp8859_15 cp8859_16 cpkoi8_r cpkoi8_u
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 endif
@@ -3068,6 +3569,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
 include $(INC)/makefile.inc

+ 966 - 3
rtl/zxspectrum/Makefile

@@ -103,7 +103,7 @@ export ECHO
 endif
 override OS_TARGET_DEFAULT=zxspectrum
 override CPU_TARGET_DEFAULT=z80
-override DEFAULT_FPCDIR=../..
+override DEFAULT_FPCDIR=../.. ../..
 ifndef FPC
 ifdef PP
 FPC=$(PP)
@@ -196,7 +196,8 @@ endif
 ifeq ($(FULL_TARGET),aarch64-embedded)
 endif
 ifdef SUB_TARGET 
-override FPCOPT+=-t$(SUB_TARGET)
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
@@ -369,6 +370,506 @@ endif
 endif
 override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifdef FPC_DOTTEDUNITS
+AIOUNIT=NetWareApi.Aio
+ALLWINNER_A20UNIT=Embedded.Allwinner_a20
+ANDROIDR14UNIT=AndroidAPI.AndroidR14
+ATHREADSUNIT=AmigaApi.AThreads
+BASEUNIXUNIT=UnixApi.Base
+BETHREADSUNIT=BeosApi.Bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=BsdApi
+CHARACTERUNIT=System.Character
+CHARSETUNIT=System.CharSet
+CLASSESUNIT=System.Classes
+CMEMUNIT=System.CMem
+COMMONUNIT=PalmApi.Common
+CONSOLEUNIT=System.Console
+CONSOLEIOUNIT=EmbeddedApi.ConsoleIO
+CORTEXM0UNIT=ARMApi.Cortexm0
+CORTEXM3UNIT=ARMApi.Cortexm3
+CORTEXM4UNIT=ARMApi.Cortexm4
+CORTEXM7UNIT=ARMApi.Cortexm7
+CP1250UNIT=System.CodePages.CP1250
+CP1251UNIT=System.CodePages.CP1251
+CP1252UNIT=System.CodePages.CP1252
+CP1253UNIT=System.CodePages.CP1253
+CP1254UNIT=System.CodePages.CP1254
+CP1255UNIT=System.CodePages.CP1255
+CP1256UNIT=System.CodePages.CP1256
+CP1257UNIT=System.CodePages.CP1257
+CP1258UNIT=System.CodePages.CP1258
+CP3021UNIT=System.CodePages.CP3021
+CP437UNIT=System.CodePages.CP437
+CP646UNIT=System.CodePages.CP646
+CP737UNIT=System.CodePages.CP737
+CP775UNIT=System.CodePages.CP775
+CP850UNIT=System.CodePages.CP850
+CP852UNIT=System.CodePages.CP852
+CP855UNIT=System.CodePages.CP855
+CP856UNIT=System.CodePages.CP856
+CP857UNIT=System.CodePages.CP857
+CP860UNIT=System.CodePages.CP860
+CP861UNIT=System.CodePages.CP861
+CP862UNIT=System.CodePages.CP862
+CP863UNIT=System.CodePages.CP863
+CP864UNIT=System.CodePages.CP864
+CP865UNIT=System.CodePages.CP865
+CP866UNIT=System.CodePages.CP866
+CP869UNIT=System.CodePages.CP869
+CP874UNIT=System.CodePages.CP874
+CP8859_1UNIT=System.CodePages.CP8859_1
+CP8859_10UNIT=System.CodePages.CP8859_10
+CP8859_11UNIT=System.CodePages.CP8859_11
+CP8859_13UNIT=System.CodePages.CP8859_13
+CP8859_14UNIT=System.CodePages.CP8859_14
+CP8859_15UNIT=System.CodePages.CP8859_15
+CP8859_16UNIT=System.CodePages.CP8859_16
+CP8859_2UNIT=System.CodePages.CP8859_2
+CP8859_3UNIT=System.CodePages.CP8859_3
+CP8859_4UNIT=System.CodePages.CP8859_4
+CP8859_5UNIT=System.CodePages.CP8859_5
+CP8859_6UNIT=System.CodePages.CP8859_6
+CP8859_7UNIT=System.CodePages.CP8859_7
+CP8859_8UNIT=System.CodePages.CP8859_8
+CP8859_9UNIT=System.CodePages.CP8859_9
+CPALLUNIT=System.CodePages.All
+CPKOI8_RUNIT=System.CodePages.CPkoi8_r
+CPKOI8_UUNIT=System.CodePages.CPkoi8_u
+CPUUNIT=System.CPU
+CTHREADSUNIT=UnixApi.CThreads
+CTYPESUNIT=System.CTypes
+CWSTRINGUNIT=UnixApi.CWString
+DDKUNIT=NTApi.Ddk
+DLUNIT=UnixApi.Dl
+DOSUNIT=TP.DOS
+DOSCALL2UNIT=OS2Api.Doscall2
+DOSCALLSUNIT=OS2Api.Doscalls
+DPMIEXCPUNIT=DOSApi.Dpmiexcp
+DXELOADUNIT=DOSApi.Dxeload
+DXETYPEUNIT=DOSApi.Dxetype
+DYNLIBSUNIT=System.DynLibs
+EMU387UNIT=DOSApi.EMU387
+EMXUNIT=DOSApi.EMX
+ERRORSUNIT=System.Errors
+ESP32UNIT=System.Esp32
+ESP8266UNIT=System.Esp8266
+ESP8266RTOS_30300UNIT=System.Esp8266rtos_30300
+ESP8266RTOS_30400UNIT=System.Esp8266rtos_30400
+ESPIDF_40100UNIT=System.Espidf_40100
+ESPIDF_40200UNIT=System.Espidf_40200
+ESPIDF_40400UNIT=System.Espidf_40400
+EXEUNIT=OS2Api.Exe
+EXEINFOUNIT=System.Exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=EmbeddedApi.Fe310g000
+FE310G002UNIT=EmbeddedApi.Fe310g002
+FGLUNIT=System.FGL
+FPCMEMDLLUNIT=System.FPCMemDLL
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=System.FPWideString
+FREEBSDUNIT=FreeBSDApi.FreeBSD
+GD32VF103XXUNIT=EmbeddedApi.Gd32vf103xx
+GETOPTSUNIT=System.GetOpts
+GO32UNIT=DOSApi.GO32
+GPIOUNIT=EmbeddedApi.Gpio
+HEAPMGRUNIT=EmbeddedApi.HeapMGR
+INITCUNIT=System.InitC
+INTRINSICSUNIT=System.Intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=JavaApi.JDK15
+KBDCALLSUNIT=OS2Api.Kbdcalls
+LIBCUNIT=NetwareLibCApi.Libc
+LINEINFOUNIT=System.LineInfo
+LINUXUNIT=LinuxApi
+LINUXVCSUNIT=LinuxApi.Vcs
+LM3FURYUNIT=EmbeddedApi.Lm3fury
+LM3TEMPESTUNIT=EmbeddedApi.Lm3tempest
+LM4F120UNIT=EmbeddedApi.Lm4f120
+LNFODWRFUNIT=System.LineInfo.Dwarf
+LNFOGDBUNIT=System.LineInfo.Gdb
+LPC11XXUNIT=EmbeddedApi.Lpc11xx
+LPC122XUNIT=EmbeddedApi.Lpc122x
+LPC13XXUNIT=EmbeddedApi.Lpc13xx
+LPC1768UNIT=EmbeddedApi.Lpc1768
+LPC21X4UNIT=EmbeddedApi.Lpc21x4
+LPC8XXUNIT=EmbeddedApi.Lpc8xx
+LSTRINGSUNIT=System.LStrings
+MACOSUNIT=MacOSApi.MacOS
+MACOSTPUNIT=MacOSApi.MacOSTP
+MACUTILSUNIT=MacOSApi.MacUtils
+MAILBOXUNIT=EmbeddedApi.Mailbox
+MATHUNIT=System.Math
+MESSAGESUNIT=WinApi.Messages
+MK20D5UNIT=EmbeddedApi.Mk20d5
+MK20D7UNIT=EmbeddedApi.Mk20d7
+MK22F51212UNIT=EmbeddedApi.Mk22f51212
+MK64F12UNIT=EmbeddedApi.Mk64f12
+MMIOUNIT=EmbeddedApi.Mmio
+MMXUNIT=System.CPU.MMX
+MONCALLSUNIT=OS2Api.Moncalls
+MOUCALLSUNIT=OS2Api.Moucalls
+MSMOUSEUNIT=DOSApi.MSMouse
+MULTIBOOTUNIT=EmbeddedApi.Multiboot
+NDKUNIT=NTApi.NDK
+NDKUTILSUNIT=NTApi.NDKUtils
+NETWAREUNIT=NetwareApi.NetWare
+NEWEXEUNIT=OS2Api.Newexe
+NRF51UNIT=EmbeddedApi.Nrf51
+NRF52UNIT=EmbeddedApi.Nrf52
+NWCALLSUNIT=NetWareApi.Nwcalls
+NWNITUNIT=NetWareApi.Nwnit
+NWPREUNIT=NetWareApi.Nwpre
+NWPROTUNIT=NetWareApi.Nwprot
+NWSERVUNIT=NetWareApi.Nwserv
+NWSNUTUNIT=NetWareApi.Nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=OS2Api.Os2def
+PAGEMEMUNIT=System.PageMem
+PILOTUNIT=PalmApi.Pilot
+PMBIDIUNIT=OS2Api.Pmbidi
+PMBITMAPUNIT=OS2Api.Pmbitmap
+PMDEVUNIT=OS2Api.Pmdev
+PMGPIUNIT=OS2Api.Pmgpi
+PMHELPUNIT=OS2Api.Pmhelp
+PMSHLUNIT=OS2Api.Pmshl
+PMSPLUNIT=OS2Api.Pmspl
+PMSTDDLGUNIT=OS2Api.Pmstddlg
+PMWINUNIT=OS2Api.Pmwin
+PMWPUNIT=OS2Api.Pmwp
+PMWSOCKUNIT=OS2Api.Pmwsock
+PORTSUNIT=System.Ports
+POSIXUNIT=QNXApi.Posix
+PROFILEUNIT=DOSApi.Profile
+RASPI2UNIT=EmbeddedApi.Raspi2
+RASPI3UNIT=EmbeddedApi.Raspi3
+RASPIUARTUNIT=EmbeddedApi.Raspiuart
+RTLCONSTSUNIT=System.RtlConsts
+SAM3X8EUNIT=EmbeddedApi.Sam3x8e
+SAMD51P19AUNIT=EmbeddedApi.Samd51p19a
+SC32442BUNIT=EmbeddedApi .Sc32442b
+SFPU128UNIT=System.SoftFpu128
+SFPUX80UNIT=System.SoftFpuX80
+SHAREMEMUNIT=WinApi.ShareMem
+SIGNALSUNIT=WinApi.Signals
+SO32DLLUNIT=OS2Api.So32dll
+SOFTFPUUNIT=System.SoftFPU
+SORTBASEUNIT=System.SortBase
+STM32F0XXUNIT=EmbeddedApi.Stm32f0xx
+STM32F103XEUNIT=EmbeddedApi.Stm32f103xe
+STM32F10X_CLUNIT=EmbeddedApi.Stm32f10x_cl
+STM32F10X_CONNUNIT=EmbeddedApi.Stm32f10x_conn
+STM32F10X_HDUNIT=EmbeddedApi.Stm32f10x_hd
+STM32F10X_LDUNIT=EmbeddedApi.Stm32f10x_ld
+STM32F10X_MDUNIT=EmbeddedApi.Stm32f10x_md
+STM32F10X_XLUNIT=EmbeddedApi.Stm32f10x_xl
+STM32F401XEUNIT=EmbeddedApi.Stm32f401xe
+STM32F401XXUNIT=EmbeddedApi.Stm32f401xx
+STM32F407XXUNIT=EmbeddedApi.Stm32f407xx
+STM32F411XEUNIT=EmbeddedApi.Stm32f411xe
+STM32F429UNIT=EmbeddedApi.Stm32f429
+STM32F429XXUNIT=EmbeddedApi.Stm32f429xx
+STM32F446XXUNIT=EmbeddedApi.Stm32f446xx
+STM32F745UNIT=EmbeddedApi.Stm32f745
+STM32F746UNIT=EmbeddedApi.Stm32f746
+STM32F756UNIT=EmbeddedApi.Stm32f756
+STM32G071XXUNIT=EmbeddedApi.Stm32g071xx
+STRINGSUNIT=System.Strings
+SYMBIANUNIT=SymbianApi.Symbian
+SYSALLUNIT=PalmApi.Sysall
+SYSCALLUNIT=UnixApi.SysCall
+SYSCONSTUNIT=System.SysConst
+SYSCTLUNIT=BsdApi.SysCtl
+SYSEMXUNIT=DOSApi.Sysemx
+SYSOS2UNIT=OS2Api.Sysos2
+SYSTRAPSUNIT=PalmApi.Systraps
+SYSUTILSUNIT=System.SysUtils
+TERMIOUNIT=UnixApi.TermIO
+TYPESUNIT=System.Types
+TYPINFOUNIT=System.TypInfo
+UFLOAT128UNIT=System.UFloat128
+UFLOATX80UNIT=System.UFloatX80
+UIUNIT=PalmApi.Ui
+UIQUNIT=SymbianApi.Uiq
+UIQCLASSESUNIT=SymbianApi.Uiqclasses
+UNICODEDATAUNIT=System.CodePages.Unicodedata
+UNIXUNIT=UnixApi.Unix
+UNIXCPUNIT=UnixApi.CP
+UNIXTYPEUNIT=UnixApi.Types
+UNIXUTILUNIT=UnixApi.Utils
+VIOCALLSUNIT=OS2Api.Viocalls
+WASIAPIUNIT=WASIApi.WASIApi
+WASIUTILUNIT=WASIApi.WASIUtil
+WATCOMUNIT=WatcomApi.WatCom
+WEBASSEMBLYUNIT=WebAssemblyAPI.WebAssembly
+WIN31UNIT=WinApi.Win31
+WINDIRSUNIT=WinApi.WinDirs
+WINDOWSUNIT=WinApi.Windows
+WINPROCSUNIT=WinApi.WinProcs
+WINSYSUTUNIT=WinApi.WinSysUt
+WINTYPESUNIT=WinApi.WinTypes
+X86UNIT=System.X86
+XMC4500UNIT=EmbeddedApi.Xmc4500
+EXEINFOUNIT=System.ExeInfo
+ERRORSUNIT=UnixApi.Errors
+else
+AIOUNIT=aio
+ALLWINNER_A20UNIT=allwinner_a20
+ANDROIDR14UNIT=androidr14
+ATHREADSUNIT=athreads
+BASEUNIXUNIT=baseunix
+BETHREADSUNIT=bethreads
+BLOCKRTLUNIT=blockrtl
+BSDUNIT=bsd
+CHARACTERUNIT=character
+CHARSETUNIT=charset
+CLASSESUNIT=classes
+CMEMUNIT=cmem
+COMMONUNIT=common
+CONSOLEUNIT=console
+CONSOLEIOUNIT=consoleio
+CORTEXM0UNIT=cortexm0
+CORTEXM3UNIT=cortexm3
+CORTEXM4UNIT=cortexm4
+CORTEXM7UNIT=cortexm7
+CP1250UNIT=cp1250
+CP1251UNIT=cp1251
+CP1252UNIT=cp1252
+CP1253UNIT=cp1253
+CP1254UNIT=cp1254
+CP1255UNIT=cp1255
+CP1256UNIT=cp1256
+CP1257UNIT=cp1257
+CP1258UNIT=cp1258
+CP3021UNIT=cp3021
+CP437UNIT=cp437
+CP646UNIT=cp646
+CP737UNIT=cp737
+CP775UNIT=cp775
+CP850UNIT=cp850
+CP852UNIT=cp852
+CP855UNIT=cp855
+CP856UNIT=cp856
+CP857UNIT=cp857
+CP860UNIT=cp860
+CP861UNIT=cp861
+CP862UNIT=cp862
+CP863UNIT=cp863
+CP864UNIT=cp864
+CP865UNIT=cp865
+CP866UNIT=cp866
+CP869UNIT=cp869
+CP874UNIT=cp874
+CP8859_1UNIT=cp8859_1
+CP8859_10UNIT=cp8859_10
+CP8859_11UNIT=cp8859_11
+CP8859_13UNIT=cp8859_13
+CP8859_14UNIT=cp8859_14
+CP8859_15UNIT=cp8859_15
+CP8859_16UNIT=cp8859_16
+CP8859_2UNIT=cp8859_2
+CP8859_3UNIT=cp8859_3
+CP8859_4UNIT=cp8859_4
+CP8859_5UNIT=cp8859_5
+CP8859_6UNIT=cp8859_6
+CP8859_7UNIT=cp8859_7
+CP8859_8UNIT=cp8859_8
+CP8859_9UNIT=cp8859_9
+CPALLUNIT=cpall
+CPKOI8_RUNIT=cpkoi8_r
+CPKOI8_UUNIT=cpkoi8_u
+CPUUNIT=cpu
+CTHREADSUNIT=cthreads
+CTYPESUNIT=ctypes
+CWSTRINGUNIT=cwstring
+DDKUNIT=ddk
+DLUNIT=dl
+DOSUNIT=dos
+DOSCALL2UNIT=doscall2
+DOSCALLSUNIT=doscalls
+DPMIEXCPUNIT=dpmiexcp
+DXELOADUNIT=dxeload
+DXETYPEUNIT=dxetype
+DYNLIBSUNIT=dynlibs
+EMU387UNIT=emu387
+EMXUNIT=emx
+ERRORSUNIT=errors
+ESP32UNIT=esp32
+ESP8266UNIT=esp8266
+ESP8266RTOS_30300UNIT=esp8266rtos_30300
+ESP8266RTOS_30400UNIT=esp8266rtos_30400
+ESPIDF_40100UNIT=espidf_40100
+ESPIDF_40200UNIT=espidf_40200
+ESPIDF_40400UNIT=espidf_40400
+EXEUNIT=exe
+EXEINFOUNIT=exeinfo
+EXTPASUNIT=extpas
+FE310G000UNIT=fe310g000
+FE310G002UNIT=fe310g002
+FGLUNIT=fgl
+FPCMEMDLLUNIT=fpcmemdll
+FPCYLIXUNIT=fpcylix
+FPWIDESTRINGUNIT=fpwidestring
+FREEBSDUNIT=freebsd
+GD32VF103XXUNIT=gd32vf103xx
+GETOPTSUNIT=getopts
+GO32UNIT=go32
+GPIOUNIT=gpio
+HEAPMGRUNIT=heapmgr
+INITCUNIT=initc
+INTRINSICSUNIT=intrinsics
+ISO7185UNIT=iso7185
+JDK15UNIT=jdk15
+KBDCALLSUNIT=kbdcalls
+LIBCUNIT=libc
+LINEINFOUNIT=lineinfo
+LINUXUNIT=linux
+LINUXVCSUNIT=linuxvcs
+LM3FURYUNIT=lm3fury
+LM3TEMPESTUNIT=lm3tempest
+LM4F120UNIT=lm4f120
+LNFODWRFUNIT=lnfodwrf
+LNFOGDBUNIT=lnfogdb
+LPC11XXUNIT=lpc11xx
+LPC122XUNIT=lpc122x
+LPC13XXUNIT=lpc13xx
+LPC1768UNIT=lpc1768
+LPC21X4UNIT=lpc21x4
+LPC8XXUNIT=lpc8xx
+LSTRINGSUNIT=lstrings
+MACOSUNIT=macos
+MACOSTPUNIT=macostp
+MACUTILSUNIT=macutils
+MAILBOXUNIT=mailbox
+MATHUNIT=math
+MESSAGESUNIT=messages
+MK20D5UNIT=mk20d5
+MK20D7UNIT=mk20d7
+MK22F51212UNIT=mk22f51212
+MK64F12UNIT=mk64f12
+MMIOUNIT=mmio
+MMXUNIT=mmx
+MONCALLSUNIT=moncalls
+MOUCALLSUNIT=moucalls
+MSMOUSEUNIT=msmouse
+MULTIBOOTUNIT=multiboot
+NDKUNIT=ndk
+NDKUTILSUNIT=ndkutils
+NETWAREUNIT=netware
+NEWEXEUNIT=newexe
+NRF51UNIT=nrf51
+NRF52UNIT=nrf52
+NWCALLSUNIT=nwcalls
+NWNITUNIT=nwnit
+NWPREUNIT=nwpre
+NWPROTUNIT=nwprot
+NWSERVUNIT=nwserv
+NWSNUTUNIT=nwsnut
+OBJCUNIT=objc
+OBJCBASEUNIT=objcbase
+OS2DEFUNIT=os2def
+PAGEMEMUNIT=pagemem
+PILOTUNIT=pilot
+PMBIDIUNIT=pmbidi
+PMBITMAPUNIT=pmbitmap
+PMDEVUNIT=pmdev
+PMGPIUNIT=pmgpi
+PMHELPUNIT=pmhelp
+PMSHLUNIT=pmshl
+PMSPLUNIT=pmspl
+PMSTDDLGUNIT=pmstddlg
+PMWINUNIT=pmwin
+PMWPUNIT=pmwp
+PMWSOCKUNIT=pmwsock
+PORTSUNIT=ports
+POSIXUNIT=posix
+PROFILEUNIT=profile
+RASPI2UNIT=raspi2
+RASPI3UNIT=raspi3
+RASPIUARTUNIT=raspiuart
+RTLCONSTSUNIT=rtlconsts
+SAM3X8EUNIT=sam3x8e
+SAMD51P19AUNIT=samd51p19a
+SC32442BUNIT=sc32442b
+SFPU128UNIT=sfpu128
+SFPUX80UNIT=sfpux80
+SHAREMEMUNIT=sharemem
+SIGNALSUNIT=signals
+SO32DLLUNIT=so32dll
+SOFTFPUUNIT=softfpu
+SORTBASEUNIT=sortbase
+STM32F0XXUNIT=stm32f0xx
+STM32F103XEUNIT=stm32f103xe
+STM32F10X_CLUNIT=stm32f10x_cl
+STM32F10X_CONNUNIT=stm32f10x_conn
+STM32F10X_HDUNIT=stm32f10x_hd
+STM32F10X_LDUNIT=stm32f10x_ld
+STM32F10X_MDUNIT=stm32f10x_md
+STM32F10X_XLUNIT=stm32f10x_xl
+STM32F401XEUNIT=stm32f401xe
+STM32F401XXUNIT=stm32f401xx
+STM32F407XXUNIT=stm32f407xx
+STM32F411XEUNIT=stm32f411xe
+STM32F429UNIT=stm32f429
+STM32F429XXUNIT=stm32f429xx
+STM32F446XXUNIT=stm32f446xx
+STM32F745UNIT=stm32f745
+STM32F746UNIT=stm32f746
+STM32F756UNIT=stm32f756
+STM32G071XXUNIT=stm32g071xx
+STRINGSUNIT=strings
+SYMBIANUNIT=symbian
+SYSALLUNIT=sysall
+SYSCALLUNIT=syscall
+SYSCONSTUNIT=sysconst
+SYSCTLUNIT=sysctl
+SYSEMXUNIT=sysemx
+SYSOS2UNIT=sysos2
+SYSTRAPSUNIT=systraps
+SYSUTILSUNIT=sysutils
+TERMIOUNIT=termio
+TYPESUNIT=types
+TYPINFOUNIT=typinfo
+UFLOAT128UNIT=ufloat128
+UFLOATX80UNIT=ufloatx80
+UIUNIT=ui
+UIQUNIT=uiq
+UIQCLASSESUNIT=uiqclasses
+UNICODEDATAUNIT=unicodedata
+UNIXUNIT=unix
+UNIXCPUNIT=unixcp
+UNIXTYPEUNIT=unixtype
+UNIXUTILUNIT=unixutil
+VIOCALLSUNIT=viocalls
+WASIAPIUNIT=wasiapi
+WASIUTILUNIT=wasiutil
+WATCOMUNIT=watcom
+WEBASSEMBLYUNIT=webassembly
+WIN31UNIT=win31
+WINDIRSUNIT=windirs
+WINDOWSUNIT=windows
+WINPROCSUNIT=winprocs
+WINSYSUTUNIT=winsysut
+WINTYPESUNIT=wintypes
+X86UNIT=x86
+XMC4500UNIT=xmc4500
+endif
+ifdef FPC_DOTTEDUNITS 
+NS_SYSTEM=System.
+NS_CPUNITS=System.CodePages.
+NSDIR=$(RTL)/namespaced
+NSINC=$(NSDIR)/common
+OPT:=$(OPT) -dFPC_DOTTEDUNITS
+BASEINCLUDE=$(INC) $(PROCINC) 
+BASESOURCE=$(INC) $(PROCINC) $($(COMMONUNIT))
+endif
+CPUNITSBASE=$(CP1250UNIT) $(CP1251UNIT) $(CP1252UNIT) $(CP1253UNIT) $(CP1254UNIT) $(CP1255UNIT) $(CP1256UNIT) $(CP1257UNIT) $(CP1258UNIT) \
+      $(CP437UNIT) $(CP646UNIT) $(CP737UNIT) $(CP775UNIT) $(CP850UNIT) $(CP852UNIT) $(CP855UNIT) $(CP856UNIT) $(CP857UNIT) $(CP860UNIT) $(CP861UNIT) $(CP862UNIT) \
+      $(CP863UNIT) $(CP864UNIT) $(CP865UNIT) $(CP866UNIT) $(CP869UNIT) $(CP874UNIT) $(CP3021UNIT) $(CP8859_1UNIT) $(CP8859_2UNIT) $(CP8859_3UNIT) $(CP8859_4UNIT) \
+      $(CP8859_5UNIT) $(CP8859_6UNIT) $(CP8859_7UNIT) $(CP8859_8UNIT) $(CP8859_9UNIT) $(CP8859_10UNIT) $(CP8859_11UNIT) \
+      $(CP8859_13UNIT) $(CP8859_14UNIT) $(CP8859_15UNIT) $(CP8859_16UNIT) $(CPKOI8_RUNIT) $(CPKOI8_UUNIT) 
+CPUNITS=$(addprefix $(NS_CPUNITS),$(CPUNITSBASE))
 RTL=..
 INC=../inc
 COMMON=$(RTL)/common
@@ -715,7 +1216,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_UNITS+=system si_prc
 endif
-override INSTALL_FPCPACKAGE=y
+override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
@@ -2730,6 +3231,468 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
+ifndef OSDIR
+OSDIR=.
+endif
+ifndef PORTSDIR
+PORTSDIR=$(OSDIR)
+endif
+ifndef DYNLIBSINCDIR
+DYNLIBSINCDIR=$(OSDIR)
+endif
+ifndef INITCDIR
+INITCDIR=$(OSDIR)
+endif
+ifndef DOSDIR
+DOSDIR=$(OSDIR)
+NSDOSDIR=$(NSDIR)/$(DOSDIR)
+endif
+ifndef SYSUTILSDIR
+SYSUTILSDIR=$(OSDIR)
+endif
+ifndef NSSYSUTILSDIR
+NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
+endif
+ifndef CLASSESDIR
+CLASSESDIR=$(OSDIR)
+endif
+ifndef NSCLASSESDIR
+NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
+endif
+ifndef NSBSDDIR
+NSBSDDIR=$(NSDIR)/bsd
+endif
+ifdef FPC_DOTTEDUNITS
+MACPAS_OPT:=$(MACPAS_OPT) -dFPC_DOTTEDUNITS
+EXTPAS_OPT:=$(EXTPAS_OPT) -dFPC_DOTTEDUNITS
+endif
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
+UUCHAR_DEPS=$(INC)/uuchar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UUCHAR_DEPS_OS) $(UUCHAR_DEPS_CPU)
+uuchar$(PPUEXT): $(UUCHAR_DEPS)
+	$(COMPILER) $(UUCHAR_OPT) $<
+UACHAR_DEPS=$(INC)/uachar.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(UACHAR_DEPS_OS) $(UACHAR_DEPS_CPU)
+uachar$(PPUEXT): $(UACHAR_DEPS)
+	$(COMPILER) $(UACHAR_OPT) $<
+OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPAS_DEPS_OS) $(OBJPAS_DEPS_SPU)  
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPAS_OPT) -I$(OBJPASDIR) $<
+MACPAS_DEPS=$(INC)/macpas.pp \
+	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU) 
+macpas$(PPUEXT) : $(MACPAS_DEPS)
+	$(COMPILER) $(MACPAS_OPT) $< 
+ISO7185_DEPS= $(INC)/$(ISO7185UNIT).pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(ISO7185_DEPS_OS) $(ISO7185_DEPS_CPU) 
+iso7185$(PPUEXT) : $(ISO7185_DEPS)
+	$(COMPILER) $(ISO7185_OPT) $<
+EXTPAS_DEPS=$(INC)/extpas.pp \
+	    $(DOSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(EXTPAS_DEPS_OS) $(EXTPAS_DEPS_CPU)
+extpas$(PPUEXT) : $(EXTPAS_DEPS)
+	$(COMPILER) $(EXTPAS_OPT) $<
+FPINTRES_DEPS= $(INC)/fpintres.pp $(SYSTEMUNIT)$(PPUEXT) \
+	       $(FPINTRES_DEPS_OS) $(FPINTRES_DEPS_CPU)              
+fpintres$(PPUEXT) : $(FPINTRES_DEPS)
+	$(COMPILER) $(FPINTRES_OPT) $<
+HEAPTRC_DEPS=$(INC)/heaptrc.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(HEAPTRC_DEPS_OS) $(HEAPTRC_DEPS_CPU)
+heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
+	$(COMPILER) $(HEAPTRC_OPT) $<
+SOFTFPU_DEPS=$(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
+softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
+	$(COMPILER) $(SOFTFPU_OPT) $<
+SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
+sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
+	$(COMPILER) $(SFPUX80_OPT) $<
+SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
+sfpu128$(PPUEXT) : $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+System.SoftFpu128$(PPUEXT) : $(NSINC)/System.SoftFpu128.pp $(SFPU128_DEPS)
+	$(COMPILER) $(SFPUX128_OPT) $<
+UFLOATX80_DEPS=$(INC)/ufloatx80.pp \
+	       $(SFPUX80UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOATX80_DEPS_OS) $(UFLOATX80_DEPS_CPU)
+ufloatx80$(PPUEXT) : $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+System.UFloatX80$(PPUEXT) : $(NSINC)/System.UFloatX80.pp $(UFLOATX80_DEPS)
+	$(COMPILER) $(UFLOATX80_OPT) $<
+UFLOAT128_DEPS=$(INC)/ufloat128.pp \
+	       $(SFPU128UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	       $(UFLOAT128_DEPS_OS) $(UFLOAT128_DEPS_CPU)
+ufloat128$(PPUEXT) : $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+System.UFloat128$(PPUEXT) : $(NSINC)/System.UFloat128.pp $(UFLOAT128_DEPS)
+	$(COMPILER) $(UFLOAT128_OPT) $<
+STRINGS_DEPS=$(INC)/strings.pp $(INC)/stringsi.inc $(PROCINC)/stringss.inc $(PROCINC)/strings.inc \
+	     $(SYSTEMUNIT)$(PPUEXT)  \
+	     $(STRINGS_DEPS_OS)
+strings$(PPUEXT) : $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+System.Strings$(PPUEXT) : $(NSINC)/System.Strings.pp $(STRINGS_DEPS)
+	$(COMPILER) $(STRINGS_OPT) $<
+PORTS_DEPS=$(PORTSDIR)/ports.pp \
+	   $(SYSTEMUNIT)$(PPUEXT) \
+	   $(PORTS_DEPS_OS) $(PORTS_DEPS_CPU)
+ports$(PPUEXT) : $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.pp $(PORTS_DEPS) 
+	$(COMPILER) $(PORTS_OPT) $<
+DYNLIBS_DEPS=$(INC)/dynlibs.pas $(OSDIR)/dynlibs.inc \
+	     $(DLUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
+dynlibs$(PPUEXT) : $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+System.DynLibs$(PPUEXT) : $(NSINC)/System.DynLibs.pas $(DYNLIBS_DEPS)
+	$(COMPILER) $(DYNLIBS_OPT) $<
+INITC_DEPS=$(INITCDIR)/initc.pp $(CTYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(INITC_DEPS_OS) $(INITC_DEPS_CPU)
+initc$(PPUEXT) : $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
+	$(COMPILER) $(INITC_OPT) $<
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	$(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
+unixcp$(PPUEXT) : $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $(UNIXINC)/unixcp.pp
+UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
+	$(COMPILER) $(UNIXCP_OPT) $<
+LINUX_DEPS=$(OSDIR)/linux.pp \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
+linux$(PPUEXT): $(LINUX_DEPS)
+	$(COMPILER) $<
+LinuxApi$(PPUEXT): $(NSOSDIR)/LinuxApi.pp $(LINUX_DEPS) 
+	$(COMPILER) $(LINUX_OPT) $<
+LINUXVCS_DEPS=$(OSDIR)/linuxvcs.pp $(BASEUNIXUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(LINUXVCS_DEPS_OS) $(LINUXVCS_DEPS_CPU)
+linuxvcs$(PPUEXT): $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
+	$(COMPILER) $(LINUXVCS_OPT) $<
+FPCYLIX_DEPS=fpcylix.pp \
+	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
+	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
+fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
+	$(COMPILER) $(FPCYLIX_OPT) $<
+TERMIO_DEPS=$(OSDIR)/termio.pp $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	    $(TERMIO_DEPS_OS) $(TERMIO_DEPS_CPU)
+termio$(PPUEXT) : $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+UnixApi.TermIO$(PPUEXT) : $(NSINC)/UnixApi.TermIO.pp $(TERMIO_DEPS)
+	$(COMPILER) $(TERMIO_OPT) $<
+DOS_DEPS=$(DOSDIR)/dos.pp  $(INC)/filerec.inc $(INC)/textrec.inc \
+	 $(STRINGSUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(DOS_DEPS_OS) $(DOS_DEPS_CPU)
+dos$(PPUEXT): $(DOS_DEPS)
+	$(COMPILER) $(DOS_OPTS) $<
+TP.DOS$(PPUEXT): $(NSINC)/TP.DOS.pp $(DOS_DEPS) 
+	$(COMPILER) $(DOS_OPTS) $<
+SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
+	      objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
+sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/$(SYSUTILSUNIT) $<
+System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
+	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils $<
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
+	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
+	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
+classes$(PPUEXT) : $(CLASSES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS) 
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(CLASSES_OPT) $<
+TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
+	     objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	     $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
+typinfo$(PPUEXT): $(TYPINFO_DEPS)
+	$(COMPILER) -Sg $(TYPINFO_OPT) $<
+System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp 
+	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
+CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
+	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
+character$(PPUEXT): $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) $<
+System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
+	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
+MATH_DEPS= $(OBJPASDIR)/math.pp \
+	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
+math$(PPUEXT): $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) $<
+System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
+	$(COMPILER) $(MATH_OPT) -Fi$(OBJPASDIR)  $<
+FGL_DEPS=$(OBJPASDIR)/fgl.pp \
+	  objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
+	  $(FCL_DEPS_OS) $(FCL_DEPS_CPU)
+fgl$(PPUEXT) : $(FGL_DEPS)
+	$(COMPILER) $(FGL_OPT) $<
+System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FGL_OPT) $<
+TYPES_DEPS=$(OBJPASDIR)/types.pp \
+	   objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
+types$(PPUEXT) : $(TYPES_DEPS)
+	$(COMPILER) $(TYPES_OPT) $<
+System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(TYPES_OPT) $<
+SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
+sysconst$(PPUEXT) : $(SYSCONST_DEPS)
+	$(COMPILER) $(SYSCONST_OPT) $<
+System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(SYSCONST_OPT) $<
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
+	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(RTLCONST_DEPS_OS) $(RTLCONST_DEPS_CPU)
+rtlconsts$(PPUEXT) : $(RTLCONSTS_DEPS)
+	$(COMPILER) $(RTLCONSTS_OPT) $<
+System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
+ifneq ($(findstring $(ARCH),x86_64 i386),)
+CPU_DEPS_OS:=$(CPU_DEPS_OS) $(SYSUTILSUNIT)$(PPUEXT)
+endif
+CPU_DEPS=$(PROCINC)/cpu.pp \
+	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
+cpu$(PPUEXT) : $(CPU_DEPS)
+	$(COMPILER) $(CPU_OPT) $<
+System.CPU$(PPUEXT) : $(NSINC)/System.CPU.pp
+	$(COMPILER) $(CPU_OPT) $<
+MMX_DEPS=$(PROCINC)/mmx.pp \
+	 $(CPUUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	 $(MMX_DEPS_OS) $(MMX_DEPS_CPU) 
+mmx$(PPUEXT) : $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+System.MMX$(PPUEXT) : $(NSINC)/System.MMX $(MMX_DEPS)
+	$(COMPILER) $(MMX_OPT) $<
+X86_DEPS = $(UNIXINC)/x86.pp \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
+x86$(PPUEXT) : $(X86_DEPS)
+	$(COMPILER) $(X86_OPT)  $<
+System.X86$(PPUEXT) : $(NSINC)/System.X86.pp $(X86_DEPS)
+	$(COMPILER) $(X86_OPT) $<
+GETOPTS_DEPS=$(INC)/getopts.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) \
+	     $(GETOPTS_DEPS_OS) $(GETOPTS_DEPS_CPU)
+getopts$(PPUEXT) : $(GETOPTS_DEPS)
+	$(COMPILER) $(GETOPTS_OPT) $<
+System.GetOpts$(PPUEXT) : $(NSINC)/System.GetOpts.pp $(GETOPTS_DEPS)
+	$(COMPILER)  $(GETOPTS_OPT) $<
+LINEINFO_DEPS=$(INC)/lineinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	      $(LINEINFO_DEPS_OS)  $(LINEINFO_DEPS_CPU)
+lineinfo$(PPUEXT) : $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+System.LineInfo$(PPUEXT) : $(NSINC)/System.LineInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(LINEINFO_OPT) $<
+EXEINFO_DEPS=$(INC)/exeinfo.pp \
+	      $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(EXEINFO_DEPS_OS)  $(EXEINFO_DEPS_CPU)
+exeinfo$(PPUEXT) : $(EXEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+System.ExeInfo$(PPUEXT) : $(NSINC)/System.ExeInfo.pp $(LINEINFO_DEPS)
+	$(COMPILER) $(EXEINFO_OPT) $<
+LNFODWRF_DEPS=$(INC)/lnfodwrf.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFODWRF_DEPS_OS) $(LNFODWRF_DEPS_CPU)
+lnfodwrf$(PPUEXT) : $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+System.LineInfo.Dwarf$(PPUEXT) : $(NSINC)/System.LineInfo.Dwarf.pp $(LNFODWRF_DEPS)
+	$(COMPILER) $(LNFODWRF_OPT) $<
+LNFOGDB_DEPS=$(UNIXINC)/lnfogdb.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(STRINGSUNIT)$(PPUEXT) $(LINEINFOUNIT)$(PPUEXT) \
+	      $(SYSUTILSUNIT)$(PPUEXT) $(EXEINFOUNIT)$(PPUEXT) \
+	      $(LNFOGDB_DEPS_OS) $(LNFOGDB_DEPS_CPU)
+lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
+	$(COMPILER) $(LNFOGDB_OPT) $<
+CHARSET_DEPS=$(INC)/charset.pp \
+	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
+charset$(PPUEXT) : $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $<
+System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
+	$(COMPILER) $(CHARSET_OPT) $< 
+CPALL_DEPS=$(RTL)/charmaps/cpall.pas \
+	  system$(PPUEXT) $(CHARSETUNIT)$(PPUEXT) \
+	  $(CPALL_DEPS_OS) $(CPALL_DEPS_CPU)
+cpall$(PPUEXT): $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
+	$(COMPILER) $(CPALL_OPT) -Fu$(INC) -Fi$(RTL)/charmaps $<
+FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp \
+		  $(CHARACTERUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
+		  $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
+fpwidestring$(PPUEXT): $(FPWIDESTRING_DEPS)
+	$(COMPILER) $(FPWIDESTRING_OPT) $<
+System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEPS)
+	$(COMPILER) -Fi$(OBJPASDIR) $(FPWIDESTRING_OPT) $<
+SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
+sortbase$(PPUEXT) : $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+System.SortBase$(PPUEXT) : $(NSINC)/System.SortBase.pp $(SORTBASE_DEPS)
+	$(COMPILER) $(SORTBASE_OPT) $<
+CALLSPEC_DEPS=$(INC)/callspec.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) \
+	      $(CALLSPEC_DEPS_OS) $(CALLSPEC_DEPS_CPU) 
+callspec$(PPUEXT) : $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+System.CallSpec$(PPUEXT) : $(NSINC)/System.CallSpec.pp $(CALLSPEC_DEPS)
+	$(COMPILER) $(CALLSPEC_OPT) $<
+CMEM_DEPS=$(INC)/cmem.pp \
+	  $(SYSTEMUNIT)$(PPUEXT) \
+	  $(CMEM_DEPS_OS) $(CMEM_DEPS_CPU)
+cmem$(PPUEXT) : $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+System.CMem$(PPUEXT) : $(NSINC)/System.CMem.pp $(CMEM_DEPS)
+	$(COMPILER) $(CMEM_OPT) $<
+BASEUNIX_DEPS=$(UNIXINC)/baseunix.pp  $(UNIXINC)/ctypes.inc  \
+	      $(UNIXINC)/bunxh.inc $(UNIXINC)/gensigset.inc $(OSDIR)/ptypes.inc $(OSDIR)/errno.inc \
+	      $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	      $(BASEUNIX_DEPS_OS) $(BASEUNIX_DEPS_CPU) 
+baseunix$(PPUEXT): $(BASEUNIX_DEPS)
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UnixApi.Base$(PPUEXT): $(NSINC)/UnixApi.Base.pp $(BASEUNIX_DEPS) 
+	$(COMPILER) $(BASEUNIX_OPT) $<
+UNIX_DEPS=$(UNIXINC)/unix.pp \
+	 $(STRINGSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	 $(UNIXUTILUNIT)$(PPUEXT) \
+	 $(INC)/textrec.inc $(INC)/filerec.inc  $(UNIXINC)/timezone.inc \
+	 $(OSDIR)/unxconst.inc $(OSDIR)/unxfunc.inc \
+	 $(UNIX_DEPS_OS) $(UNIX_DEPS_CPU)
+unix$(PPUEXT): $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+UnixApi.Unix$(PPUEXT) : $(NSINC)/UnixApi.Unix.pp $(UNIX_DEPS)
+	$(COMPILER) $(UNIX_OPT) $<
+SYSCALL_DEPS=$(UNIXINC)/syscall.pp \
+	     $(SYSTEMUNIT)$(PPUEXT)\
+	     $(SYSCALL_DEPS_OS) $(SYSCALL_DEPS_CPU)
+syscall$(PPUEXT) : $(SYSCALL_DEPS)
+	$(COMPILER) $(SYSCALL_OPT) $<
+UnixApi.SysCall$(PPUEXT) : $(NSINC)/UnixApi.SysCall.pp $(SYSCALL_DEPS) 
+	$(COMPILER) $(SYSCALL_OPT) $<
+UNIXUTIL_DEPS=$(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc\
+	     $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)\
+	     $(UNIXUTILDEPSOS)
+unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
+	$(COMPILER) $(UNIXUTIL_OPT) $<
+UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
+unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
+UnixApi.Types$(PPUEXT) : $(NSINC)/UnixApi.Types.pp $(UNIXTYPE_DEPS)
+	$(COMPILER) $(UNIXTYPE_OPT) $<
+DL_DEPS=$(UNIXINC)/dl.pp \
+	$(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	$(DL_DEPS_OS) $(DL_DEPS_CPU)
+dl$(PPUEXT) : $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+UnixApi.Dl$(PPUEXT) : $(NSINC)/UnixApi.Dl.pp $(DL_DEPS)
+	$(COMPILER) $(DL_OPT) $<
+ERRORS_DEPS=$(UNIXINC)/errors.pp \
+	    $(STRINGSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(ERRORS_DEPS_OS) $(ERRORS_DEPS_CPU)
+errors$(PPUEXT) : $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
+	$(COMPILER) $(ERRORS_OPT) $<
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	      $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
+	      $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
+cthreads$(PPUEXT) : $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
+	$(COMPILER) $(CTHREADS_OPT) $<
+CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
+	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
+cwstring$(PPUEXT) : $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
+	$(COMPILER) $(CWSTRING_OPT) $<
+CTYPES_DEPS=$(INC)/ctypes.pp \
+	    $(SYSTEMUNIT)$(PPUEXT) \
+	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
+ctypes$(PPUEXT) : $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+System.CTypes$(PPUEXT) : $(NSINC)/System.CTypes.pp $(CTYPES_DEPS) 
+	$(COMPILER) $(CTYPES_OPT) $<
+OBJC_DEPS=$(INC)/objc.pp $(INC)/objc.pp $(INC)/objc1.inc $(INC)/objcnf.inc \
+	  $(SYSTEMUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	  $(OBJC_DEPS_OS) $(OBJC_DEPS_CPU)
+objc$(PPUEXT) : $(OBJC_DEPS)
+	$(COMPILER) $(OBJC_OPT) $<
+OBJCBASE_DEPS=$(INC)/objcbase.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJCUNIT)$(PPUEXT) \
+	      $(OBJCBASE_DEPS_OS) $(OBJCBASE_DEPS_CPU)
+objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
+	$(COMPILER) $(OBJCBASE_OPT) $<
+BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
+	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
+blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
+	$(COMPILER) $(BLOCKRTL_OPT) $<
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
+windows$(PPUEXT): $(WINDOWS_DEPS)
+	$(COMPILER) $(WINDOWS_OPT) $<
+WinApi.Windows$(PPUEXT): $(NSOSDIR)/WinApi.Windows.pp $(WINDOWS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDOWS_OPT) $<
+WINDIRS_DEPS=windirs.pp $(WINDOWSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(WINDIRS_DEPS_OS) $(WINDIRS_DEPS_CPU)
+windirs$(PPUEXT): $(WINDIRS_DEPS)
+	$(COMPILER) $(WINDIRS_OPT) $<
+WinApi.WinDirs$(PPUEXT): $(NSOSDIR)/WinApi.WinDirs.pp $(WINDIRS_DEPS)
+	$(COMPILER) -Fi$(WININC) -Fi$(WINDIR) $(WINDIRS_OPT) $<
+SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
+sysctl$(PPUEXT) : $(SYSCTL_DEPS)
+	$(COMPILER) $(SYSCTL_OPT) $<
+BsdApi.SysCtl$(PPUEXT) : $(NSBSDDIR)/BsdApi.SysCtl.pp $(SYSCTL_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BSD_DEPS=$(BSDINC)/bsd.pas $(INITCUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+	 $(BSD_DEPS_OS) $(BSD_DEPS_CPU)
+bsd$(PPUEXT): $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
+BsdApi$(PPUEXT): $(NSBSDDIR)/BsdApi.pp $(BSD_DEPS)
+	$(COMPILER) $(BSD_OPT) $<
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu

Some files were not shown because too many files changed in this diff