Browse Source

Merge branch 'main' into wasm_goto

Nikolay Nikolov 1 year ago
parent
commit
9996c935ea
100 changed files with 6740 additions and 5868 deletions
  1. 250 233
      Makefile
  2. 706 678
      compiler/Makefile
  3. 12 1
      compiler/Makefile.fpc
  4. 6 6
      compiler/llvm/rgllvm.pas
  5. 64 12
      compiler/loongarch64/cgcpu.pas
  6. 12 9
      compiler/pdecvar.pas
  7. 60 60
      compiler/rgobj.pas
  8. 472 455
      compiler/utils/Makefile
  9. 9 9
      packages/fcl-base/src/uriparser.pp
  10. 158 110
      packages/hash/src/sha1i386.inc
  11. 1 1
      packages/rtl-objpas/src/inc/rtti.pp
  12. 1 1
      packages/rtl-objpas/tests/testrunner.rtlobjpas.pp
  13. 1 1
      packages/rtl-objpas/tests/tests.rtti.value.pas
  14. 110 98
      rtl/aix/Makefile
  15. 21 118
      rtl/aix/Makefile.fpc
  16. 102 48
      rtl/amiga/Makefile
  17. 2 12
      rtl/amiga/Makefile.fpc
  18. 121 103
      rtl/android/Makefile
  19. 23 98
      rtl/android/Makefile.fpc
  20. 102 46
      rtl/aros/Makefile
  21. 3 10
      rtl/aros/Makefile.fpc
  22. 100 44
      rtl/atari/Makefile
  23. 1 8
      rtl/atari/Makefile.fpc
  24. 101 45
      rtl/beos/Makefile
  25. 5 11
      rtl/beos/Makefile.fpc
  26. 111 55
      rtl/darwin/Makefile
  27. 3 10
      rtl/darwin/Makefile.fpc
  28. 111 85
      rtl/dragonfly/Makefile
  29. 22 103
      rtl/dragonfly/Makefile.fpc
  30. 107 52
      rtl/embedded/Makefile
  31. 9 14
      rtl/embedded/Makefile.fpc
  32. 100 44
      rtl/emx/Makefile
  33. 1 8
      rtl/emx/Makefile.fpc
  34. 125 105
      rtl/freebsd/Makefile
  35. 32 113
      rtl/freebsd/Makefile.fpc
  36. 113 55
      rtl/freertos/Makefile
  37. 13 15
      rtl/freertos/Makefile.fpc
  38. 100 82
      rtl/gba/Makefile
  39. 2 73
      rtl/gba/Makefile.fpc
  40. 142 109
      rtl/go32v2/Makefile
  41. 58 93
      rtl/go32v2/Makefile.fpc
  42. 102 45
      rtl/haiku/Makefile
  43. 6 11
      rtl/haiku/Makefile.fpc
  44. 121 40
      rtl/inc/Makefile.rtl
  45. 100 41
      rtl/java/Makefile
  46. 1 1
      rtl/java/Makefile.fpc
  47. 127 59
      rtl/linux/Makefile
  48. 11 2
      rtl/linux/Makefile.fpc
  49. 99 43
      rtl/macos/Makefile
  50. 0 7
      rtl/macos/Makefile.fpc
  51. 100 46
      rtl/morphos/Makefile
  52. 1 11
      rtl/morphos/Makefile.fpc
  53. 99 40
      rtl/msdos/Makefile
  54. 103 82
      rtl/msxdos/Makefile
  55. 14 76
      rtl/msxdos/Makefile.fpc
  56. 105 48
      rtl/nativent/Makefile
  57. 12 15
      rtl/nativent/Makefile.fpc
  58. 101 63
      rtl/nds/Makefile
  59. 3 52
      rtl/nds/Makefile.fpc
  60. 122 116
      rtl/netbsd/Makefile
  61. 23 130
      rtl/netbsd/Makefile.fpc
  62. 101 43
      rtl/netware/Makefile
  63. 2 11
      rtl/netware/Makefile.fpc
  64. 103 67
      rtl/netwlibc/Makefile
  65. 9 66
      rtl/netwlibc/Makefile.fpc
  66. 1 0
      rtl/objpas/classes/streams.inc
  67. 14 4
      rtl/objpas/classes/stringl.inc
  68. 114 106
      rtl/openbsd/Makefile
  69. 24 131
      rtl/openbsd/Makefile.fpc
  70. 100 44
      rtl/os2/Makefile
  71. 1 8
      rtl/os2/Makefile.fpc
  72. 102 55
      rtl/palmos/Makefile
  73. 12 56
      rtl/palmos/Makefile.fpc
  74. 8 45
      rtl/qnx/Makefile.fpc
  75. 103 48
      rtl/sinclairql/Makefile
  76. 4 18
      rtl/sinclairql/Makefile.fpc
  77. 111 98
      rtl/solaris/Makefile
  78. 18 114
      rtl/solaris/Makefile.fpc
  79. 103 44
      rtl/symbian/Makefile
  80. 4 4
      rtl/symbian/Makefile.fpc
  81. 100 41
      rtl/wasi/Makefile
  82. 1 1
      rtl/wasi/Makefile.fpc
  83. 106 54
      rtl/watcom/Makefile
  84. 8 31
      rtl/watcom/Makefile.fpc
  85. 101 80
      rtl/wii/Makefile
  86. 3 68
      rtl/wii/Makefile.fpc
  87. 107 90
      rtl/win16/Makefile
  88. 14 86
      rtl/win16/Makefile.fpc
  89. 106 46
      rtl/win32/Makefile
  90. 7 6
      rtl/win32/Makefile.fpc
  91. 107 47
      rtl/win64/Makefile
  92. 6 5
      rtl/win64/Makefile.fpc
  93. 105 47
      rtl/wince/Makefile
  94. 7 13
      rtl/wince/Makefile.fpc
  95. 101 45
      rtl/zxspectrum/Makefile
  96. 3 6
      rtl/zxspectrum/Makefile.fpc
  97. 19 0
      tests/test/tvrec1.pp
  98. 75 0
      tests/test/units/classes/tstrlonchange.pp
  99. 4 4
      utils/fpcm/fpcmake.pp
  100. 84 75
      utils/fpcm/fpcmmain.pp

+ 250 - 233
Makefile

@@ -9,6 +9,7 @@ LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari
 OSNeedsComspecToRunBatch = go32v2 watcom
 FORCE:
 .PHONY: FORCE
+lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
 override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
 ifneq ($(findstring darwin,$(OSTYPE)),)
 inUnix=1 #darwin
@@ -165,8 +166,20 @@ endif
 ifndef OS_TARGET
 OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
 endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+CPU_OS_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+ifdef SUB_TARGET
+L_SUB_TARGET=$(call lc,$(SUB_TARGET))
+FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET)-$(L_SUB_TARGET)
+else
+FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET)
+endif
+CPU_OS_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifdef SUB_SOURCE
+L_SUB_SOURCE=$(call lc,$(SUB_SOURCE))
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)-$(L_SUB_SOURCE)
+else
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+endif
 ifeq ($(CPU_TARGET),armeb)
 ARCH=arm
 override FPCOPT+=-Cb
@@ -178,39 +191,43 @@ else
 ARCH=$(CPU_TARGET)
 endif
 endif
-ifeq ($(FULL_TARGET),aarch64-embedded)
+ifeq ($(CPU_OS_TARGET),aarch64-embedded)
+endif
+ifdef SUB_TARGET 
+FPCOPT+=-t$(SUB_TARGET)
+FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
 endif
-ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(CPU_OS_TARGET),arm-embedded)
 ifeq ($(SUBARCH),)
 $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
 endif
 override FPCOPT+=-Cp$(SUBARCH)
 endif
-ifeq ($(FULL_TARGET),avr-embedded)
+ifeq ($(CPU_OS_TARGET),avr-embedded)
 ifeq ($(SUBARCH),)
 $(error When compiling for avr-embedded, a sub-architecture (e.g. SUBARCH=avr25 or SUBARCH=avr35) must be defined)
 endif
 override FPCOPT+=-Cp$(SUBARCH)
 endif
-ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(CPU_OS_TARGET),mipsel-embedded)
 ifeq ($(SUBARCH),)
 $(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
 endif
 override FPCOPT+=-Cp$(SUBARCH)
 endif
-ifeq ($(FULL_TARGET),xtensa-embedded)
+ifeq ($(CPU_OS_TARGET),xtensa-embedded)
 ifeq ($(SUBARCH),)
 $(error When compiling for xtensa-embedded, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined)
 endif
 override FPCOPT+=-Cp$(SUBARCH)
 endif
-ifeq ($(FULL_TARGET),xtensa-freertos)
+ifeq ($(CPU_OS_TARGET),xtensa-freertos)
 ifeq ($(SUBARCH),)
 $(error When compiling for xtensa-freertos, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined)
 endif
 override FPCOPT+=-Cp$(SUBARCH)
 endif
-ifeq ($(FULL_TARGET),arm-freertos)
+ifeq ($(CPU_OS_TARGET),arm-freertos)
 ifeq ($(SUBARCH),)
 $(error When compiling for arm-freertos, a sub-architecture (e.g. SUBARCH=armv6m or SUBARCH=armv7em) must be defined)
 endif
@@ -227,11 +244,11 @@ TARGETSUFFIX=$(FULL_TARGET)
 endif
 SOURCESUFFIX=$(FULL_SOURCE)
 endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+ifneq ($(CPU_OS_TARGET),$(CPU_OS_SOURCE))
 CROSSCOMPILE=1
 endif
 ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(filter $(FULL_TARGET),$(MAKEFILETARGETS)),)
+ifeq ($(filter $(CPU_OS_TARGET),$(MAKEFILETARGETS)),)
 $(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
 endif
 endif
@@ -249,7 +266,7 @@ ifdef BUILDFULLNATIVE
 BUILDNATIVE=1
 export BUILDNATIVE
 endif
-export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE SUB_TARGET SUB_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE CPU_OS_TARGET CPU_OS_SOURCE
 ifdef FPCDIR
 override FPCDIR:=$(subst \,/,$(FPCDIR))
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
@@ -523,337 +540,337 @@ INSTALLERTARGETS=emx go32v2 msdos os2
 ifneq ($(findstring $(OS_TARGET),$(INSTALLERTARGETS)),)
 INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-linux)
+ifeq ($(CPU_OS_TARGET),i386-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-go32v2)
+ifeq ($(CPU_OS_TARGET),i386-go32v2)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-win32)
+ifeq ($(CPU_OS_TARGET),i386-win32)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-os2)
+ifeq ($(CPU_OS_TARGET),i386-os2)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-freebsd)
+ifeq ($(CPU_OS_TARGET),i386-freebsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-beos)
+ifeq ($(CPU_OS_TARGET),i386-beos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-haiku)
+ifeq ($(CPU_OS_TARGET),i386-haiku)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-netbsd)
+ifeq ($(CPU_OS_TARGET),i386-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-solaris)
+ifeq ($(CPU_OS_TARGET),i386-solaris)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-netware)
+ifeq ($(CPU_OS_TARGET),i386-netware)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-openbsd)
+ifeq ($(CPU_OS_TARGET),i386-openbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-wdosx)
+ifeq ($(CPU_OS_TARGET),i386-wdosx)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-darwin)
+ifeq ($(CPU_OS_TARGET),i386-darwin)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-emx)
+ifeq ($(CPU_OS_TARGET),i386-emx)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-watcom)
+ifeq ($(CPU_OS_TARGET),i386-watcom)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
+ifeq ($(CPU_OS_TARGET),i386-netwlibc)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-wince)
+ifeq ($(CPU_OS_TARGET),i386-wince)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-embedded)
+ifeq ($(CPU_OS_TARGET),i386-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-symbian)
+ifeq ($(CPU_OS_TARGET),i386-symbian)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
+ifeq ($(CPU_OS_TARGET),i386-nativent)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
+ifeq ($(CPU_OS_TARGET),i386-iphonesim)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-android)
+ifeq ($(CPU_OS_TARGET),i386-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i386-aros)
+ifeq ($(CPU_OS_TARGET),i386-aros)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-linux)
+ifeq ($(CPU_OS_TARGET),m68k-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
+ifeq ($(CPU_OS_TARGET),m68k-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-amiga)
+ifeq ($(CPU_OS_TARGET),m68k-amiga)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-atari)
+ifeq ($(CPU_OS_TARGET),m68k-atari)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-palmos)
+ifeq ($(CPU_OS_TARGET),m68k-palmos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-macosclassic)
+ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-embedded)
+ifeq ($(CPU_OS_TARGET),m68k-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),m68k-sinclairql)
+ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-linux)
+ifeq ($(CPU_OS_TARGET),powerpc-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
+ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
+ifeq ($(CPU_OS_TARGET),powerpc-amiga)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-macosclassic)
+ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
+ifeq ($(CPU_OS_TARGET),powerpc-darwin)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
+ifeq ($(CPU_OS_TARGET),powerpc-morphos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
+ifeq ($(CPU_OS_TARGET),powerpc-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
+ifeq ($(CPU_OS_TARGET),powerpc-wii)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc-aix)
+ifeq ($(CPU_OS_TARGET),powerpc-aix)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),sparc-linux)
+ifeq ($(CPU_OS_TARGET),sparc-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
+ifeq ($(CPU_OS_TARGET),sparc-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),sparc-solaris)
+ifeq ($(CPU_OS_TARGET),sparc-solaris)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),sparc-embedded)
+ifeq ($(CPU_OS_TARGET),sparc-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-linux)
+ifeq ($(CPU_OS_TARGET),x86_64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
+ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-haiku)
+ifeq ($(CPU_OS_TARGET),x86_64-haiku)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
+ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
+ifeq ($(CPU_OS_TARGET),x86_64-solaris)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
+ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
+ifeq ($(CPU_OS_TARGET),x86_64-darwin)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-win64)
+ifeq ($(CPU_OS_TARGET),x86_64-win64)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
+ifeq ($(CPU_OS_TARGET),x86_64-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-iphonesim)
+ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-android)
+ifeq ($(CPU_OS_TARGET),x86_64-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-aros)
+ifeq ($(CPU_OS_TARGET),x86_64-aros)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),x86_64-dragonfly)
+ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-linux)
+ifeq ($(CPU_OS_TARGET),arm-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-netbsd)
+ifeq ($(CPU_OS_TARGET),arm-netbsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-palmos)
+ifeq ($(CPU_OS_TARGET),arm-palmos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-wince)
+ifeq ($(CPU_OS_TARGET),arm-wince)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-gba)
+ifeq ($(CPU_OS_TARGET),arm-gba)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-nds)
+ifeq ($(CPU_OS_TARGET),arm-nds)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(CPU_OS_TARGET),arm-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-symbian)
+ifeq ($(CPU_OS_TARGET),arm-symbian)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-android)
+ifeq ($(CPU_OS_TARGET),arm-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-aros)
+ifeq ($(CPU_OS_TARGET),arm-aros)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-freertos)
+ifeq ($(CPU_OS_TARGET),arm-freertos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),arm-ios)
+ifeq ($(CPU_OS_TARGET),arm-ios)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
+ifeq ($(CPU_OS_TARGET),powerpc64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
+ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
+ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
+ifeq ($(CPU_OS_TARGET),powerpc64-aix)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),avr-embedded)
+ifeq ($(CPU_OS_TARGET),avr-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),armeb-linux)
+ifeq ($(CPU_OS_TARGET),armeb-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),armeb-embedded)
+ifeq ($(CPU_OS_TARGET),armeb-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mips-linux)
+ifeq ($(CPU_OS_TARGET),mips-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mipsel-linux)
+ifeq ($(CPU_OS_TARGET),mipsel-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(CPU_OS_TARGET),mipsel-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mipsel-android)
+ifeq ($(CPU_OS_TARGET),mipsel-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mips64-linux)
+ifeq ($(CPU_OS_TARGET),mips64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),mips64el-linux)
+ifeq ($(CPU_OS_TARGET),mips64el-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),jvm-java)
+ifeq ($(CPU_OS_TARGET),jvm-java)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),jvm-android)
+ifeq ($(CPU_OS_TARGET),jvm-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i8086-embedded)
+ifeq ($(CPU_OS_TARGET),i8086-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i8086-msdos)
+ifeq ($(CPU_OS_TARGET),i8086-msdos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),i8086-win16)
+ifeq ($(CPU_OS_TARGET),i8086-win16)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-linux)
+ifeq ($(CPU_OS_TARGET),aarch64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-freebsd)
+ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-darwin)
+ifeq ($(CPU_OS_TARGET),aarch64-darwin)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-win64)
+ifeq ($(CPU_OS_TARGET),aarch64-win64)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-embedded)
+ifeq ($(CPU_OS_TARGET),aarch64-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-iphonesim)
+ifeq ($(CPU_OS_TARGET),aarch64-iphonesim)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-android)
+ifeq ($(CPU_OS_TARGET),aarch64-android)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),aarch64-ios)
+ifeq ($(CPU_OS_TARGET),aarch64-ios)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),wasm32-embedded)
+ifeq ($(CPU_OS_TARGET),wasm32-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),wasm32-wasi)
+ifeq ($(CPU_OS_TARGET),wasm32-wasi)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),sparc64-linux)
+ifeq ($(CPU_OS_TARGET),sparc64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),riscv32-linux)
+ifeq ($(CPU_OS_TARGET),riscv32-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),riscv32-embedded)
+ifeq ($(CPU_OS_TARGET),riscv32-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),riscv32-freertos)
+ifeq ($(CPU_OS_TARGET),riscv32-freertos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),riscv64-linux)
+ifeq ($(CPU_OS_TARGET),riscv64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),riscv64-embedded)
+ifeq ($(CPU_OS_TARGET),riscv64-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),xtensa-linux)
+ifeq ($(CPU_OS_TARGET),xtensa-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),xtensa-embedded)
+ifeq ($(CPU_OS_TARGET),xtensa-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),xtensa-freertos)
+ifeq ($(CPU_OS_TARGET),xtensa-freertos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),z80-embedded)
+ifeq ($(CPU_OS_TARGET),z80-embedded)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),z80-zxspectrum)
+ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),z80-msxdos)
+ifeq ($(CPU_OS_TARGET),z80-msxdos)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),z80-amstradcpc)
+ifeq ($(CPU_OS_TARGET),z80-amstradcpc)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
-ifeq ($(FULL_TARGET),loongarch64-linux)
+ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_DIRS+=compiler rtl utils packages installer
 endif
 override INSTALL_FPCPACKAGE=y
@@ -2183,777 +2200,777 @@ endif
 fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
 fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
 fpc_makefiles: fpc_makefile fpc_makefile_dirs
-ifeq ($(FULL_TARGET),i386-linux)
+ifeq ($(CPU_OS_TARGET),i386-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-go32v2)
+ifeq ($(CPU_OS_TARGET),i386-go32v2)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-win32)
+ifeq ($(CPU_OS_TARGET),i386-win32)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-os2)
+ifeq ($(CPU_OS_TARGET),i386-os2)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-freebsd)
+ifeq ($(CPU_OS_TARGET),i386-freebsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-beos)
+ifeq ($(CPU_OS_TARGET),i386-beos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-haiku)
+ifeq ($(CPU_OS_TARGET),i386-haiku)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-netbsd)
+ifeq ($(CPU_OS_TARGET),i386-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-solaris)
+ifeq ($(CPU_OS_TARGET),i386-solaris)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-netware)
+ifeq ($(CPU_OS_TARGET),i386-netware)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-openbsd)
+ifeq ($(CPU_OS_TARGET),i386-openbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-wdosx)
+ifeq ($(CPU_OS_TARGET),i386-wdosx)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-darwin)
+ifeq ($(CPU_OS_TARGET),i386-darwin)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-emx)
+ifeq ($(CPU_OS_TARGET),i386-emx)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-watcom)
+ifeq ($(CPU_OS_TARGET),i386-watcom)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
+ifeq ($(CPU_OS_TARGET),i386-netwlibc)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-wince)
+ifeq ($(CPU_OS_TARGET),i386-wince)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-embedded)
+ifeq ($(CPU_OS_TARGET),i386-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-symbian)
+ifeq ($(CPU_OS_TARGET),i386-symbian)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-nativent)
+ifeq ($(CPU_OS_TARGET),i386-nativent)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
+ifeq ($(CPU_OS_TARGET),i386-iphonesim)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-android)
+ifeq ($(CPU_OS_TARGET),i386-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i386-aros)
+ifeq ($(CPU_OS_TARGET),i386-aros)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-linux)
+ifeq ($(CPU_OS_TARGET),m68k-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
+ifeq ($(CPU_OS_TARGET),m68k-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-amiga)
+ifeq ($(CPU_OS_TARGET),m68k-amiga)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-atari)
+ifeq ($(CPU_OS_TARGET),m68k-atari)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-palmos)
+ifeq ($(CPU_OS_TARGET),m68k-palmos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-macosclassic)
+ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-embedded)
+ifeq ($(CPU_OS_TARGET),m68k-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),m68k-sinclairql)
+ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-linux)
+ifeq ($(CPU_OS_TARGET),powerpc-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
+ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
+ifeq ($(CPU_OS_TARGET),powerpc-amiga)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-macosclassic)
+ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
+ifeq ($(CPU_OS_TARGET),powerpc-darwin)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
+ifeq ($(CPU_OS_TARGET),powerpc-morphos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
+ifeq ($(CPU_OS_TARGET),powerpc-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-wii)
+ifeq ($(CPU_OS_TARGET),powerpc-wii)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc-aix)
+ifeq ($(CPU_OS_TARGET),powerpc-aix)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),sparc-linux)
+ifeq ($(CPU_OS_TARGET),sparc-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
+ifeq ($(CPU_OS_TARGET),sparc-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),sparc-solaris)
+ifeq ($(CPU_OS_TARGET),sparc-solaris)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),sparc-embedded)
+ifeq ($(CPU_OS_TARGET),sparc-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-linux)
+ifeq ($(CPU_OS_TARGET),x86_64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
+ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-haiku)
+ifeq ($(CPU_OS_TARGET),x86_64-haiku)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
+ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
+ifeq ($(CPU_OS_TARGET),x86_64-solaris)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
+ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
+ifeq ($(CPU_OS_TARGET),x86_64-darwin)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-win64)
+ifeq ($(CPU_OS_TARGET),x86_64-win64)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
+ifeq ($(CPU_OS_TARGET),x86_64-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-iphonesim)
+ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-android)
+ifeq ($(CPU_OS_TARGET),x86_64-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-aros)
+ifeq ($(CPU_OS_TARGET),x86_64-aros)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),x86_64-dragonfly)
+ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-linux)
+ifeq ($(CPU_OS_TARGET),arm-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-netbsd)
+ifeq ($(CPU_OS_TARGET),arm-netbsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-palmos)
+ifeq ($(CPU_OS_TARGET),arm-palmos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-wince)
+ifeq ($(CPU_OS_TARGET),arm-wince)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-gba)
+ifeq ($(CPU_OS_TARGET),arm-gba)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-nds)
+ifeq ($(CPU_OS_TARGET),arm-nds)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(CPU_OS_TARGET),arm-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-symbian)
+ifeq ($(CPU_OS_TARGET),arm-symbian)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-android)
+ifeq ($(CPU_OS_TARGET),arm-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-aros)
+ifeq ($(CPU_OS_TARGET),arm-aros)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-freertos)
+ifeq ($(CPU_OS_TARGET),arm-freertos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),arm-ios)
+ifeq ($(CPU_OS_TARGET),arm-ios)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
+ifeq ($(CPU_OS_TARGET),powerpc64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
+ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
+ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
+ifeq ($(CPU_OS_TARGET),powerpc64-aix)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),avr-embedded)
+ifeq ($(CPU_OS_TARGET),avr-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),armeb-linux)
+ifeq ($(CPU_OS_TARGET),armeb-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),armeb-embedded)
+ifeq ($(CPU_OS_TARGET),armeb-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mips-linux)
+ifeq ($(CPU_OS_TARGET),mips-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mipsel-linux)
+ifeq ($(CPU_OS_TARGET),mipsel-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(CPU_OS_TARGET),mipsel-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mipsel-android)
+ifeq ($(CPU_OS_TARGET),mipsel-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mips64-linux)
+ifeq ($(CPU_OS_TARGET),mips64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),mips64el-linux)
+ifeq ($(CPU_OS_TARGET),mips64el-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),jvm-java)
+ifeq ($(CPU_OS_TARGET),jvm-java)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),jvm-android)
+ifeq ($(CPU_OS_TARGET),jvm-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i8086-embedded)
+ifeq ($(CPU_OS_TARGET),i8086-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i8086-msdos)
+ifeq ($(CPU_OS_TARGET),i8086-msdos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),i8086-win16)
+ifeq ($(CPU_OS_TARGET),i8086-win16)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-linux)
+ifeq ($(CPU_OS_TARGET),aarch64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-freebsd)
+ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-darwin)
+ifeq ($(CPU_OS_TARGET),aarch64-darwin)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-win64)
+ifeq ($(CPU_OS_TARGET),aarch64-win64)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-embedded)
+ifeq ($(CPU_OS_TARGET),aarch64-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-iphonesim)
+ifeq ($(CPU_OS_TARGET),aarch64-iphonesim)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-android)
+ifeq ($(CPU_OS_TARGET),aarch64-android)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),aarch64-ios)
+ifeq ($(CPU_OS_TARGET),aarch64-ios)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),wasm32-embedded)
+ifeq ($(CPU_OS_TARGET),wasm32-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),wasm32-wasi)
+ifeq ($(CPU_OS_TARGET),wasm32-wasi)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),sparc64-linux)
+ifeq ($(CPU_OS_TARGET),sparc64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),riscv32-linux)
+ifeq ($(CPU_OS_TARGET),riscv32-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),riscv32-embedded)
+ifeq ($(CPU_OS_TARGET),riscv32-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),riscv32-freertos)
+ifeq ($(CPU_OS_TARGET),riscv32-freertos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),riscv64-linux)
+ifeq ($(CPU_OS_TARGET),riscv64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),riscv64-embedded)
+ifeq ($(CPU_OS_TARGET),riscv64-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),xtensa-linux)
+ifeq ($(CPU_OS_TARGET),xtensa-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),xtensa-embedded)
+ifeq ($(CPU_OS_TARGET),xtensa-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),xtensa-freertos)
+ifeq ($(CPU_OS_TARGET),xtensa-freertos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),z80-embedded)
+ifeq ($(CPU_OS_TARGET),z80-embedded)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),z80-zxspectrum)
+ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),z80-msxdos)
+ifeq ($(CPU_OS_TARGET),z80-msxdos)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),z80-amstradcpc)
+ifeq ($(CPU_OS_TARGET),z80-amstradcpc)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1
 TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_INSTALLER=1
 endif
-ifeq ($(FULL_TARGET),loongarch64-linux)
+ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 TARGET_DIRS_COMPILER=1
 TARGET_DIRS_RTL=1
 TARGET_DIRS_UTILS=1

File diff suppressed because it is too large
+ 706 - 678
compiler/Makefile


+ 12 - 1
compiler/Makefile.fpc

@@ -235,6 +235,12 @@ override RTLOPT+=$(RTLOPTLEVEL4)
 override LOCALOPT+=$(OPTNEW)
 override RTLOPT+=$(OPTNEW)
 endif
+else
+ifdef COMPDATESTR
+ifeq ($(FPC_VERSION),$(PACKAGE_VERSION))
+override LOCALOPT+=-DD$(COMPDATESTR)
+endif
+endif
 endif
 
 # Make OPT empty. It is copied to LOCALOPT and RTLOPT
@@ -351,7 +357,12 @@ REVSTR:=$(REVSTR)-$(word 4,$(subst -, ,$(GITDESCRIBE)))
 export REVSTR
   else
    ifneq ($(SVNVERSION),)
-REVSTR:=$(subst r,,$(subst r1:,,r$(subst exported,,$(shell $(SVNVERSION) -c .))))
+SVNVERSTR:=$(shell $(SVNVERSION) -c .)
+    ifneq ($(words $(SVNVERSTR)),1)
+REVSTR:=$(subst $() $(),_,$(SVNVERSTR))
+    else
+REVSTR:=$(subst r,,$(subst r1:,,r$(subst exported,,$(SVNVERSTR))))
+    endif
 export REVSTR
    endif
   endif

+ 6 - 6
compiler/llvm/rgllvm.pas

@@ -41,8 +41,8 @@ unit rgllvm;
         procedure do_spill_read(list: TAsmList; pos: tai; const spilltemp: treference; tempreg: tregister; orgsupreg: tsuperregister); override;
         procedure do_spill_written(list: TAsmList; pos: tai; const spilltemp: treference; tempreg: tregister; orgsupreg: tsuperregister); override;
        protected
-        function instr_get_oper_spilling_info(var regs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean; override;
-        procedure substitute_spilled_registers(const regs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint); override;
+        function instr_get_oper_spilling_info(var spregs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean; override;
+        procedure substitute_spilled_registers(const spregs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint); override;
         procedure determine_spill_registers(list: TasmList; headertai: tai); override;
         procedure get_spill_temp(list:TAsmlist;spill_temps: Pspill_temp_list; supreg: tsuperregister);override;
        strict protected
@@ -121,7 +121,7 @@ implementation
       end;
 
 
-    function trgllvm.instr_get_oper_spilling_info(var regs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean;
+    function trgllvm.instr_get_oper_spilling_info(var spregs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean;
       var
         paracnt: longint;
         callpara: pllvmcallpara;
@@ -138,7 +138,7 @@ implementation
                       if (callpara^.val.typ=top_reg) and
                          (getregtype(callpara^.val.register)=regtype) then
                         begin
-                          result:=addreginfo(regs,r,callpara^.val.register,operand_read) or result;
+                          result:=addreginfo(spregs,r,callpara^.val.register,operand_read) or result;
                           break
                         end;
                     end;
@@ -150,7 +150,7 @@ implementation
       end;
 
 
-    procedure trgllvm.substitute_spilled_registers(const regs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint);
+    procedure trgllvm.substitute_spilled_registers(const spregs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint);
       var
         i, paracnt: longint;
         callpara: pllvmcallpara;
@@ -164,7 +164,7 @@ implementation
                     callpara:=pllvmcallpara(paras[paracnt]);
                     if (callpara^.val.typ=top_reg) and
                        (getregtype(callpara^.val.register)=regtype) then
-                      try_replace_reg(regs, callpara^.val.register,true);
+                      try_replace_reg(spregs, callpara^.val.register,true);
                   end;
               end;
             else

+ 64 - 12
compiler/loongarch64/cgcpu.pas

@@ -93,7 +93,8 @@ unit cgcpu;
         procedure g_proc_exit(list: TAsmList; parasize: longint; nostackframe: boolean); override;
 
       protected
-        function fixref(list: TAsmList; var ref: treference; mode : tfixref): boolean;
+        function fixref(list: TAsmList; var ref: treference; mode : tfixref;out tmpreg : tregister): boolean;
+        procedure ungetregister(r : tregister;list :TAsmList);
         procedure maybeadjustresult(list: TAsmList; op: topcg; size: tcgsize; dst: tregister);
       end;
 
@@ -326,6 +327,7 @@ implementation
         href: treference;
         op: TAsmOp;
         hlist: TAsmList;
+        tmpreg : tregister;
       const
         st_ops: array[boolean,OS_8..OS_INT] of TAsmOp = (
           (A_ST_B,A_ST_H,A_ST_W,A_ST_D),
@@ -343,18 +345,21 @@ implementation
         if stptr_ops[tosize]<>A_NONE then
           begin
             href:=ref;
-            if fixref(hlist,href,fr_big) then
+            if fixref(hlist,href,fr_big,tmpreg) then
               begin
                 list.concatList(hlist);
                 hlist.free;
                 list.concat(taicpu.op_reg_ref(stptr_ops[tosize],reg,href));
                 exit;
-              end;
+              end
+            else
+              if (tmpreg<>NR_NO) then
+                ungetregister(tmpreg,hlist);
           end;
         hlist.Clear;
         hlist.free;
         href:=ref;
-        op:=st_ops[fixref(list,href,fr_reg),tosize];
+        op:=st_ops[fixref(list,href,fr_reg,tmpreg),tosize];
         list.concat(taicpu.op_reg_ref(op,reg,href));
       end;
 
@@ -367,6 +372,7 @@ implementation
         have_done: boolean;
         hlist: TAsmList;
         samesign: boolean;
+        tmpreg : tregister;
       const
         ld_ops: array[boolean,boolean,OS_8..OS_INT] of TAsmOp = (
           ((A_LD_B,A_LD_H,A_LD_W,A_LD_D),
@@ -375,6 +381,7 @@ implementation
            (A_LDX_BU,A_LDX_HU,A_LDX_WU,A_LDX_D))
         );
       begin
+        tmpreg:=NR_NO;
         if not (fromsize in [OS_8..OS_INT,OS_S8..OS_SINT]) then
           internalerror(2022111938);
         if not (tosize in [OS_8..OS_INT,OS_S8..OS_SINT]) then
@@ -388,7 +395,7 @@ implementation
         if (fromsize=OS_S32) then
           begin
             href:=ref;
-            if fixref(hlist,href,fr_big) then
+            if fixref(hlist,href,fr_big,tmpreg) then
               begin
                 hlist.concat(taicpu.op_reg_ref(A_LDPTR_W,reg,href));
                 have_done:=true;
@@ -397,7 +404,7 @@ implementation
         else if (fromsize=OS_S64) or (fromsize=OS_64) then
           begin
             href:=ref;
-            if fixref(hlist,href,fr_big) then
+            if fixref(hlist,href,fr_big,tmpreg) then
               begin
                 hlist.concat(taicpu.op_reg_ref(A_LDPTR_D,reg,href));
                 have_done:=true;
@@ -406,9 +413,11 @@ implementation
 
         if not(have_done) then
           begin
+            if (tmpreg<>NR_NO) then
+              ungetregister(tmpreg,hlist);
             hlist.Clear;
             href:=ref;
-            op:=ld_ops[fixref(list,href,fr_reg),fromsize=usizef,usizef];
+            op:=ld_ops[fixref(list,href,fr_reg,tmpreg),fromsize=usizef,usizef];
             list.concat(taicpu.op_reg_ref(op,reg,href));
           end
         else
@@ -489,9 +498,10 @@ implementation
       var
         href: treference;
         l: TAsmLabel;
+        tmpreg : tregister;
       begin
         href:=ref;
-        fixref(list,href,fr_normal);
+        fixref(list,href,fr_normal,tmpreg);
         { Fixref, so simplely work here. }
         if href.offset=0 then
           a_load_reg_reg(list,OS_ADDR,OS_ADDR,href.base,r)
@@ -804,6 +814,7 @@ implementation
       var
         op: TAsmOp;
         href: treference;
+        tmpreg : tregister;
       const
         fld_ops: array[boolean,boolean] of TAsmOp = (
           (A_FLD_D, A_FLD_S),
@@ -811,7 +822,7 @@ implementation
         );
       begin
         href:=ref;
-        op:=fld_ops[fixref(list,href,fr_reg),fromsize=OS_F32];
+        op:=fld_ops[fixref(list,href,fr_reg,tmpreg),fromsize=OS_F32];
         list.concat(taicpu.op_reg_ref(op,reg,href));
         if fromsize<>tosize then
           a_loadfpu_reg_reg(list,fromsize,tosize,reg,reg);
@@ -822,6 +833,7 @@ implementation
         op: TAsmOp;
         tmpfreg: TRegister;
         href: treference;
+        tmpreg : tregister;
         fst_ops: array[boolean,boolean] of TAsmOp = (
           (A_FST_D, A_FST_S),
           (A_FSTX_D, A_FSTX_S)
@@ -835,7 +847,7 @@ implementation
           end;
 
         href:=ref;
-        op:=fst_ops[fixref(list,href,fr_reg),tosize=OS_F32];
+        op:=fst_ops[fixref(list,href,fr_reg,tmpreg),tosize=OS_F32];
         list.concat(taicpu.op_reg_ref(op,reg,href));
       end;
 
@@ -1440,11 +1452,51 @@ implementation
         a_op_reg_reg_reg(list,op,size,src1,src2,dst);
     end;
 
-    function tcgloongarch64.fixref(list: TAsmList; var ref: treference; mode : tfixref): boolean;
+
+    procedure tcgloongarch64.ungetregister(r : tregister;list : TAsmList);
+      var
+        supreg : tsuperregister;
+        rt : tregistertype;
+        live : tai;
+      function is_in_list(t : tai;hlist : TAsmList) : boolean;
+        var
+          current : tai;
+        begin
+          result:=false;
+          if not assigned(t) then
+            exit;
+          current:=tai(hlist.first);
+          while assigned(current) do
+            begin
+              if (current=t) then
+                begin
+                  result:=true;
+                  exit;
+                end
+              else
+                current:=tai(current.next);
+            end;
+        end;
+
+      begin
+        if not assigned(list) then
+          exit;
+        supreg:=getsupreg(r);
+        rt:=getregtype(r);
+        if assigned(rg[rt]) then
+          begin
+            if is_in_list(rg[rt].live_start[supreg],list) then
+              rg[rt].live_start[supreg]:=nil;
+            if is_in_list(rg[rt].live_end[supreg],list) then
+              rg[rt].live_end[supreg]:=nil;
+          end;
+      end;
+
+    function tcgloongarch64.fixref(list: TAsmList; var ref: treference; mode : tfixref; out tmpreg : tregister): boolean;
       var
-        tmpreg: TRegister;
         href: treference;
       begin
+        tmpreg:=NR_NO;
         if ref.refaddr=addr_reg_12i then
           begin
             result:=mode=fr_normal;

+ 12 - 9
compiler/pdecvar.pas

@@ -1982,16 +1982,19 @@ implementation
 
               { including a field declaration? }
               fieldvs:=nil;
-              sorg:=orgpattern;
-              hs:=pattern;
-              searchsym(hs,srsym,srsymtable);
-              if not(assigned(srsym) and (srsym.typ in [typesym,unitsym])) then
+              if token=_ID then
                 begin
-                  consume(_ID);
-                  consume(_COLON);
-                  fieldvs:=cfieldvarsym.create(sorg,vs_value,generrordef,[]);
-                  variantdesc^^.variantselector:=fieldvs;
-                  symtablestack.top.insertsym(fieldvs);
+                  sorg:=orgpattern;
+                  hs:=pattern;
+                  searchsym(hs,srsym,srsymtable);
+                  if not(assigned(srsym) and (srsym.typ in [typesym,unitsym])) then
+                    begin
+                      consume(_ID);
+                      consume(_COLON);
+                      fieldvs:=cfieldvarsym.create(sorg,vs_value,generrordef,[]);
+                      variantdesc^^.variantselector:=fieldvs;
+                      symtablestack.top.insertsym(fieldvs);
+                    end;
                 end;
               read_anon_type(casetype,true);
               block_type:=bt_var;

+ 60 - 60
compiler/rgobj.pas

@@ -134,8 +134,8 @@ unit rgobj;
         regread, regwritten, mustbespilled: boolean;
       end;
       tspillregsinfo = record
-        reginfocount: longint;
-        reginfo: array[0..3] of tspillreginfo;
+        spillreginfocount: longint;
+        spillreginfo: array[0..3] of tspillreginfo;
       end;
 
       Pspill_temp_list=^Tspill_temp_list;
@@ -216,10 +216,10 @@ unit rgobj;
         procedure do_spill_read(list:TAsmList;pos:tai;const spilltemp:treference;tempreg:tregister;orgsupreg:tsuperregister);virtual;
         procedure do_spill_written(list:TAsmList;pos:tai;const spilltemp:treference;tempreg:tregister;orgsupreg:tsuperregister);virtual;
 
-        function addreginfo(var regs: tspillregsinfo; const r: tsuperregisterset; reg: tregister; operation: topertype): boolean;
-        function instr_get_oper_spilling_info(var regs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean; virtual;
-        procedure substitute_spilled_registers(const regs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint); virtual;
-        procedure try_replace_reg(const regs: tspillregsinfo; var reg: tregister; useloadreg: boolean);
+        function addreginfo(var spregs: tspillregsinfo; const r: tsuperregisterset; reg: tregister; operation: topertype): boolean;
+        function instr_get_oper_spilling_info(var spregs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean; virtual;
+        procedure substitute_spilled_registers(const spregs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint); virtual;
+        procedure try_replace_reg(const spregs: tspillregsinfo; var reg: tregister; useloadreg: boolean);
         function instr_spill_register(list:TAsmList;
                                       instr:tai_cpu_abstract_sym;
                                       const r:Tsuperregisterset;
@@ -2624,47 +2624,47 @@ unit rgobj;
       end;
 
 
-    function trgobj.addreginfo(var regs: tspillregsinfo; const r: tsuperregisterset; reg: tregister; operation: topertype): boolean;
+    function trgobj.addreginfo(var spregs: tspillregsinfo; const r: tsuperregisterset; reg: tregister; operation: topertype): boolean;
       var
         i, tmpindex: longint;
         supreg: tsuperregister;
       begin
         result:=false;
-        tmpindex := regs.reginfocount;
+        tmpindex := spregs.spillreginfocount;
         supreg := get_alias(getsupreg(reg));
         { did we already encounter this register? }
-        for i := 0 to pred(regs.reginfocount) do
-          if (regs.reginfo[i].orgreg = supreg) then
+        for i := 0 to pred(spregs.spillreginfocount) do
+          if (spregs.spillreginfo[i].orgreg = supreg) then
             begin
               tmpindex := i;
               break;
             end;
-        if tmpindex > high(regs.reginfo) then
+        if tmpindex > high(spregs.spillreginfo) then
           internalerror(2003120301);
-        regs.reginfo[tmpindex].orgreg := supreg;
-        include(regs.reginfo[tmpindex].spillregconstraints,get_spill_subreg(reg));
+        spregs.spillreginfo[tmpindex].orgreg := supreg;
+        include(spregs.spillreginfo[tmpindex].spillregconstraints,get_spill_subreg(reg));
         if supregset_in(r,supreg) then
           begin
             { add/update info on this register }
-            regs.reginfo[tmpindex].mustbespilled := true;
+            spregs.spillreginfo[tmpindex].mustbespilled := true;
             case operation of
               operand_read:
-                regs.reginfo[tmpindex].regread := true;
+                spregs.spillreginfo[tmpindex].regread := true;
               operand_write:
-                regs.reginfo[tmpindex].regwritten := true;
+                spregs.spillreginfo[tmpindex].regwritten := true;
               operand_readwrite:
                 begin
-                  regs.reginfo[tmpindex].regread := true;
-                  regs.reginfo[tmpindex].regwritten := true;
+                  spregs.spillreginfo[tmpindex].regread := true;
+                  spregs.spillreginfo[tmpindex].regwritten := true;
                 end;
             end;
             result:=true;
           end;
-        inc(regs.reginfocount,ord(regs.reginfocount=tmpindex));
+        inc(spregs.spillreginfocount,ord(spregs.spillreginfocount=tmpindex));
       end;
 
 
-    function trgobj.instr_get_oper_spilling_info(var regs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean;
+    function trgobj.instr_get_oper_spilling_info(var spregs: tspillregsinfo; const r: tsuperregisterset; instr: tai_cpu_abstract_sym; opidx: longint): boolean;
       begin
         result:=false;
         with instr.oper[opidx]^ do
@@ -2673,7 +2673,7 @@ unit rgobj;
               top_reg:
                 begin
                   if (getregtype(reg) = regtype) then
-                    result:=addreginfo(regs,r,reg,instr.spilling_get_operation_type(opidx));
+                    result:=addreginfo(spregs,r,reg,instr.spilling_get_operation_type(opidx));
                 end;
               top_ref:
                 begin
@@ -2682,14 +2682,14 @@ unit rgobj;
                       begin
                         if (base <> NR_NO) and
                             (getregtype(base)=regtype) then
-                          result:=addreginfo(regs,r,base,instr.spilling_get_operation_type_ref(opidx,base));
+                          result:=addreginfo(spregs,r,base,instr.spilling_get_operation_type_ref(opidx,base));
                         if (index <> NR_NO) and
                             (getregtype(index)=regtype) then
-                          result:=addreginfo(regs,r,index,instr.spilling_get_operation_type_ref(opidx,index)) or result;
+                          result:=addreginfo(spregs,r,index,instr.spilling_get_operation_type_ref(opidx,index)) or result;
 {$if defined(x86)}
                         if (segment <> NR_NO) and
                             (getregtype(segment)=regtype) then
-                          result:=addreginfo(regs,r,segment,instr.spilling_get_operation_type_ref(opidx,segment)) or result;
+                          result:=addreginfo(spregs,r,segment,instr.spilling_get_operation_type_ref(opidx,segment)) or result;
 {$endif defined(x86)}
                       end;
                 end;
@@ -2698,7 +2698,7 @@ unit rgobj;
                 begin
                   if regtype in [R_INTREGISTER,R_ADDRESSREGISTER] then
                     if shifterop^.rs<>NR_NO then
-                      result:=addreginfo(regs,r,shifterop^.rs,operand_read);
+                      result:=addreginfo(spregs,r,shifterop^.rs,operand_read);
                 end;
 {$endif ARM}
               else
@@ -2708,34 +2708,34 @@ unit rgobj;
       end;
 
 
-    procedure trgobj.try_replace_reg(const regs: tspillregsinfo; var reg: tregister; useloadreg: boolean);
+    procedure trgobj.try_replace_reg(const spregs: tspillregsinfo; var reg: tregister; useloadreg: boolean);
       var
         i: longint;
         supreg: tsuperregister;
       begin
         supreg:=get_alias(getsupreg(reg));
-        for i:=0 to pred(regs.reginfocount) do
-          if (regs.reginfo[i].mustbespilled) and
-             (regs.reginfo[i].orgreg=supreg) then
+        for i:=0 to pred(spregs.spillreginfocount) do
+          if (spregs.spillreginfo[i].mustbespilled) and
+             (spregs.spillreginfo[i].orgreg=supreg) then
             begin
               { Only replace supreg }
               if useloadreg then
-                setsupreg(reg, getsupreg(regs.reginfo[i].loadreg))
+                setsupreg(reg, getsupreg(spregs.spillreginfo[i].loadreg))
               else
-                setsupreg(reg, getsupreg(regs.reginfo[i].storereg));
+                setsupreg(reg, getsupreg(spregs.spillreginfo[i].storereg));
               break;
             end;
       end;
 
 
-    procedure trgobj.substitute_spilled_registers(const regs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint);
+    procedure trgobj.substitute_spilled_registers(const spregs: tspillregsinfo; instr: tai_cpu_abstract_sym; opidx: longint);
       begin
         with instr.oper[opidx]^ do
           case typ of
             top_reg:
               begin
                 if (getregtype(reg) = regtype) then
-                  try_replace_reg(regs, reg, not ssa_safe or
+                  try_replace_reg(spregs, reg, not ssa_safe or
                     (instr.spilling_get_operation_type(opidx)=operand_read));
               end;
             top_ref:
@@ -2744,16 +2744,16 @@ unit rgobj;
                   begin
                     if (ref^.base <> NR_NO) and
                         (getregtype(ref^.base)=regtype) then
-                      try_replace_reg(regs, ref^.base,
+                      try_replace_reg(spregs, ref^.base,
                         not ssa_safe or (instr.spilling_get_operation_type_ref(opidx, ref^.base)=operand_read));
                     if (ref^.index <> NR_NO) and
                         (getregtype(ref^.index)=regtype) then
-                      try_replace_reg(regs, ref^.index,
+                      try_replace_reg(spregs, ref^.index,
                         not ssa_safe or (instr.spilling_get_operation_type_ref(opidx, ref^.index)=operand_read));
   {$if defined(x86)}
                     if (ref^.segment <> NR_NO) and
                         (getregtype(ref^.segment)=regtype) then
-                      try_replace_reg(regs, ref^.segment, true { always read-only });
+                      try_replace_reg(spregs, ref^.segment, true { always read-only });
   {$endif defined(x86)}
                   end;
               end;
@@ -2761,7 +2761,7 @@ unit rgobj;
             top_shifterop:
               begin
                 if regtype in [R_INTREGISTER, R_ADDRESSREGISTER] then
-                  try_replace_reg(regs, shifterop^.rs, true { always read-only });
+                  try_replace_reg(spregs, shifterop^.rs, true { always read-only });
               end;
   {$endif ARM}
             else
@@ -2776,7 +2776,7 @@ unit rgobj;
                                          const spilltemplist:Tspill_temp_list): boolean;
       var
         counter: longint;
-        regs: tspillregsinfo;
+        spregs: tspillregsinfo;
         spilled: boolean;
       var
         loadpos,
@@ -2784,32 +2784,32 @@ unit rgobj;
         oldlive_registers : tsuperregisterworklist;
       begin
         result := false;
-        fillchar(regs,sizeof(regs),0);
-        for counter := low(regs.reginfo) to high(regs.reginfo) do
+        fillchar(spregs,sizeof(spregs),0);
+        for counter := low(spregs.spillreginfo) to high(spregs.spillreginfo) do
           begin
-            regs.reginfo[counter].orgreg := RS_INVALID;
-            regs.reginfo[counter].loadreg := NR_INVALID;
-            regs.reginfo[counter].storereg := NR_INVALID;
+            spregs.spillreginfo[counter].orgreg := RS_INVALID;
+            spregs.spillreginfo[counter].loadreg := NR_INVALID;
+            spregs.spillreginfo[counter].storereg := NR_INVALID;
           end;
         spilled := false;
 
         { check whether and if so which and how (read/written) this instructions contains
           registers that must be spilled }
         for counter := 0 to instr.ops-1 do
-          spilled:=instr_get_oper_spilling_info(regs,r,instr,counter) or spilled;
+          spilled:=instr_get_oper_spilling_info(spregs,r,instr,counter) or spilled;
 
         { if no spilling for this instruction we can leave }
         if not spilled then
           exit;
 
         { Check if the instruction is "OP reg1,reg2" and reg1 is coalesced with reg2 }
-        if (regs.reginfocount=1) and (instr.ops=2) and
+        if (spregs.spillreginfocount=1) and (instr.ops=2) and
           (instr.oper[0]^.typ=top_reg) and (instr.oper[1]^.typ=top_reg) and
           (getregtype(instr.oper[0]^.reg)=getregtype(instr.oper[1]^.reg)) then
           begin
             { Set both registers in the instruction to the same register }
-            setsupreg(instr.oper[0]^.reg, regs.reginfo[0].orgreg);
-            setsupreg(instr.oper[1]^.reg, regs.reginfo[0].orgreg);
+            setsupreg(instr.oper[0]^.reg, spregs.spillreginfo[0].orgreg);
+            setsupreg(instr.oper[1]^.reg, spregs.spillreginfo[0].orgreg);
             { In case of MOV reg,reg no spilling is needed.
               This MOV will be removed later in translate_registers() }
             if instr.is_same_reg_move(regtype) then
@@ -2822,8 +2822,8 @@ unit rgobj;
 
           For non-x86 it is nevertheless possible to replace moves to/from the register
           with loads/stores to spilltemp (Sergei) }
-        for counter := 0 to pred(regs.reginfocount) do
-          with regs.reginfo[counter] do
+        for counter := 0 to pred(spregs.spillreginfocount) do
+          with spregs.spillreginfo[counter] do
             begin
               if mustbespilled then
                 begin
@@ -2891,12 +2891,12 @@ unit rgobj;
         loadpos:=tai(loadpos.next);
 
         { Load the spilled registers }
-        for counter := 0 to pred(regs.reginfocount) do
-          with regs.reginfo[counter] do
+        for counter := 0 to pred(spregs.spillreginfocount) do
+          with spregs.spillreginfo[counter] do
             begin
               if mustbespilled and regread then
                 begin
-                  loadreg:=getregisterinline(list,regs.reginfo[counter].spillregconstraints);
+                  loadreg:=getregisterinline(list,spregs.spillreginfo[counter].spillregconstraints);
                   do_spill_read(list,tai(loadpos.previous),spilltemplist[orgreg],loadreg,orgreg);
                   include(reginfo[getsupreg(loadreg)].flags,ri_spill_helper);
                 end;
@@ -2904,8 +2904,8 @@ unit rgobj;
 
         { Release temp registers of read-only registers, and add reference of the instruction
           to the reginfo }
-        for counter := 0 to pred(regs.reginfocount) do
-          with regs.reginfo[counter] do
+        for counter := 0 to pred(spregs.spillreginfocount) do
+          with spregs.spillreginfo[counter] do
             begin
               if mustbespilled and regread and
                 (ssa_safe or
@@ -2926,8 +2926,8 @@ unit rgobj;
 
         { Allocate temp registers of write-only registers, and add reference of the instruction
           to the reginfo }
-        for counter := 0 to pred(regs.reginfocount) do
-          with regs.reginfo[counter] do
+        for counter := 0 to pred(spregs.spillreginfocount) do
+          with spregs.spillreginfo[counter] do
             begin
               if mustbespilled and regwritten then
                 begin
@@ -2935,7 +2935,7 @@ unit rgobj;
                   if (not regread) or
                      ssa_safe then
                     begin
-                      storereg:=getregisterinline(list,regs.reginfo[counter].spillregconstraints);
+                      storereg:=getregisterinline(list,spregs.spillreginfo[counter].spillregconstraints);
                       include(reginfo[getsupreg(storereg)].flags,ri_spill_helper);
                       { we also use loadreg for store replacements in case we
                         don't have ensure ssa -> initialise loadreg even if
@@ -2962,8 +2962,8 @@ unit rgobj;
         if not assigned(instr.next) then
           list.concat(tai_marker.Create(mark_Position));
         storepos:=tai(instr.next);
-        for counter := 0 to pred(regs.reginfocount) do
-          with regs.reginfo[counter] do
+        for counter := 0 to pred(spregs.spillreginfocount) do
+          with spregs.spillreginfo[counter] do
             begin
               if mustbespilled and regwritten then
                 begin
@@ -2980,7 +2980,7 @@ unit rgobj;
 
         { substitute registers }
         for counter:=0 to instr.ops-1 do
-          substitute_spilled_registers(regs,instr,counter);
+          substitute_spilled_registers(spregs,instr,counter);
         { We have modified the instruction; perhaps the new instruction has
           certain constraints regarding which imaginary registers interfere
           with certain physical registers. }

File diff suppressed because it is too large
+ 472 - 455
compiler/utils/Makefile


+ 9 - 9
packages/fcl-base/src/uriparser.pp

@@ -101,16 +101,16 @@ end;
 function EncodeURI(const URI: TURI): String;
 // ! if no scheme then first colon in path should be escaped
 begin
-  SetLength(Result, 0);
-  if Length(URI.Protocol) > 0 then
+  Result := '';
+  if URI.Protocol <> '' then
     Result := LowerCase(URI.Protocol) + ':';
   if URI.HasAuthority then
   begin
     Result := Result + '//';
-    if Length(URI.Username) > 0 then
+    if URI.Username <> '' then
     begin
       Result := Result + URI.Username;
-      if Length(URI.Password) > 0 then
+      if URI.Password <> '' then
         Result := Result + ':' + URI.Password;
       Result := Result + '@';
     end;
@@ -119,15 +119,15 @@ begin
   if URI.Port <> 0 then
     Result := Result + ':' + IntToStr(URI.Port);
   Result := Result + Escape(URI.Path, ValidPathChars);
-  if Length(URI.Document) > 0 then
+  if URI.Document <> '' then
   begin
-    if (Length(URI.Path) > 0) and ((Length(Result) = 0) or (Result[Length(Result)] <> '/')) then
+    if (URI.Path <> '') and ((Result = '') or (Result[Length(Result)] <> '/')) then
       Result := Result + '/';
     Result := Result + Escape(URI.Document, ValidPathChars);
   end;
-  if Length(URI.Params) > 0 then
+  if URI.Params <> '' then
     Result := Result + '?' + Escape(URI.Params, ValidPathChars);
-  if Length(URI.Bookmark) > 0 then
+  if URI.Bookmark <> '' then
     Result := Result + '#' + Escape(URI.Bookmark, ValidPathChars);
 end;
 
@@ -300,7 +300,7 @@ begin
     SetLength(Authority, i - 1);
 
     // Extract username and password
-    if Length(Authority)>0 then
+    if Authority <> '' then
     begin
       i := Pos(':', Authority);
       if i = 0 then

+ 158 - 110
packages/hash/src/sha1i386.inc

@@ -19,8 +19,12 @@ asm
   mov   ebp, TSHA1Context.State[eax + 4 * 4] // From now on, eax is used for temporaries. Edx is still required for rounds 0..15 to read buf parts.
 
   // Round 0. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx]
+{$else}
   mov   eax, [edx] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 0]));
   bswap eax
+{$endif}
   add   ebp, eax // Z := Z + Blkv;
   mov   [esp], eax // Data[I and 15 = 0] := Blkv;
   mov   eax, ebx // Z := Z + RolDWord(V, 5)
@@ -34,8 +38,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 1. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 1]
+{$else}
   mov   eax, [edx + 4 * 1] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 1]));
   bswap eax
+{$endif}
   add   edi, eax // Z := Z + Blkv;
   mov   [esp + 4], eax // Data[I and 15 = 1] := Blkv;
   mov   eax, ebp // Z := Z + RolDWord(V, 5)
@@ -49,8 +57,12 @@ asm
   ror   ebx, 2 // W := RorDWord(W, 2);
 
   // Round 2. V = edi, W = ebp, X = ebx, Y = ecx, Z = esi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 2]
+{$else}
   mov   eax, [edx + 4 * 2] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 2]));
   bswap eax
+{$endif}
   add   esi, eax // Z := Z + Blkv;
   mov   [esp + 4 * 2], eax // Data[I and 15 = 2] := Blkv;
   mov   eax, edi // Z := Z + RolDWord(V, 5)
@@ -64,8 +76,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 3. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 3]
+{$else}
   mov   eax, [edx + 4 * 3] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 3]));
   bswap eax
+{$endif}
   add   ecx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 3], eax // Data[I and 15 = 3] := Blkv;
   mov   eax, esi // Z := Z + RolDWord(V, 5)
@@ -79,8 +95,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 4. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 4]
+{$else}
   mov   eax, [edx + 4 * 4] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 4]));
   bswap eax
+{$endif}
   add   ebx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 4], eax // Data[I and 15 = 4] := Blkv;
   mov   eax, ecx // Z := Z + RolDWord(V, 5)
@@ -94,8 +114,12 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 5. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 5]
+{$else}
   mov   eax, [edx + 4 * 5] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 5]));
   bswap eax
+{$endif}
   add   ebp, eax // Z := Z + Blkv;
   mov   [esp + 4 * 5], eax // Data[I and 15 = 5] := Blkv;
   mov   eax, ebx // Z := Z + RolDWord(V, 5)
@@ -109,8 +133,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 6. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 6]
+{$else}
   mov   eax, [edx + 4 * 6] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 6]));
   bswap eax
+{$endif}
   add   edi, eax // Z := Z + Blkv;
   mov   [esp + 4 * 6], eax // Data[I and 15 = 6] := Blkv;
   mov   eax, ebp // Z := Z + RolDWord(V, 5)
@@ -124,8 +152,12 @@ asm
   ror   ebx, 2 // W := RorDWord(W, 2);
 
   // Round 7. V = edi, W = ebp, X = ebx, Y = ecx, Z = esi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 7]
+{$else}
   mov   eax, [edx + 4 * 7] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 7]));
   bswap eax
+{$endif}
   add   esi, eax // Z := Z + Blkv;
   mov   [esp + 4 * 7], eax // Data[I and 15 = 7] := Blkv;
   mov   eax, edi // Z := Z + RolDWord(V, 5)
@@ -139,8 +171,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 8. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 8]
+{$else}
   mov   eax, [edx + 4 * 8] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 8]));
   bswap eax
+{$endif}
   add   ecx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 8], eax // Data[I and 15 = 8] := Blkv;
   mov   eax, esi // Z := Z + RolDWord(V, 5)
@@ -154,8 +190,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 9. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 9]
+{$else}
   mov   eax, [edx + 4 * 9] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 9]));
   bswap eax
+{$endif}
   add   ebx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 9], eax // Data[I and 15 = 9] := Blkv;
   mov   eax, ecx // Z := Z + RolDWord(V, 5)
@@ -169,8 +209,12 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 10. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 10]
+{$else}
   mov   eax, [edx + 4 * 10] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 10]));
   bswap eax
+{$endif}
   add   ebp, eax // Z := Z + Blkv;
   mov   [esp + 4 * 10], eax // Data[I and 15 = 10] := Blkv;
   mov   eax, ebx // Z := Z + RolDWord(V, 5)
@@ -184,8 +228,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 11. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 11]
+{$else}
   mov   eax, [edx + 4 * 11] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 11]));
   bswap eax
+{$endif}
   add   edi, eax // Z := Z + Blkv;
   mov   [esp + 4 * 11], eax // Data[I and 15 = 11] := Blkv;
   mov   eax, ebp // Z := Z + RolDWord(V, 5)
@@ -199,8 +247,12 @@ asm
   ror   ebx, 2 // W := RorDWord(W, 2);
 
   // Round 12. V = edi, W = ebp, X = ebx, Y = ecx, Z = esi
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 12]
+{$else}
   mov   eax, [edx + 4 * 12] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 12]));
   bswap eax
+{$endif}
   add   esi, eax // Z := Z + Blkv;
   mov   [esp + 4 * 12], eax // Data[I and 15 = 12] := Blkv;
   mov   eax, edi // Z := Z + RolDWord(V, 5)
@@ -214,8 +266,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 13. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 13]
+{$else}
   mov   eax, [edx + 4 * 13] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 13]));
   bswap eax
+{$endif}
   add   ecx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 13], eax // Data[I and 15 = 13] := Blkv;
   mov   eax, esi // Z := Z + RolDWord(V, 5)
@@ -229,8 +285,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 14. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe eax, [edx + 4 * 14]
+{$else}
   mov   eax, [edx + 4 * 14] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 14]));
   bswap eax
+{$endif}
   add   ebx, eax // Z := Z + Blkv;
   mov   [esp + 4 * 14], eax // Data[I and 15 = 14] := Blkv;
   mov   eax, ecx // Z := Z + RolDWord(V, 5)
@@ -244,10 +304,14 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 15. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
-  mov   eax, [edx + 4 * 15] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 15]));
-  bswap eax
-  add   ebp, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 15], eax // Data[I and 15 = 15] := Blkv;
+{$ifdef CPUX86_HAS_MOVBE}
+  movbe edx, [edx + 4 * 15]
+{$else}
+  mov   edx, [edx + 4 * 15] // Blkv := BEtoN(Unaligned(PCardinal(Buf)[I = 15]));
+  bswap edx
+{$endif}
+  add   ebp, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 15], edx // Data[I and 15 = 15] := Blkv; keep in edx for Round 18.
   mov   eax, ebx // Z := Z + RolDWord(V, 5)
   rol   eax, 5
   add   ebp, eax
@@ -258,8 +322,6 @@ asm
   lea   ebp, [ebp + eax + K20]
   ror   ecx, 2 // W := RorDWord(W, 2);
 
-  // edx is no longer of interest, it will be used as a temporary in Round 40..59.
-
   // Round 16. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
   mov   eax, [esp + 4 * 13] // Blkv := RolDWord(Data[(I + 13) and 15 = 13] xor Data[(I + 8) and 15 = 8] xor Data[(I + 2) and 15 = 2] xor Data[I and 15 = 0], 1);
   xor   eax, [esp + 4 * 8]
@@ -297,13 +359,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 18. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
-  mov   eax, [esp + 4 * 15] // Blkv := RolDWord(Data[(I + 13) and 15 = 15] xor Data[(I + 8) and 15 = 10] xor Data[(I + 2) and 15 = 4] xor Data[I and 15 = 2], 1);
-  xor   eax, [esp + 4 * 10]
-  xor   eax, [esp + 4 * 4]
-  xor   eax, [esp + 4 * 2]
-  rol   eax, 1
-  add   ecx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 2], eax // Data[I and 15 = 2] := Blkv;
+  xor   edx, [esp + 4 * 10] // Blkv := RolDWord(Data[(I + 13) and 15 = 15] xor Data[(I + 8) and 15 = 10] xor Data[(I + 2) and 15 = 4] xor Data[I and 15 = 2], 1);
+  xor   edx, [esp + 4 * 4]
+  xor   edx, [esp + 4 * 2]
+  rol   edx, 1
+  add   ecx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 2], edx // Data[I and 15 = 2] := Blkv; keep in edx for Round 21.
   mov   eax, esi // Z := Z + RolDWord(V, 5)
   rol   eax, 5
   add   ecx, eax
@@ -350,13 +411,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 21. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
-  mov   eax, [esp + 4 * 2] // Blkv := RolDWord(Data[(I + 13) and 15 = 2] xor Data[(I + 8) and 15 = 13] xor Data[(I + 2) and 15 = 7] xor Data[I and 15 = 5], 1);
-  xor   eax, [esp + 4 * 13]
-  xor   eax, [esp + 4 * 7]
-  xor   eax, [esp + 4 * 5]
-  rol   eax, 1
-  add   edi, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 5], eax // Data[I and 15 = 5] := Blkv;
+  xor   edx, [esp + 4 * 13] // Blkv := RolDWord(Data[(I + 13) and 15 = 2] xor Data[(I + 8) and 15 = 13] xor Data[(I + 2) and 15 = 7] xor Data[I and 15 = 5], 1);
+  xor   edx, [esp + 4 * 7]
+  xor   edx, [esp + 4 * 5]
+  rol   edx, 1
+  add   edi, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 5], edx // Data[I and 15 = 5] := Blkv; keep in edx for Round 24.
   mov   eax, ebp // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   edi, eax
@@ -401,13 +461,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 24. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
-  mov   eax, [esp + 4 * 5] // Blkv := RolDWord(Data[(I + 13) and 15 = 5] xor Data[(I + 8) and 15 = 0] xor Data[(I + 2) and 15 = 10] xor Data[I and 15 = 8], 1);
-  xor   eax, [esp]
-  xor   eax, [esp + 4 * 10]
-  xor   eax, [esp + 4 * 8]
-  rol   eax, 1
-  add   ebx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 8], eax // Data[I and 15 = 8] := Blkv;
+  xor   edx, [esp] // Blkv := RolDWord(Data[(I + 13) and 15 = 5] xor Data[(I + 8) and 15 = 0] xor Data[(I + 2) and 15 = 10] xor Data[I and 15 = 8], 1);
+  xor   edx, [esp + 4 * 10]
+  xor   edx, [esp + 4 * 8]
+  rol   edx, 1
+  add   ebx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 8], edx // Data[I and 15 = 8] := Blkv; keep in edx for Round 27.
   mov   eax, ecx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebx, eax
@@ -452,13 +511,12 @@ asm
   ror   ebx, 2 // W := RorDWord(W, 2);
 
   // Round 27. V = edi, W = ebp, X = ebx, Y = ecx, Z = esi
-  mov   eax, [esp + 4 * 8] // Blkv := RolDWord(Data[(I + 13) and 15 = 8] xor Data[(I + 8) and 15 = 3] xor Data[(I + 2) and 15 = 13] xor Data[I and 15 = 11], 1);
-  xor   eax, [esp + 4 * 3]
-  xor   eax, [esp + 4 * 13]
-  xor   eax, [esp + 4 * 11]
-  rol   eax, 1
-  add   esi, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 11], eax // Data[I and 15 = 11] := Blkv;
+  xor   edx, [esp + 4 * 3] // Blkv := RolDWord(Data[(I + 13) and 15 = 8] xor Data[(I + 8) and 15 = 3] xor Data[(I + 2) and 15 = 13] xor Data[I and 15 = 11], 1);
+  xor   edx, [esp + 4 * 13]
+  xor   edx, [esp + 4 * 11]
+  rol   edx, 1
+  add   esi, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 11], edx // Data[I and 15 = 11] := Blkv; keep in edx for Round 30.
   mov   eax, edi // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   esi, eax
@@ -503,13 +561,12 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 30. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
-  mov   eax, [esp + 4 * 11] // Blkv := RolDWord(Data[(I + 13) and 15 = 11] xor Data[(I + 8) and 15 = 6] xor Data[(I + 2) and 15 = 0] xor Data[I and 15 = 14], 1);
-  xor   eax, [esp + 4 * 6]
-  xor   eax, [esp]
-  xor   eax, [esp + 4 * 14]
-  rol   eax, 1
-  add   ebp, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 14], eax // Data[I and 15 = 14] := Blkv;
+  xor   edx, [esp + 4 * 6] // Blkv := RolDWord(Data[(I + 13) and 15 = 11] xor Data[(I + 8) and 15 = 6] xor Data[(I + 2) and 15 = 0] xor Data[I and 15 = 14], 1);
+  xor   edx, [esp]
+  xor   edx, [esp + 4 * 14]
+  rol   edx, 1
+  add   ebp, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 14], edx // Data[I and 15 = 14] := Blkv; keep in edx for Round 33.
   mov   eax, ebx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebp, eax
@@ -554,13 +611,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 33. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
-  mov   eax, [esp + 4 * 14] // Blkv := RolDWord(Data[(I + 13) and 15 = 14] xor Data[(I + 8) and 15 = 9] xor Data[(I + 2) and 15 = 3] xor Data[I and 15 = 1], 1);
-  xor   eax, [esp + 4 * 9]
-  xor   eax, [esp + 4 * 3]
-  xor   eax, [esp + 4 * 1]
-  rol   eax, 1
-  add   ecx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 1], eax // Data[I and 15 = 1] := Blkv;
+  xor   edx, [esp + 4 * 9] // Blkv := RolDWord(Data[(I + 13) and 15 = 14] xor Data[(I + 8) and 15 = 9] xor Data[(I + 2) and 15 = 3] xor Data[I and 15 = 1], 1);
+  xor   edx, [esp + 4 * 3]
+  xor   edx, [esp + 4 * 1]
+  rol   edx, 1
+  add   ecx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 1], edx // Data[I and 15 = 1] := Blkv; keep in edx for Round 36.
   mov   eax, esi // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ecx, eax
@@ -605,13 +661,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 36. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
-  mov   eax, [esp + 4 * 1] // Blkv := RolDWord(Data[(I + 13) and 15 = 1] xor Data[(I + 8) and 15 = 12] xor Data[(I + 2) and 15 = 6] xor Data[I and 15 = 4], 1);
-  xor   eax, [esp + 4 * 12]
-  xor   eax, [esp + 4 * 6]
-  xor   eax, [esp + 4 * 4]
-  rol   eax, 1
-  add   edi, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 4], eax // Data[I and 15 = 4] := Blkv;
+  xor   edx, [esp + 4 * 12] // Blkv := RolDWord(Data[(I + 13) and 15 = 1] xor Data[(I + 8) and 15 = 12] xor Data[(I + 2) and 15 = 6] xor Data[I and 15 = 4], 1);
+  xor   edx, [esp + 4 * 6]
+  xor   edx, [esp + 4 * 4]
+  rol   edx, 1
+  add   edi, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 4], edx // Data[I and 15 = 4] := Blkv; keep in edx for Round 39.
   mov   eax, ebp // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   edi, eax
@@ -656,13 +711,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 39. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
-  mov   eax, [esp + 4 * 4] // Blkv := RolDWord(Data[(I + 13) and 15 = 4] xor Data[(I + 8) and 15 = 15] xor Data[(I + 2) and 15 = 9] xor Data[I and 15 = 7], 1);
-  xor   eax, [esp + 4 * 15]
-  xor   eax, [esp + 4 * 9]
-  xor   eax, [esp + 4 * 7]
-  rol   eax, 1
-  add   ebx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 7], eax // Data[I and 15 = 7] := Blkv;
+  xor   edx, [esp + 4 * 15] // Blkv := RolDWord(Data[(I + 13) and 15 = 4] xor Data[(I + 8) and 15 = 15] xor Data[(I + 2) and 15 = 9] xor Data[I and 15 = 7], 1);
+  xor   edx, [esp + 4 * 9]
+  xor   edx, [esp + 4 * 7]
+  rol   edx, 1
+  add   ebx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 7], edx // Data[I and 15 = 7] := Blkv;
   mov   eax, ecx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebx, eax
@@ -1073,13 +1127,13 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 60. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
-  mov   eax, [esp + 4 * 9] // Blkv := RolDWord(Data[(I + 13) and 15 = 9] xor Data[(I + 8) and 15 = 4] xor Data[(I + 2) and 15 = 14] xor Data[I and 15 = 12], 1);
-  xor   eax, [esp + 4 * 4]
-  xor   eax, [esp + 4 * 14]
-  xor   eax, [esp + 4 * 12]
-  rol   eax, 1
-  add   ebp, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 12], eax // Data[I and 15 = 12] := Blkv;
+  mov   edx, [esp + 4 * 9] // Blkv := RolDWord(Data[(I + 13) and 15 = 9] xor Data[(I + 8) and 15 = 4] xor Data[(I + 2) and 15 = 14] xor Data[I and 15 = 12], 1);
+  xor   edx, [esp + 4 * 4]
+  xor   edx, [esp + 4 * 14]
+  xor   edx, [esp + 4 * 12]
+  rol   edx, 1
+  add   ebp, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 12], edx // Data[I and 15 = 12] := Blkv; keep in edx for Round 63.
   mov   eax, ebx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebp, eax
@@ -1124,13 +1178,12 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 63. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
-  mov   eax, [esp + 4 * 12] // Blkv := RolDWord(Data[(I + 13) and 15 = 12] xor Data[(I + 8) and 15 = 7] xor Data[(I + 2) and 15 = 1] xor Data[I and 15 = 15], 1);
-  xor   eax, [esp + 4 * 7]
-  xor   eax, [esp + 4 * 1]
-  xor   eax, [esp + 4 * 15]
-  rol   eax, 1
-  add   ecx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 15], eax // Data[I and 15 = 15] := Blkv;
+  xor   edx, [esp + 4 * 7] // Blkv := RolDWord(Data[(I + 13) and 15 = 12] xor Data[(I + 8) and 15 = 7] xor Data[(I + 2) and 15 = 1] xor Data[I and 15 = 15], 1);
+  xor   edx, [esp + 4 * 1]
+  xor   edx, [esp + 4 * 15]
+  rol   edx, 1
+  add   ecx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 15], edx // Data[I and 15 = 15] := Blkv; keep in edx for Round 66.
   mov   eax, esi // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ecx, eax
@@ -1175,13 +1228,12 @@ asm
   ror   ecx, 2 // W := RorDWord(W, 2);
 
   // Round 66. V = ebp, W = ebx, X = ecx, Y = esi, Z = edi
-  mov   eax, [esp + 4 * 15] // Blkv := RolDWord(Data[(I + 13) and 15 = 15] xor Data[(I + 8) and 15 = 10] xor Data[(I + 2) and 15 = 4] xor Data[I and 15 = 2], 1);
-  xor   eax, [esp + 4 * 10]
-  xor   eax, [esp + 4 * 4]
-  xor   eax, [esp + 4 * 2]
-  rol   eax, 1
-  add   edi, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 2], eax // Data[I and 15 = 2] := Blkv;
+  xor   edx, [esp + 4 * 10] // Blkv := RolDWord(Data[(I + 13) and 15 = 15] xor Data[(I + 8) and 15 = 10] xor Data[(I + 2) and 15 = 4] xor Data[I and 15 = 2], 1);
+  xor   edx, [esp + 4 * 4]
+  xor   edx, [esp + 4 * 2]
+  rol   edx, 1
+  add   edi, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 2], edx // Data[I and 15 = 2] := Blkv; keep in edx for Round 69.
   mov   eax, ebp // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   edi, eax
@@ -1226,13 +1278,12 @@ asm
   ror   edi, 2 // W := RorDWord(W, 2);
 
   // Round 69. V = ecx, W = esi, X = edi, Y = ebp, Z = ebx
-  mov   eax, [esp + 4 * 2] // Blkv := RolDWord(Data[(I + 13) and 15 = 2] xor Data[(I + 8) and 15 = 13] xor Data[(I + 2) and 15 = 7] xor Data[I and 15 = 5], 1);
-  xor   eax, [esp + 4 * 13]
-  xor   eax, [esp + 4 * 7]
-  xor   eax, [esp + 4 * 5]
-  rol   eax, 1
-  add   ebx, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 5], eax // Data[I and 15 = 5] := Blkv;
+  xor   edx, [esp + 4 * 13] // Blkv := RolDWord(Data[(I + 13) and 15 = 2] xor Data[(I + 8) and 15 = 13] xor Data[(I + 2) and 15 = 7] xor Data[I and 15 = 5], 1);
+  xor   edx, [esp + 4 * 7]
+  xor   edx, [esp + 4 * 5]
+  rol   edx, 1
+  add   ebx, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 5], edx // Data[I and 15 = 5] := Blkv; keep in edx for Round 72.
   mov   eax, ecx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebx, eax
@@ -1277,13 +1328,12 @@ asm
   ror   ebx, 2 // W := RorDWord(W, 2);
 
   // Round 72. V = edi, W = ebp, X = ebx, Y = ecx, Z = esi
-  mov   eax, [esp + 4 * 5] // Blkv := RolDWord(Data[(I + 13) and 15 = 5] xor Data[(I + 8) and 15 = 0] xor Data[(I + 2) and 15 = 10] xor Data[I and 15 = 8], 1);
-  xor   eax, [esp]
-  xor   eax, [esp + 4 * 10]
-  xor   eax, [esp + 4 * 8]
-  rol   eax, 1
-  add   esi, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 8], eax // Data[I and 15 = 8] := Blkv;
+  xor   edx, [esp] // Blkv := RolDWord(Data[(I + 13) and 15 = 5] xor Data[(I + 8) and 15 = 0] xor Data[(I + 2) and 15 = 10] xor Data[I and 15 = 8], 1);
+  xor   edx, [esp + 4 * 10]
+  xor   edx, [esp + 4 * 8]
+  rol   edx, 1
+  add   esi, edx // Z := Z + Blkv;
+  mov   [esp + 4 * 8], edx // Data[I and 15 = 8] := Blkv; keep in edx for Round 75.
   mov   eax, edi // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   esi, eax
@@ -1328,13 +1378,12 @@ asm
   ror   esi, 2 // W := RorDWord(W, 2);
 
   // Round 75. V = ebx, W = ecx, X = esi, Y = edi, Z = ebp
-  mov   eax, [esp + 4 * 8] // Blkv := RolDWord(Data[(I + 13) and 15 = 8] xor Data[(I + 8) and 15 = 3] xor Data[(I + 2) and 15 = 13] xor Data[I and 15 = 11], 1);
-  xor   eax, [esp + 4 * 3]
-  xor   eax, [esp + 4 * 13]
-  xor   eax, [esp + 4 * 11]
-  rol   eax, 1
-  add   ebp, eax // Z := Z + Blkv;
-  mov   [esp + 4 * 11], eax // Data[I and 15 = 11] := Blkv;
+  xor   edx, [esp + 4 * 3] // Blkv := RolDWord(Data[(I + 13) and 15 = 8] xor Data[(I + 8) and 15 = 3] xor Data[(I + 2) and 15 = 13] xor Data[I and 15 = 11], 1);
+  xor   edx, [esp + 4 * 13]
+  xor   edx, [esp + 4 * 11]
+  rol   edx, 1
+  add   ebp, edx // Z := Z + Blkv;
+  // mov   [esp + 4 * 11], edx // Data[I and 15 = 11] := Blkv; - not required, keep in edx for Round 78.
   mov   eax, ebx // Z := Z + RolDWord(V, 5);
   rol   eax, 5
   add   ebp, eax
@@ -1379,12 +1428,11 @@ asm
   ror   ebp, 2 // W := RorDWord(W, 2);
 
   // Round 78. V = esi, W = edi, X = ebp, Y = ebx, Z = ecx
-  mov   eax, [esp + 4 * 11] // Blkv := RolDWord(Data[(I + 13) and 15 = 11] xor Data[(I + 8) and 15 = 6] xor Data[(I + 2) and 15 = 0] xor Data[I and 15 = 14], 1);
-  xor   eax, [esp + 4 * 6]
-  xor   eax, [esp]
-  xor   eax, [esp + 4 * 14]
-  rol   eax, 1
-  add   ecx, eax // Z := Z + Blkv;
+  xor   edx, [esp + 4 * 6] // Blkv := RolDWord(Data[(I + 13) and 15 = 11] xor Data[(I + 8) and 15 = 6] xor Data[(I + 2) and 15 = 0] xor Data[I and 15 = 14], 1);
+  xor   edx, [esp]
+  xor   edx, [esp + 4 * 14]
+  rol   edx, 1
+  add   ecx, edx // Z := Z + Blkv;
   // Data[I and 15 = 14] := Blkv; - not required.
   mov   eax, esi // Z := Z + RolDWord(V, 5);
   rol   eax, 5

+ 1 - 1
packages/rtl-objpas/src/inc/rtti.pp

@@ -1987,7 +1987,7 @@ var
 
 begin
   Result:=Default(TValue);
-  aType:=TVarType(aValue);
+  aType:=TVarData(aValue).vtype;
   case aType of
     varEmpty,
     VarNull : TValue.Make(@aValue,System.TypeInfo(Variant),Result);

+ 1 - 1
packages/rtl-objpas/tests/testrunner.rtlobjpas.pp

@@ -33,7 +33,7 @@ uses
 {$ifdef testimpl}
   tests.rtti.impl,
 {$endif}
-  tests.rtti, tests.value, tests.rtti.types;
+  tests.rtti, tests.rtti.value, tests.rtti.types;
 
 var
   Application: TTestRunner;

+ 1 - 1
packages/rtl-objpas/tests/tests.value.pas → packages/rtl-objpas/tests/tests.rtti.value.pas

@@ -1,4 +1,4 @@
-unit tests.value;
+unit tests.rtti.value;
 
 {$mode ObjFPC}{$H+}
 

+ 110 - 98
rtl/aix/Makefile

@@ -888,29 +888,31 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 OSPROCINC=$(RTL)/aix/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
+CLASSESDIR=$(UNIXINC)
 CPU_UNITS=
+CWSTRING_DEPS_OS=$(UNIXINC)/cwstraix.inc
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 DL_DEPS_OS=$(DLUNIT)aix.inc
 TERMIO_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT)
+DOSDIR=$(UNIXINC)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+=-dFPC_USE_LIBC
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),powerpc-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) baseunix unixutil $(TERMIOUNIT) unix initc $(CMEMUNIT) $(LNFOGDBUNIT) sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types sysconst rtlconsts cthreads dos cwstring $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LNFOGDBUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc64-aix)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) baseunix unixutil $(TERMIOUNIT) unix initc $(CMEMUNIT) $(LNFOGDBUNIT) sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types sysconst rtlconsts cthreads dos cwstring $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LNFOGDBUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-aix)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS) $(UNICODEDATAUNIT)
@@ -919,10 +921,10 @@ ifeq ($(CPU_OS_TARGET),powerpc64-aix)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS) $(UNICODEDATAUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-aix)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc64-aix)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),powerpc-aix)
@@ -2180,8 +2182,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2198,9 +2204,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2210,6 +2222,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2239,7 +2254,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2257,7 +2272,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2285,21 +2300,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2335,7 +2350,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2352,14 +2367,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2373,7 +2391,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2403,17 +2421,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2422,28 +2443,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2452,28 +2473,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2482,7 +2503,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2495,8 +2516,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2540,7 +2564,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2548,7 +2572,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2563,20 +2587,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2628,8 +2656,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2649,16 +2680,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2666,6 +2701,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2684,14 +2724,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2715,6 +2755,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2860,52 +2921,3 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
-baseunix$(PPUEXT) : unixtype$(PPUEXT) errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  ostypes.inc osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/baseunix.pp
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixtype.pp
-unix$(PPUEXT) : unixtype$(PPUEXT) baseunix$(PPUEXT) unixutil$(PPUEXT) strings$(PPUEXT) $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 unxconst.inc $(UNIXINC)/timezone.inc \
-		 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unix.pp
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) \
-		   $(SYSTEMUNIT)$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-ifeq ($(ARCH),x86_64)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-endif
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cthreads.pp
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cwstring.pp
-gpm$(PPUEXT): gpm.pp unix$(PPUEXT) baseunix$(PPUEXT) sockets$(PPUEXT)
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-initc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/initc.pp

+ 21 - 118
rtl/aix/Makefile.fpc

@@ -7,24 +7,24 @@ main=rtl
 
 [target]
 loaders=
-units=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) \
       $(HEAPTRCUNIT) \
-      baseunix unixutil \
-      $(TERMIOUNIT) unix initc $(CMEMUNIT) \
+      $(BASEUNIXUNIT) $(UNIXUTILUNIT) \
+      $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) \
       $(LNFOGDBUNIT) \
-      sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) \
       $(ERRORSUNIT) \
       # ipc 
       $(DLUNIT) $(DYNLIBSUNIT) \
-      types sysconst \
-      rtlconsts cthreads \
-      dos \
-      cwstring $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) \
+      $(TYPESUNIT) $(SYSCONSTUNIT) \
+      $(RTLCONSTSUNIT) $(CTHREADSUNIT) \
+      $(DOSUNIT) \
+      $(CWSTRINGUNIT) $(FPWIDESTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst rtlconst 
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) 
 
 [require]
 nortl=y
@@ -44,11 +44,11 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos crt   \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
-      $(ERRORSUNIT) sockets
+      $(ERRORSUNIT)
 
 [prerules]
 RTL=..
@@ -58,32 +58,31 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 OSPROCINC=$(RTL)/aix/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
+CLASSESDIR=$(UNIXINC)
 CPU_UNITS=
+CWSTRING_DEPS_OS=$(UNIXINC)/cwstraix.inc
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 DL_DEPS_OS=$(DLUNIT)aix.inc
 TERMIO_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT)
+DOSDIR=$(UNIXINC)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
+
 
 SYSTEMUNIT=system
 
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
 
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # AIX requires libc, no syscalls
 override FPCOPT+=-dFPC_USE_LIBC
 
@@ -107,99 +106,3 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 
-
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-baseunix$(PPUEXT) : unixtype$(PPUEXT) errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  ostypes.inc osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/baseunix.pp
-
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixtype.pp
-
-unix$(PPUEXT) : unixtype$(PPUEXT) baseunix$(PPUEXT) unixutil$(PPUEXT) strings$(PPUEXT) $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 unxconst.inc $(UNIXINC)/timezone.inc \
-                 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unix.pp
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-#
-# Graph
-#
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) \
-		   $(SYSTEMUNIT)$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-
-#
-# Other system-independent RTL Units
-#
-
-ifeq ($(ARCH),x86_64)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-endif
-
-#
-# Other system-dependent RTL Units
-#
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cthreads.pp
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cwstring.pp
-
-gpm$(PPUEXT): gpm.pp unix$(PPUEXT) baseunix$(PPUEXT) sockets$(PPUEXT)
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-
-initc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/initc.pp
-

+ 102 - 48
rtl/amiga/Makefile

@@ -890,9 +890,6 @@ AMIINC=$(RTL)/amicommon
 UNITPREFIX=rtl
 LOADERS=prt0
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(ARCH),m68k)
 override LOADERS=
@@ -924,10 +921,10 @@ ifeq ($(CPU_OS_TARGET),powerpc-amiga)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-amiga)
-override TARGET_RSTS+=$(MATHUNIT) rtlconsts typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-amiga)
-override TARGET_RSTS+=$(MATHUNIT) rtlconsts typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),m68k-amiga)
@@ -2212,8 +2209,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2230,9 +2231,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2242,6 +2249,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2271,7 +2281,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2289,7 +2299,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2317,21 +2327,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2367,7 +2377,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2384,14 +2394,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2405,7 +2418,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2435,17 +2448,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2454,28 +2470,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2484,28 +2500,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2514,7 +2530,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2527,8 +2543,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2572,7 +2591,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2580,7 +2599,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2595,20 +2614,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2660,8 +2683,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2681,16 +2707,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2698,6 +2728,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2716,14 +2751,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2747,6 +2782,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2897,7 +2953,5 @@ prt0$(OEXT) : $(CPU_TARGET)/prt0.as
 ifdef FPC_DOTTEDUNITS
 BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS 
 endif
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) $(BUILDRTL_OPT) buildrtl
-$(RESUNIT)$(PPUEXT) : $(INC)/$(RESUNIT).pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(INC)/$(RESUNIT).pp

+ 2 - 12
rtl/amiga/Makefile.fpc

@@ -15,7 +15,7 @@ implicitunits=$(SYSINITUNITS) $(EXEUNITS) athreads $(DOSUNIT) $(SYSUTILSUNIT) $(
       $(UFLOAT128UNIT)  $(UFLOATX80UNIT) $(SFPU128UNIT) $(SFPUX80UNIT) $(SOFTFPUUNIT) 
 
 
-rsts=$(MATHUNIT) rtlconsts typinfo classes sysconst
+rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -42,13 +42,6 @@ UNITPREFIX=rtl
 LOADERS=prt0
 SYSTEMUNIT=system
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -98,9 +91,6 @@ endif
 # Base Units (System, strings, os-dependent-base-unit)
 #
 
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) $(BUILDRTL_OPT) buildrtl
 
-$(RESUNIT)$(PPUEXT) : $(INC)/$(RESUNIT).pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(INC)/$(RESUNIT).pp
-

+ 121 - 103
rtl/android/Makefile

@@ -888,16 +888,24 @@ PROCINC=$(RTL)/$(ARCH)
 UNIXINC=$(RTL)/unix
 OSPROCINC=$(RTL)/linux/$(CPU_TARGET)
 LINUXINC=$(RTL)/linux
+CLASSESDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 DL_DEPS_OS=dlandroid.inc
 TERMIODIR=$(LINUXINC)
+PTHREADINCDIR=$(LINUXINC)
+PTYPESINCDIR=$(LINUXINC)
+SYSTEMDIR = $(LINUXINC)
+SYSCALL_DEPS_OS=$(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc
+SYSUTILS_DEPS_OS=$(DLUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+CWSTRINGDIR=$(OSDIR)
 UNITPREFIX=rtl
 CPU_UNITS=
 SYSINIT_UNITS=
 LOADERS=prt0 dllprt0
 ifeq ($(findstring $(ARCH),i386 x86_64 arm),$(ARCH))
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
 CPU_UNITS+=$(MMXUNIT)
@@ -908,22 +916,22 @@ override FPCOPT+=-Ur
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),jvm-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-android)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-android)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -962,22 +970,22 @@ ifeq ($(CPU_OS_TARGET),aarch64-android)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),jvm-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-android)
-override TARGET_RSTS+=$(MATHUNIT)  typinfo  sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-android)
 override CLEAN_UNITS+=$(LINUXUNIT)
@@ -1052,7 +1060,7 @@ endif
 ifeq ($(CPU_OS_TARGET),aarch64-android)
 override COMPILER_TARGETDIR+=.
 endif
-override SHARED_LIBUNITS=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) dos unix baseunix unixtype unixutil sysutils typinfo $(MATHUNIT) $(CPU_UNITS) $(GETOPTSUNIT) $(ERRORSUNIT) sockets $(SORTBASEUNIT) classes $(FGLUNIT) sysconst rtlconsts 
+override SHARED_LIBUNITS=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(UNIXUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CPU_UNITS) $(GETOPTSUNIT) $(ERRORSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) 
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 endif
@@ -2323,8 +2331,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2341,9 +2353,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2353,6 +2371,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2382,7 +2403,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2400,7 +2421,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2428,21 +2449,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2478,7 +2499,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2495,14 +2516,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2516,7 +2540,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2546,17 +2570,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2565,28 +2592,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2595,28 +2622,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2625,7 +2652,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2638,8 +2665,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2683,7 +2713,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2691,7 +2721,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2706,20 +2736,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2771,8 +2805,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2792,16 +2829,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2809,6 +2850,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2827,14 +2873,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2858,6 +2904,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -3019,52 +3086,3 @@ prt0$(OEXT) : prt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) --defsym CPU$(CPUBITS)=1 prt0.as
 dllprt0$(OEXT) : dllprt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) --defsym CPU$(CPUBITS)=1 dllprt0.as
-$(SYSTEMUNIT)$(PPUEXT) : $(LINUXINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(LINUXINC)/$(SYSTEMUNIT).pp
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) baseunix$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 $(LINUXINC)/unxconst.inc $(UNIXINC)/timezone.inc $(SYSTEMUNIT)$(PPUEXT) \
-		 $(LINUXINC)/unxfunc.inc unixandroid.inc cwstring$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unix.pp
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/syscall.pp
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixtype.pp
-baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp $(LINUXINC)/errno.inc $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc \
-  $(UNIXINC)/bunxh.inc \
-  $(LINUXINC)/bunxsysc.inc $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc \
-  $(LINUXINC)/ostypes.inc $(LINUXINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/baseunix.pp
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/initc.pp
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-endif
-	$(COMPILER) $(PROCINC)/cpu.pp
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cthreads.pp
-cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) cwstring.pp
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp

+ 23 - 98
rtl/android/Makefile.fpc

@@ -8,15 +8,15 @@ main=rtl
 [target]
 loaders=$(LOADERS)
 units=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(CPU_UNITS) \
-      $(UUCHARUNIT) unixtype ctypes baseunix $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) syscall unixutil \
-      $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) unix $(LINUXUNIT) initc $(CMEMUNIT) \
-      $(LINUXVCSUNIT) sysutils typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) \
+      $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) \
+      $(FPINTRESUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) \
+      $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) \
       $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) \
-      types  sysconst cthreads $(SORTBASEUNIT) classes $(FGLUNIT)  \
-      rtlconsts dos cwstring $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
+      $(TYPESUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT)  \
+      $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
-rsts=$(MATHUNIT)  typinfo  sysconst rtlconsts
+rsts=$(MATHUNIT)  $(TYPINFOUNIT)  $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 
 [require]
 nortl=y
@@ -36,12 +36,12 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(ARCH) $(COMMON) $(LINUXINC)
 targetdir=.
 
 [shared]
-libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) dos \
-      unix baseunix unixtype unixutil \
-      sysutils typinfo $(MATHUNIT) \
+libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) \
+      $(UNIXUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) \
-      $(ERRORSUNIT) sockets \
-      $(SORTBASEUNIT) classes $(FGLUNIT) sysconst rtlconsts \
+      $(ERRORSUNIT) \
+      $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) \
 
 [prerules]
 RTL=..
@@ -51,10 +51,21 @@ PROCINC=$(RTL)/$(ARCH)
 UNIXINC=$(RTL)/unix
 OSPROCINC=$(RTL)/linux/$(CPU_TARGET)
 LINUXINC=$(RTL)/linux
+CLASSESDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 DL_DEPS_OS=dlandroid.inc
 TERMIODIR=$(LINUXINC)
+PTHREADINCDIR=$(LINUXINC)
+PTYPESINCDIR=$(LINUXINC)
+
+SYSTEMDIR = $(LINUXINC)
+SYSCALL_DEPS_OS=$(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc
+SYSUTILS_DEPS_OS=$(DLUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+
+# Android has a specific file for cwstring.pp unit main source
+CWSTRINGDIR=$(OSDIR)
 
 UNITPREFIX=rtl
 
@@ -64,7 +75,7 @@ SYSINIT_UNITS=
 LOADERS=prt0 dllprt0
 
 ifeq ($(findstring $(ARCH),i386 x86_64 arm),$(ARCH))
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
 CPU_UNITS+=$(MMXUNIT)
@@ -124,90 +135,4 @@ prt0$(OEXT) : prt0.as
 dllprt0$(OEXT) : dllprt0.as
         $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) --defsym CPU$(CPUBITS)=1 dllprt0.as
 
-#
-# $(SYSTEMUNIT) Units ($(SYSTEMUNIT), Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(LINUXINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(LINUXINC)/$(SYSTEMUNIT).pp
-
-#
-# $(SYSTEMUNIT) Dependent Units
-#
-
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) baseunix$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 $(LINUXINC)/unxconst.inc $(UNIXINC)/timezone.inc $(SYSTEMUNIT)$(PPUEXT) \
-                 $(LINUXINC)/unxfunc.inc unixandroid.inc cwstring$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/unix.pp
-
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/syscall.pp
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/unixutil.pp
-
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/unixtype.pp
-
-baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp $(LINUXINC)/errno.inc $(LINUXINC)/ptypes.inc $(UNIXINC)/ctypes.inc \
-  $(UNIXINC)/bunxh.inc \
-  $(LINUXINC)/bunxsysc.inc $(LINUXINC)/$(ARCH)/syscallh.inc $(LINUXINC)/$(ARCH)/sysnr.inc \
-  $(LINUXINC)/ostypes.inc $(LINUXINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/baseunix.pp
-
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/initc.pp
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/dos.pp
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-#
-# Other $(SYSTEMUNIT)-independent RTL Units
-#
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-endif
-        $(COMPILER) $(PROCINC)/cpu.pp
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(UNIXINC)/cthreads.pp
-
-cwstring$(PPUEXT) : cwstring.pp $(SYSTEMUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-        $(COMPILER) cwstring.pp
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(INC)/ctypes.pp
 

+ 102 - 46
rtl/aros/Makefile

@@ -891,15 +891,12 @@ UNITPREFIX=rtl
 LOADERS=prt0
 SYSTEMUNIT=system
 SYSINITUNITS=si_prc
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT) $(LINEINFOUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT)
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-aros)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(HEAPTRCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(CPALLUNIT)
@@ -2227,8 +2224,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2245,9 +2246,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2257,6 +2264,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2286,7 +2296,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2304,7 +2314,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2332,21 +2342,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2382,7 +2392,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2399,14 +2409,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2420,7 +2433,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2450,17 +2463,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2469,28 +2485,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2499,28 +2515,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2529,7 +2545,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2542,8 +2558,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2587,7 +2606,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2595,7 +2614,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2610,20 +2629,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2675,8 +2698,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2696,16 +2722,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2713,6 +2743,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2731,14 +2766,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2762,6 +2797,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2909,5 +2965,5 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 prt0$(OEXT) : $(CPU_TARGET)/prt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(CPU_TARGET)/prt0.as
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 3 - 10
rtl/aros/Makefile.fpc

@@ -45,22 +45,15 @@ LOADERS=prt0
 SYSTEMUNIT=system
 SYSINITUNITS=si_prc
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT) $(LINEINFOUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 
 
@@ -94,6 +87,6 @@ prt0$(OEXT) : $(CPU_TARGET)/prt0.as
 #
 
 
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 

+ 100 - 44
rtl/atari/Makefile

@@ -889,9 +889,6 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 LOADERS=
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),m68k-atari)
 override TARGET_UNITS+=$(SYSTEMUNIT) fpextres $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) buildrtl $(CPALLUNIT)
@@ -2182,8 +2179,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2200,9 +2201,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2212,6 +2219,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2241,7 +2251,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2259,7 +2269,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2287,21 +2297,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2337,7 +2347,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2354,14 +2364,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2375,7 +2388,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2405,17 +2418,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2424,28 +2440,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2454,28 +2470,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2484,7 +2500,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2497,8 +2513,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2542,7 +2561,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2550,7 +2569,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2565,20 +2584,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2630,8 +2653,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2651,16 +2677,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2668,6 +2698,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2686,14 +2721,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2717,6 +2752,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2862,5 +2918,5 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 1 - 8
rtl/atari/Makefile.fpc

@@ -40,13 +40,6 @@ UNITPREFIX=rtl
 LOADERS=
 SYSTEMUNIT=system
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -72,6 +65,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Base Units (System, strings, os-dependent-base-unit)
 #
 
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 

+ 101 - 45
rtl/beos/Makefile

@@ -894,13 +894,10 @@ RTLCONSTSUNIT=rtlconst
 endif
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-beos)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(RTLCONSTSUNIT) $(SYSCALLUNIT) $(UNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(INITCUNIT) $(UNIXCPUNIT)  $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU218UNIT)  $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(RTLCONSTSUNIT) $(SYSCALLUNIT) $(UNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(INITCUNIT) $(UNIXCPUNIT)  $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU218UNIT)  $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-beos)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -909,7 +906,7 @@ ifeq ($(CPU_OS_TARGET),i386-beos)
 override TARGET_LOADERS+=prt0 cprt0 func dllprt
 endif
 ifeq ($(CPU_OS_TARGET),i386-beos)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-beos)
@@ -2191,8 +2188,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2209,9 +2210,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2221,6 +2228,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2250,7 +2260,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2268,7 +2278,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2296,21 +2306,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2346,7 +2356,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2363,14 +2373,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2384,7 +2397,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2414,17 +2427,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2433,28 +2449,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2463,28 +2479,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2493,7 +2509,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2506,8 +2522,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2551,7 +2570,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2559,7 +2578,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2574,20 +2593,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2639,8 +2662,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2660,16 +2686,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2677,6 +2707,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2695,14 +2730,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2726,6 +2761,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 5 - 11
rtl/beos/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 [target]
 loaders=prt0 cprt0 func dllprt
-units=system $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) \ 
       $(SYSCONSTUNIT) $(SYSUTILSUNIT) \
       $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) \
@@ -18,7 +18,7 @@ units=system $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPA
       $(DYNLIBSUNIT) $(CWSTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU218UNIT)  $(UFLOAT128UNIT)
 #      beos
-rsts=$(MATHUNIT) typinfo sysconst rtlconsts 
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) 
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
 [require]
@@ -40,9 +40,9 @@ targetdir=.
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos crt  \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT) $(DYNLIBSUNIT)
 
@@ -60,12 +60,6 @@ RTLCONSTSUNIT=rtlconst
 endif
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 
 override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
 

+ 111 - 55
rtl/darwin/Makefile

@@ -897,18 +897,15 @@ OSPROCINC=$(RTL)/darwin/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 INITCDIR=$(UNIXINC)
-SYSUTILS_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT)
 BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 CTYPES_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT)
-EXEINFO_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT)
+EXEINFO_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT)
 FPEXTRES_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT)
 DOS_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(UNIXUTILUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT)
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+=-dFPC_USE_LIBC
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-darwin)
@@ -972,34 +969,34 @@ ifeq ($(CPU_OS_TARGET),aarch64-ios)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-darwin)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-iphonesim)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-darwin)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-darwin)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-ios)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-darwin)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-iphonesim)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-ios)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-darwin)
@@ -2305,8 +2302,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2323,9 +2324,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2335,6 +2342,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2364,7 +2374,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2382,7 +2392,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2410,21 +2420,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2460,7 +2470,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2477,14 +2487,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2498,7 +2511,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2528,17 +2541,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2547,28 +2563,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2577,28 +2593,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2607,7 +2623,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2620,8 +2636,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2665,7 +2684,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2673,7 +2692,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2688,20 +2707,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2753,8 +2776,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2774,16 +2800,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2791,6 +2821,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2809,14 +2844,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2840,6 +2875,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 3 - 10
rtl/darwin/Makefile.fpc

@@ -20,7 +20,7 @@ units=$(SYSTEMUNIT) sysinit $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPAS
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst rtlconsts
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 
 [require]
 nortl=y
@@ -66,24 +66,17 @@ UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 INITCDIR=$(UNIXINC)
 
-SYSUTILS_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT)
 BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 CTYPES_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT)
-EXEINFO_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT)
+EXEINFO_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT)
 FPEXTRES_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT)
 DOS_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(UNIXUTILUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT)
 
 SYSTEMUNIT=system
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Darwin requires libc, no syscalls
 override FPCOPT+=-dFPC_USE_LIBC
 

+ 111 - 85
rtl/dragonfly/Makefile

@@ -891,19 +891,23 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 CPU_UNITS=
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS=sysnr.inc $(BSDPROCINC)/syscallh.inc
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 loaders+=gprt0
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
-endif
-ifdef RELEASE
-override FPCOPT+=-Ur
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd $(CONSOLEUNIT) sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(CONSOLEUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -912,7 +916,7 @@ ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
 override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
@@ -2191,8 +2195,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2209,9 +2217,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2221,6 +2235,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2250,7 +2267,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2268,7 +2285,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2296,21 +2313,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2346,7 +2363,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2363,14 +2380,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2384,7 +2404,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2414,17 +2434,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2433,28 +2456,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2463,28 +2486,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2493,7 +2516,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2506,8 +2529,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2551,7 +2577,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2559,7 +2585,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2574,20 +2600,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2639,8 +2669,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2660,16 +2693,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2677,6 +2714,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2695,14 +2737,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2726,6 +2768,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2870,7 +2933,8 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS = unxconst.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 prt0$(OEXT) : $(CPU_TARGET)/prt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(CPU_TARGET)/prt0.as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
@@ -2879,41 +2943,3 @@ gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)gprt0$(OEXT) $(CPU_TARGET)/gprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp unxconst.inc $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  $(CPU_TARGET)/signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc sysctl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 unxconst.inc $(UNIXINC)/timezone.inc \
-		 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-endif
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)

+ 22 - 103
rtl/dragonfly/Makefile.fpc

@@ -10,20 +10,20 @@ fpcpackage=y
 
 [target]
 loaders=prt0 cprt0 gprt0 dllprt0
-units=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
-      $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) \
-      unix rtlconsts initc $(CMEMUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
+      $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) \
+      $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) \
       $(DLUNIT) $(TERMIOUNIT) \
-      sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) \
+      $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) \
       $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) \
-      $(ERRORSUNIT) bsd \
+      $(ERRORSUNIT) $(BSDUNIT) \
       $(CONSOLEUNIT) \
-      sysconst cthreads dos cwstring \
+      $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) \
       $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -43,9 +43,9 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos  \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT)  \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT) $(DYNLIBSUNIT)
 
@@ -60,22 +60,23 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 CPU_UNITS=
+
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
+
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS=sysnr.inc $(BSDPROCINC)/syscallh.inc
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 
 SYSTEMUNIT=system
 loaders+=gprt0
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
-endif
-
-
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 
 # Paths
@@ -96,8 +97,8 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
+SYSDEPS = unxconst.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 
 #
 # Loaders
@@ -115,85 +116,3 @@ gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
         $(AS) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
 
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp unxconst.inc $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-
-baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  $(CPU_TARGET)/signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc sysctl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 unxconst.inc $(UNIXINC)/timezone.inc \
-                 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-#
-# Other system-independent RTL Units
-#
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-endif
-
-#
-# Other system-dependent RTL Units
-#
-
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-

+ 107 - 52
rtl/embedded/Makefile

@@ -900,10 +900,10 @@ CPU_UNITS=
 SYSINIT_UNITS=
 CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) \
 			  $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) \
-			  $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
+			  $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT) $(SOFTFPUUNIT)
 SYSUTILS_DEPS_OS=$(HEAPMGRUNIT)$(PPUEXT)
 DOSDIR=.
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 ifeq ($(ARCH),aarch64)
 CPU_UNITS=$(RASPI3UNIT) $(MMIOUNIT) $(MAILBOXUNIT) $(RASPIUARTUNIT) $(GPIOUNIT)
 CPU_UNITS_DEFINED=1
@@ -1041,7 +1041,7 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),riscv32)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),rv32ec)
 override FPCOPT+=-Cprv32ec
 CPU_UNITS=CH32VxBootstrap
@@ -2561,8 +2561,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2579,9 +2583,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2591,6 +2601,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2620,7 +2633,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2638,7 +2651,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2666,21 +2679,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2716,7 +2729,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2733,14 +2746,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2754,7 +2770,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2784,17 +2800,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2803,28 +2822,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2833,28 +2852,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2863,7 +2882,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2876,8 +2895,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2921,7 +2943,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2929,7 +2951,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2944,20 +2966,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -3009,8 +3035,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -3030,16 +3059,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -3047,6 +3080,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -3065,14 +3103,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -3096,6 +3134,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -3240,7 +3299,7 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
[email protected]
+override FPC_SYSTEM_OPT += @system.cfg
 startup$(OEXT) : $(CPU_TARGET)/startup.s
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)startup$(OEXT) $(CPU_TARGET)/startup.s  -mabi=32 -march=pic32mx -mtune=pic32mx -W -EL  -msym32
 CONSOLEIO_DEPS= consoleio.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
@@ -3257,21 +3316,17 @@ EmbeddedApi.HeapMGR$(PPUEXT) : $(NSOSDIR)/EmbeddedApi.HeapMGR.pp $(HEAPMGR_DEPS)
 	$(COMPILER) $(HEAPMGR_OPT) -Fi. $<
 define CPU_UNITS_RULE
 ifndef FPC_DOTTEDUNITS
-ifeq ($(ARCH),avr)
-$(1)$(PPUEXT): $(ARCH)/$(1).pp intrinsics$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-else
-$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
-endif
+$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
 $(eval UNIT_REG_NAME=$(subst EmbeddedApi.,,$(1)))
 $(eval UNIT_REG_NAME=$(subst ARMApi.,,$(UNIT_REG_NAME)))
 ifeq ($(ARCH),avr)
-$(1)$(PPUEXT):  $(ARCH)/$(1).pp intrinsics$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT):  $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
 ifeq ($(ARCH),mipsel)
-$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
-$(1)$(PPUEXT): $(NSOSDIR)/$(ARCH)/$(1).pp $(ARCH)/$(UNIT_REG_NAME).pp $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT): $(NSOSDIR)/$(ARCH)/$(1).pp $(ARCH)/$(UNIT_REG_NAME).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 endif
 endif
 endif

+ 9 - 14
rtl/embedded/Makefile.fpc

@@ -22,7 +22,7 @@ units=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EX
        $(SYSCONSTUNIT)
 #implicitunits=exeinfo $(CP_UNITS)
 
-#rsts=$(MATHUNIT) rtlconsts varutils typinfo variants classes sysconst dateutil
+#rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -59,14 +59,14 @@ CPU_UNITS=
 SYSINIT_UNITS=
 CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) \
 			  $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) \
-			  $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
+			  $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT) $(SOFTFPUUNIT)
 
 # Sysutils special deps
 SYSUTILS_DEPS_OS=$(HEAPMGRUNIT)$(PPUEXT)
 # Dos unit, local source
 DOSDIR=.
 # Dos unit uses objfpc mode
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 
 ifeq ($(ARCH),aarch64)
 CPU_UNITS=$(RASPI3UNIT) $(MMIOUNIT) $(MAILBOXUNIT) $(RASPIUARTUNIT) $(GPIOUNIT)
@@ -218,7 +218,7 @@ endif
 endif
 
 ifeq ($(ARCH),riscv32)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),rv32ec)
 override FPCOPT+=-Cprv32ec
 CPU_UNITS=CH32VxBootstrap
@@ -285,7 +285,7 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
[email protected]
+override FPC_SYSTEM_OPT += @system.cfg
 
 #
 # Loaders
@@ -322,23 +322,19 @@ EmbeddedApi.HeapMGR$(PPUEXT) : $(NSOSDIR)/EmbeddedApi.HeapMGR.pp $(HEAPMGR_DEPS)
 
 define CPU_UNITS_RULE
 ifndef FPC_DOTTEDUNITS
-ifeq ($(ARCH),avr)
-$(1)$(PPUEXT): $(ARCH)/$(1).pp intrinsics$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-else
-$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
-endif
+$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
 $(eval UNIT_REG_NAME=$(subst EmbeddedApi.,,$(1)))
 $(eval UNIT_REG_NAME=$(subst ARMApi.,,$(UNIT_REG_NAME)))
 ifeq ($(ARCH),avr)
 # No dotted rules for AVR cpu yet
-$(1)$(PPUEXT):  $(ARCH)/$(1).pp intrinsics$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT):  $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
 # mipsel is also not yet in namespaced
 ifeq ($(ARCH),mipsel)
-$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 else
-$(1)$(PPUEXT): $(NSOSDIR)/$(ARCH)/$(1).pp $(ARCH)/$(UNIT_REG_NAME).pp $(SYSTEMUNIT)$(PPUEXT)
+$(1)$(PPUEXT): $(NSOSDIR)/$(ARCH)/$(1).pp $(ARCH)/$(UNIT_REG_NAME).pp $(SYSTEMUNIT)$(PPUEXT) $(addsuffix $(PPUEXT),$(CPU_SPECIFIC_COMMON_UNITS))
 endif
 endif
 endif
@@ -352,7 +348,6 @@ else
 $(addsuffix $(PPUEXT),$(CPU_UNITS)):
 	$(COMPILER) -g -Fi$(OSDIR) -Fi$(OSDIR)/$(ARCH) $<
 endif
-	
 
 # AVR specific units
 

+ 100 - 44
rtl/emx/Makefile

@@ -895,15 +895,12 @@ SYSTEMUNIT=system
 ifndef FPC_DOTTEDUNITS
 RTLCONSTSUNIT=rtlconst
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 SYSTEMUNITEXT=pas
 DOSUNITEXT=pas
 PORTSUNITEXT=pas
 ifeq ($(CPU_OS_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-emx)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2191,8 +2188,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2209,9 +2210,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2221,6 +2228,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2250,7 +2260,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2268,7 +2278,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2296,21 +2306,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2346,7 +2356,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2363,14 +2373,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2384,7 +2397,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2414,17 +2427,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2433,28 +2449,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2463,28 +2479,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2493,7 +2509,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2506,8 +2522,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2551,7 +2570,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2559,7 +2578,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2574,20 +2593,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2639,8 +2662,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2660,16 +2686,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2677,6 +2707,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2695,14 +2730,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2726,6 +2761,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 1 - 8
rtl/emx/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 [target]
 loaders=prt0 prt1
-units=$(SYSTEMUNIT) $(UUCHARUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) \
       $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) \
       $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) \
@@ -54,13 +54,6 @@ ifndef FPC_DOTTEDUNITS
 RTLCONSTSUNIT=rtlconst
 endif
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 

+ 125 - 105
rtl/freebsd/Makefile

@@ -892,30 +892,34 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 CPU_UNITS=
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS = sysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 loaders+=gprt0
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 ASTARGET=--32
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 ASTARGET=--64
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd freebsd $(CONSOLEUNIT) sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(FREEBSDUNIT) $(CONSOLEUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd freebsd $(CONSOLEUNIT) sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(FREEBSDUNIT) $(CONSOLEUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd freebsd $(CONSOLEUNIT) sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(FREEBSDUNIT) $(CONSOLEUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-freebsd)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -936,13 +940,13 @@ ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
 override TARGET_LOADERS+=prt0 cprt0 gprt0 dllprt0
 endif
 ifeq ($(CPU_OS_TARGET),i386-freebsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-freebsd)
@@ -2233,8 +2237,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2251,9 +2259,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2263,6 +2277,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2292,7 +2309,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2310,7 +2327,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2338,21 +2355,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2388,7 +2405,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2405,14 +2422,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2426,7 +2446,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2456,17 +2476,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2475,28 +2498,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2505,28 +2528,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2535,7 +2558,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2548,8 +2571,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2593,7 +2619,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2601,7 +2627,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2616,20 +2642,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2681,8 +2711,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2702,16 +2735,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2719,6 +2756,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2737,14 +2779,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2768,6 +2810,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2912,7 +2975,8 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS = unxconst.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 prt0$(OEXT) : $(CPU_TARGET)/prt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(CPU_TARGET)/prt0.as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
@@ -2921,58 +2985,14 @@ gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)gprt0$(OEXT) $(CPU_TARGET)/gprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp unxconst.inc $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc sysctl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 unxconst.inc $(UNIXINC)/timezone.inc \
-		 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-		   sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  FREEBSD_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
 else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
+  FREEBSD_DEPS_OS+=$(INITCUNIT)$(PPUEXT)
 endif
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp baseunix$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) $<
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
-	$(COMPILER) $<
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $<
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
+FREEBSD_DEPS = freebsd.pas $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(SYSCTLUNIT)$(PPUEXT) \
+	 $(FREEBSD_DEPS_OS) $(FREEBSD_DEPS_CPU)
+freebsd$(PPUEXT): $(FREEBSD_DEPS)
+	$(COMPILER) $(FREEBSD_OPT) $<
+FreeBSDApi.FreeBSD$(PPUEXT): $(NSFREEBSDDIR)/FreeBSDApi.FreeBSD.pas $(FREEBSD_DEPS)
+	$(COMPILER) $(FREEBSD_OPT) $<

+ 32 - 113
rtl/freebsd/Makefile.fpc

@@ -10,20 +10,20 @@ fpcpackage=y
 
 [target]
 loaders=prt0 cprt0 gprt0 dllprt0
-units=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
-      $(STRINGSUNIT) syscall sysctl baseunix unixutil $(CHARACTERUNIT) \
-      unix rtlconsts initc $(CMEMUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
+      $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) \
+      $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) \
       $(DLUNIT) $(TERMIOUNIT) \
-      sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) \
+      $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) \
       $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) \
-      $(ERRORSUNIT) bsd freebsd \
+      $(ERRORSUNIT) $(BSDUNIT) $(FREEBSDUNIT) \
       $(CONSOLEUNIT) \
-      sysconst cthreads dos cwstring \
+      $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) \
       $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -43,9 +43,9 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(COMMON)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos  \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT)  \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT) $(DYNLIBSUNIT)
 
@@ -61,29 +61,30 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 CPU_UNITS=
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 
+SYSCALL_DEPS_OS = sysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
+
 SYSTEMUNIT=system
 loaders+=gprt0
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 ASTARGET=--32
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 ASTARGET=--64
 endif
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -102,8 +103,8 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
+SYSDEPS = unxconst.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 
 #
 # Loaders
@@ -122,102 +123,20 @@ dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
         $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
 
 #
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp unxconst.inc $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-		
-baseunix$(PPUEXT) : $(UNIXINC)/baseunix.pp errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc sysctl$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 unxconst.inc $(UNIXINC)/timezone.inc \
-                 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-                   sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-#
-# Other system-independent RTL Units
+# freebsd unit
 #
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-        $(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  FREEBSD_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
 else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
+  FREEBSD_DEPS_OS+=$(INITCUNIT)$(PPUEXT)
 endif
 
-#
-# Other system-dependent RTL Units
-#
-
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp baseunix$(PPUEXT) unixtype$(PPUEXT)
-        $(COMPILER) $<
-
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT)
-        $(COMPILER) $<
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-        $(COMPILER) $<
+FREEBSD_DEPS = freebsd.pas $(SYSTEMUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(SYSCTLUNIT)$(PPUEXT) \
+         $(FREEBSD_DEPS_OS) $(FREEBSD_DEPS_CPU)
 
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
+freebsd$(PPUEXT): $(FREEBSD_DEPS)
+	$(COMPILER) $(FREEBSD_OPT) $<
 
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
+FreeBSDApi.FreeBSD$(PPUEXT): $(NSFREEBSDDIR)/FreeBSDApi.FreeBSD.pas $(FREEBSD_DEPS)
+        $(COMPILER) $(FREEBSD_OPT) $<
 

+ 113 - 55
rtl/freertos/Makefile

@@ -903,9 +903,9 @@ CPU_UNITS=
 SYSINIT_UNITS=
 CPU_SPECIFIC_COMMON_UNITS=
 DOSDIR=.
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 ifeq ($(ARCH),arm)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),armv7m)
 CPU_UNITS=stm32f103xe cortexm3 cortexm4 # thumb2_bare
 CPU_UNITS_DEFINED=1
@@ -1005,7 +1005,7 @@ endif
 endif
 endif
 ifeq ($(ARCH),i386)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 CPU_UNITS=multiboot
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
@@ -1013,13 +1013,13 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),x86_64)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 endif
 ifeq ($(ARCH),m68k)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT)
 endif
 ifeq ($(ARCH),mipsel)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),pic32mx)
 CPU_UNITS=pic32mx1xxfxxxb pic32mx2xxfxxxb pic32mx1xxfxxxc pic32mx2xxfxxxc pic32mx1xxfxxxd pic32mx2xxfxxxd pic32mx7x5fxxxl pic32mx7x5fxxxh
 CPU_UNITS_DEFINED=1
@@ -1029,7 +1029,7 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),riscv32)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),rv32imc)
 override FPCOPT+=-Cprv32imc
 CPU_UNITS=esp32c3 esp32c3idf_50000
@@ -1040,7 +1040,7 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),riscv64)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 CPU_UNITS=
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
@@ -1048,7 +1048,7 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),xtensa)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),lx6)
 CPU_UNITS=esp32 espidf_40100 espidf_40200 espidf_40400
 CPU_UNITS_DEFINED=1
@@ -1063,13 +1063,13 @@ endif
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),arm-freertos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) objpas $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),riscv32-freertos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) objpas $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),xtensa-freertos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) objpas $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) $(STRINGSUNIT) $(SORTBASEUNIT) $(DOSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-freertos)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2378,8 +2378,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2396,9 +2400,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2408,6 +2418,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2437,7 +2450,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2455,7 +2468,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2483,21 +2496,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2533,7 +2546,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2550,14 +2563,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2571,7 +2587,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2601,17 +2617,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2620,28 +2639,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2650,28 +2669,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2680,7 +2699,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2693,8 +2712,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2738,7 +2760,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2746,7 +2768,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2761,20 +2783,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2826,8 +2852,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2847,16 +2876,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2864,6 +2897,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2882,14 +2920,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2913,6 +2951,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -3056,11 +3115,10 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
+override FPC_SYSTEM_OPT += @system.cfg
 startup$(OEXT) : $(CPU_TARGET)/startup.s
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)startup$(OEXT) $(CPU_TARGET)/startup.s  -mabi=32 -march=pic32mx -mtune=pic32mx -W -EL  -msym32
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @system.cfg $(REDIR)
 consoleio$(PPUEXT) : consoleio.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) $<
 heapmgr$(PPUEXT) : heapmgr.pp $(SYSTEMUNIT)$(PPUEXT)

+ 13 - 15
rtl/freertos/Makefile.fpc

@@ -12,7 +12,7 @@ loaders=$(LOADERS)
 # not all targets include enough features to build all units so
 # the common units which are not compiled for all CPUs are stored in
 # CPU_SPECIFIC_COMMON_UNITS
-units=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) objpas $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) \
+units=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio  $(CPU_SPECIFIC_COMMON_UNITS) \
 # $(MACPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT)
        $(STRINGSUNIT) \
        $(SORTBASEUNIT) \
@@ -23,7 +23,7 @@ units=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) objpas $(ISO7185UNIT) $(EXTPASUNI
        $(CHARACTERUNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-#rsts=$(MATHUNIT) rtlconsts varutils typinfo variants classes sysconst dateutil
+#rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -68,10 +68,10 @@ CPU_SPECIFIC_COMMON_UNITS=
 # Dos unit, local source
 DOSDIR=.
 # Dos unit uses objfpc mode
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 
 ifeq ($(ARCH),arm)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),armv7m)
 CPU_UNITS=stm32f103xe cortexm3 cortexm4 # thumb2_bare
 CPU_UNITS_DEFINED=1
@@ -173,7 +173,7 @@ endif
 endif
 
 ifeq ($(ARCH),i386)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 CPU_UNITS=multiboot
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
@@ -182,17 +182,17 @@ endif
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 # CPU_UNITS=multiboot
 endif
 
 ifeq ($(ARCH),m68k)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT)
 # CPU_UNITS=multiboot
 endif
 
 ifeq ($(ARCH),mipsel)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),pic32mx)
 CPU_UNITS=pic32mx1xxfxxxb pic32mx2xxfxxxb pic32mx1xxfxxxc pic32mx2xxfxxxc pic32mx1xxfxxxd pic32mx2xxfxxxd pic32mx7x5fxxxl pic32mx7x5fxxxh
 CPU_UNITS_DEFINED=1
@@ -203,7 +203,7 @@ endif
 endif
 
 ifeq ($(ARCH),riscv32)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),rv32imc)
 override FPCOPT+=-Cprv32imc
 CPU_UNITS=esp32c3 esp32c3idf_50000
@@ -215,7 +215,7 @@ endif
 endif
 
 ifeq ($(ARCH),riscv64)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 CPU_UNITS=
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
@@ -224,7 +224,7 @@ endif
 endif
 
 ifeq ($(ARCH),xtensa)
-CPU_SPECIFIC_COMMON_UNITS=sysutils $(MATHUNIT) classes $(FGLUNIT) $(MACPASUNIT) typinfo types rtlconsts $(GETOPTSUNIT) $(LINEINFOUNIT)
+CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
 ifeq ($(SUBARCH),lx6)
 CPU_UNITS=esp32 espidf_40100 espidf_40200 espidf_40400
 CPU_UNITS_DEFINED=1
@@ -256,7 +256,8 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
+override FPC_SYSTEM_OPT += @system.cfg
 
 #
 # Loaders
@@ -269,9 +270,6 @@ startup$(OEXT) : $(CPU_TARGET)/startup.s
 # Base Units (System, $(STRINGSUNIT), os-dependent-base-unit)
 #
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp @system.cfg $(REDIR)
-
 consoleio$(PPUEXT) : consoleio.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) $<
 

+ 100 - 82
rtl/gba/Makefile

@@ -889,13 +889,10 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 LOADERS=prt0 cprt0
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-gba)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2180,8 +2177,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2198,9 +2199,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2210,6 +2217,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2239,7 +2249,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2257,7 +2267,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2285,21 +2295,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2335,7 +2345,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2352,14 +2362,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2373,7 +2386,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2403,17 +2416,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2422,28 +2438,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2452,28 +2468,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2482,7 +2498,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2495,8 +2511,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2540,7 +2559,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2548,7 +2567,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2563,20 +2582,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2628,8 +2651,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2649,16 +2675,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2666,6 +2696,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2684,14 +2719,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2715,6 +2750,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2864,41 +2920,3 @@ prt0$(OEXT) : prt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) prt0.as
 cprt0$(OEXT) : cprt0.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)cprt0$(OEXT) cprt0.as
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-	$(COMPILER) exec.pp
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-	$(COMPILER) timer.pp
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-	$(COMPILER) utility.pp
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-	$(COMPILER) doslib.pp
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-	$(COMPILER) hardware.pas
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) inputevent.pas
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-	$(COMPILER) graphics.pas
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) layers.pas
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-		    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-	$(COMPILER) intuition.pas
-aboxlib$(PPUEXT): aboxlib.pas
-	$(COMPILER) aboxlib.pas
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-	$(COMPILER) clipboard.pas
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-		   utility$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) datatypes.pas
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) asl.pas
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) ahi.pas
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) mui.pas
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-	$(COMPILER) tinygl.pp
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-	$(COMPILER) get9.pas
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) muihelper.pas

+ 2 - 73
rtl/gba/Makefile.fpc

@@ -7,13 +7,13 @@ main=rtl
 
 [target]
 loaders=$(LOADERS)
-units=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(SORTBASEUNIT)  $(SYSUTILSUNIT) \
       $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  \
       $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \
       $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT) 
-#rsts=$(MATHUNIT) rtlconsts varutils typinfo variants classes sysconst dateutil fpmkunit
+#rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(CP_UNITS) $(UNICODEDATAUNIT)
 
 [require]
@@ -40,13 +40,6 @@ UNITPREFIX=rtl
 SYSTEMUNIT=system
 LOADERS=prt0 cprt0
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
@@ -78,67 +71,3 @@ prt0$(OEXT) : prt0.as
 cprt0$(OEXT) : cprt0.as
         $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)cprt0$(OEXT) cprt0.as
 
-#
-# Base Units (System, strings, os-dependent-base-unit)
-#
-
-#
-# Other system-dependent RTL Units
-#
-
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-	$(COMPILER) exec.pp
-
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-	$(COMPILER) timer.pp
-
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-	$(COMPILER) utility.pp
-
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-	$(COMPILER) doslib.pp
-
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-	$(COMPILER) hardware.pas
-
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) inputevent.pas
-
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-	$(COMPILER) graphics.pas
-
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) layers.pas
-
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-                    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-	$(COMPILER) intuition.pas
-
-aboxlib$(PPUEXT): aboxlib.pas
-	$(COMPILER) aboxlib.pas
-
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-	$(COMPILER) clipboard.pas
-
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-                   utility$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) datatypes.pas
-
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) asl.pas
-
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) ahi.pas
-
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) mui.pas
-
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-	$(COMPILER) tinygl.pp
-
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-	$(COMPILER) get9.pas
-
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) muihelper.pas
-

+ 142 - 109
rtl/go32v2/Makefile

@@ -888,9 +888,12 @@ COMMON=$(RTL)/common
 PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
+ifndef FPC_DOTTEDUNITS
+RTLCONSTSUNIT=rtlconst
 endif
+INITC_DEPS_OS=$(DPMIEXCPUNIT)$(PPUEXT)
+DOS_DEPS_OS = $(GO32UNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) $(GO32UNIT)$(PPUEXT)
 OBJPASDIR=$(RTL)/objpas
 ifdef EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
@@ -899,7 +902,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) go32 dpmiexcp initc $(PORTSUNIT) profile dxetype dxeload emu387 dos $(CMEMUNIT) $(SORTBASEUNIT) sysutils classes $(MATHUNIT) typinfo cpu $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) ctypes $(FGLUNIT) msmouse $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) types sysconst rtlconst $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(GO32UNIT) $(DPMIEXCPUNIT) $(INITCUNIT) $(PORTSUNIT) $(PROFILEUNIT) $(DXETYPEUNIT) $(DXELOADUNIT) $(EMU387UNIT) $(DOSUNIT) $(CMEMUNIT) $(SORTBASEUNIT) $(SYSUTILSUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) $(MSMOUSEUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS)
@@ -908,7 +911,7 @@ ifeq ($(CPU_OS_TARGET),i386-go32v2)
 override TARGET_LOADERS+=prt0 exceptn fpu
 endif
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
@@ -2187,8 +2190,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2205,9 +2212,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2217,6 +2230,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2246,7 +2262,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2264,7 +2280,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2292,21 +2308,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2342,7 +2358,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2359,14 +2375,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2380,7 +2399,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2410,17 +2429,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2429,28 +2451,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2459,28 +2481,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2489,7 +2511,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2502,8 +2524,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2547,7 +2572,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2555,7 +2580,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2570,20 +2595,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2635,8 +2664,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2656,16 +2688,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2673,6 +2709,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2691,14 +2732,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2722,6 +2763,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2868,68 +2930,39 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 prt0$(OEXT) : v2prt0.as
-	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) v2prt0.as
-system$(PPUEXT) : system.pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-go32$(PPUEXT) : go32.pp system$(PPUEXT)
-	$(COMPILER) go32.pp
-	$(EXECPPAS)
-dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
-	$(COMPILER) -Sg dpmiexcp.pp
-	$(EXECPPAS)
-initc$(PPUEXT) : initc.pp system$(PPUEXT)
-	$(COMPILER) initc.pp
-	$(EXECPPAS)
-profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
-	$(COMPILER) profile.pp
-	$(EXECPPAS)
-dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
-	$(COMPILER) dxetype.pp
-	$(EXECPPAS)
-dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dxeload.pp
-	$(EXECPPAS)
-emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
-		  dpmiexcp$(PPUEXT)
-	$(COMPILER) emu387.pp
-	$(EXECPPAS)
-dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
-	       go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-		   sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconst$(PPUEXT)
-	$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
-rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
-	$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
-	$(EXECPPAS)
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(INC)/matrix.pp
-	$(EXECPPAS)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp $(MATHUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(INC)/ucomplex.pp
-	$(EXECPPAS)
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
-	$(COMPILER) msmouse.pp
-	$(EXECPPAS)
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-	$(EXECPPAS)
+	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $<
+exceptn$(OEXT) : exceptn.as
+	$(AS) -o $(UNITTARGETDIRPREFIX)exceptn$(OEXT) $<
+fpu$(OEXT) : fpu.as
+	$(AS) -o $(UNITTARGETDIRPREFIX)fpu$(OEXT) $<
+GO32_DEPS = go32.pp $(SYSTEMUNIT)$(PPUEXT)
+go32$(PPUEXT) : $(GO32_DEPS)
+	$(COMPILER) $<
+DOSApi.GO32$(PPUEXT) : $(NSOSINC)/DOSApi.GO32.pp $(GO32_DEPS)
+	$(COMPILER) -Sg $(GO32_OPT) $<
+DPMIEXCP_DEPS = dpmiexcp.pp exceptn$(OEXT) $(SYSTEMUNIT)$(PPUEXT)
+dpmiexcp$(PPUEXT) : $(DPMIEXCP_DEPS)
+	$(COMPILER) -Sg $(DPMIEXCP_OPT) $<
+DOSApi.dpmiexcp$(PPUEXT) : $(NSOSINC)/DOSApi.dpmiexcp.pp $(DPMIEXCP_DEPS)
+	$(COMPILER) -Sg $(DPMIEXCP_OPT) $<
+PROFILE_DEPS = profile.pp $(DPMIEXCPUNIT)$(PPUEXT) $(GO32UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+profile$(PPUEXT) : $(PROFILE_DEPS)
+	$(COMPILER) $(PROFILE_OPT) $<
+DOSApi.profile$(PPUEXT) : $(NSOSINC)/DOSApi.profile.pp $(PROFILE_DEPS)
+	$(COMPILER) $(PROFILE_OPT) $<
+DXETYPE_DEPS = dxetype.pp $(SYSTEMUNIT)$(PPUEXT)
+dxetype$(PPUEXT) : $(DXETYPE_DEPS)
+	$(COMPILER) $(DXETYPE_OPT) $<
+DOSApi.dxetype$(PPUEXT) : $(NSOSINC)/DOSApi.dxetype.pp $(DXETYPE_DEPS)
+	$(COMPILER) $(DXETYPE_OPT) $<
+DXELOAD_DEPS = dxeload.pp $(DXETYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+dxeload$(PPUEXT) : $(DXELOAD_DEPS)
+	$(COMPILER) $(DXELOAD_OPT) $<
+DOSApi.dxeload$(PPUEXT) : $(NSOSINC)/DOSApi.dxeload.pp $(DXELOAD_DEPS)
+	$(COMPILER) $(DXELOAD_OPT) $<
+EMU387_DEPS = emu387.pp fpu$(OEXT) $(STRINGSUNIT)$(PPUEXT) $(DXELOADUNIT)$(PPUEXT) \
+		  $(DPMIEXCPUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+emu387$(PPUEXT) : $(EMU387_DEPS)
+	$(COMPILER) $(EMU387_OPT) $<
+DOSApi.EMU387$(PPUEXT) : $(NSOSINC)/DOSApi.EMU387.pp $(EMU387_DEPS)
+	$(COMPILER) $(EMU387_OPT) $<

+ 58 - 93
rtl/go32v2/Makefile.fpc

@@ -5,16 +5,16 @@
 main=rtl
 [target]
 loaders=prt0 exceptn fpu
-units=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
-      go32 dpmiexcp initc $(PORTSUNIT) profile dxetype dxeload emu387 \
-      dos $(CMEMUNIT) $(SORTBASEUNIT) \
-      sysutils classes $(MATHUNIT) typinfo \
-      cpu $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) ctypes $(FGLUNIT) \
-      msmouse $(CHARSETUNIT) $(CPALLUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+      $(GO32UNIT) $(DPMIEXCPUNIT) $(INITCUNIT) $(PORTSUNIT) $(PROFILEUNIT) $(DXETYPEUNIT) $(DXELOADUNIT) $(EMU387UNIT) \
+      $(DOSUNIT) $(CMEMUNIT) $(SORTBASEUNIT) \
+      $(SYSUTILSUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) \
+      $(MSMOUSEUNIT) $(CHARSETUNIT) $(CPALLUNIT) \
       $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) \
-      types sysconst rtlconst \
+      $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS)
 [require]
 nortl=y
@@ -33,12 +33,14 @@ COMMON=$(RTL)/common
 PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
+ifndef FPC_DOTTEDUNITS
+RTLCONSTSUNIT=rtlconst
 endif
+
+INITC_DEPS_OS=$(DPMIEXCPUNIT)$(PPUEXT)
+DOS_DEPS_OS = $(GO32UNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) $(GO32UNIT)$(PPUEXT)
+
 # Paths
 OBJPASDIR=$(RTL)/objpas
 # Insert exception handler in system unit
@@ -50,123 +52,86 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 [rules]
+
 .NOTPARALLEL:
+
 # Get the system independent include file names.
 # This will set the following variables :
 # SYSINCNAMES
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
+
 # Get the processor dependent include file names.
 # This will set the following variables :
 # CPUINCNAMES
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
+
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+
 #
 # Loaders
 #
 prt0$(OEXT) : v2prt0.as
-	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) v2prt0.as
-#
-# System Units (System, Objpas, Strings)
-#
-system$(PPUEXT) : system.pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
+	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $<
+
+exceptn$(OEXT) : exceptn.as
+	$(AS) -o $(UNITTARGETDIRPREFIX)exceptn$(OEXT) $<
+
+fpu$(OEXT) : fpu.as
+	$(AS) -o $(UNITTARGETDIRPREFIX)fpu$(OEXT) $<
 
 #
 # System Dependent Units
 #
-go32$(PPUEXT) : go32.pp system$(PPUEXT)
-	$(COMPILER) go32.pp
-	$(EXECPPAS)
 
-dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
-	$(COMPILER) -Sg dpmiexcp.pp
-	$(EXECPPAS)
+GO32_DEPS = go32.pp $(SYSTEMUNIT)$(PPUEXT)
 
-initc$(PPUEXT) : initc.pp system$(PPUEXT)
-	$(COMPILER) initc.pp
-	$(EXECPPAS)
+go32$(PPUEXT) : $(GO32_DEPS)
+	$(COMPILER) $<
 
-profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
-	$(COMPILER) profile.pp
-	$(EXECPPAS)
+DOSApi.GO32$(PPUEXT) : $(NSOSINC)/DOSApi.GO32.pp $(GO32_DEPS)
+	$(COMPILER) -Sg $(GO32_OPT) $<
 
-dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
-	$(COMPILER) dxetype.pp
-	$(EXECPPAS)
+DPMIEXCP_DEPS = dpmiexcp.pp exceptn$(OEXT) $(SYSTEMUNIT)$(PPUEXT)
 
-dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dxeload.pp
-	$(EXECPPAS)
+dpmiexcp$(PPUEXT) : $(DPMIEXCP_DEPS)
+	$(COMPILER) -Sg $(DPMIEXCP_OPT) $<
 
-emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
-		  dpmiexcp$(PPUEXT)
-	$(COMPILER) emu387.pp
-	$(EXECPPAS)
+DOSApi.dpmiexcp$(PPUEXT) : $(NSOSINC)/DOSApi.dpmiexcp.pp $(DPMIEXCP_DEPS)
+	$(COMPILER) -Sg $(DPMIEXCP_OPT) $<
 
-#
-# TP7 Compatible RTL Units
-#
-dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
-	       go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
+PROFILE_DEPS = profile.pp $(DPMIEXCPUNIT)$(PPUEXT) $(GO32UNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 
-#
-# Delphi Compatible Units
-#
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
+profile$(PPUEXT) : $(PROFILE_DEPS)
+	$(COMPILER) $(PROFILE_OPT) $<
 
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconst$(PPUEXT) types$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-		   sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+DOSApi.profile$(PPUEXT) : $(NSOSINC)/DOSApi.profile.pp $(PROFILE_DEPS)
+	$(COMPILER) $(PROFILE_OPT) $<
 
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) rtlconst$(PPUEXT)
-	$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
+DXETYPE_DEPS = dxetype.pp $(SYSTEMUNIT)$(PPUEXT)
 
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
+dxetype$(PPUEXT) : $(DXETYPE_DEPS)
+	$(COMPILER) $(DXETYPE_OPT) $<
 
-rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
-	$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconst.pp
-	$(EXECPPAS)
+DOSApi.dxetype$(PPUEXT) : $(NSOSINC)/DOSApi.dxetype.pp $(DXETYPE_DEPS)
+	$(COMPILER) $(DXETYPE_OPT) $<
 
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
+DXELOAD_DEPS = dxeload.pp $(DXETYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 
-#
-# Other system-independent RTL Units
-#
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
+dxeload$(PPUEXT) : $(DXELOAD_DEPS)
+	$(COMPILER) $(DXELOAD_OPT) $<
 
-matrix$(PPUEXT) : $(INC)/matrix.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(INC)/matrix.pp
-	$(EXECPPAS)
+DOSApi.dxeload$(PPUEXT) : $(NSOSINC)/DOSApi.dxeload.pp $(DXELOAD_DEPS)
+	$(COMPILER) $(DXELOAD_OPT) $<
 
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp $(MATHUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(INC)/ucomplex.pp
-	$(EXECPPAS)
+EMU387_DEPS = emu387.pp fpu$(OEXT) $(STRINGSUNIT)$(PPUEXT) $(DXELOADUNIT)$(PPUEXT) \
+		  $(DPMIEXCPUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 
-#
-# Other system-dependent RTL Units
-#
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
-	$(COMPILER) msmouse.pp
-	$(EXECPPAS)
+emu387$(PPUEXT) : $(EMU387_DEPS)
+	$(COMPILER) $(EMU387_OPT) $<
 
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-	$(EXECPPAS)
+DOSApi.EMU387$(PPUEXT) : $(NSOSINC)/DOSApi.EMU387.pp $(EMU387_DEPS)
+	$(COMPILER) $(EMU387_OPT) $<
 

+ 102 - 45
rtl/haiku/Makefile

@@ -891,20 +891,18 @@ SYSINITUNITS=si_c si_dllc
 UNITPREFIX=rtl
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+TTHREADINCDIR=$(UNIXINC)
 ifeq ($(ARCH),i386)
 LOADERS=cprt0 dllcprt0
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(ARCH),x86_64)
 LOADERS=
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifneq ($(findstring $(ARCH),x86_64 i386),)
 CPU_DEP_CPUS=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+=-dFPC_USE_LIBC
 OBJPASDIR=$(RTL)/objpas
 SYSTEMUNIT=system
@@ -2222,8 +2220,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2240,9 +2242,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2252,6 +2260,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2281,7 +2292,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2299,7 +2310,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2327,21 +2338,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2377,7 +2388,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2394,14 +2405,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2415,7 +2429,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2445,17 +2459,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2464,28 +2481,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2494,28 +2511,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2524,7 +2541,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2537,8 +2554,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2582,7 +2602,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2590,7 +2610,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2605,20 +2625,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2670,8 +2694,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2691,16 +2718,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2708,6 +2739,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2726,14 +2762,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2757,6 +2793,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 6 - 11
rtl/haiku/Makefile.fpc

@@ -40,9 +40,9 @@ targetdir=.
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT) $(DYNLIBSUNIT)
 
@@ -57,27 +57,22 @@ SYSINITUNITS=si_c si_dllc
 UNITPREFIX=rtl
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+TTHREADINCDIR=$(UNIXINC)
 
 ifeq ($(ARCH),i386)
 LOADERS=cprt0 dllcprt0
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)
 LOADERS=
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 
 ifneq ($(findstring $(ARCH),x86_64 i386),)
 CPU_DEP_CPUS=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 endif
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+=-dFPC_USE_LIBC
 
 # Paths

+ 121 - 40
rtl/inc/Makefile.rtl

@@ -567,8 +567,12 @@ DYNLIBSINCDIR=$(OSDIR)
 endif
 
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
@@ -590,10 +594,18 @@ ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
 
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
+
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
 
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
+
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -606,6 +618,10 @@ ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
 
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
+
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -662,7 +678,7 @@ endif
 
 # System
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
         $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 
 # uuchar
@@ -695,7 +711,7 @@ objpas$(PPUEXT): $(OBJPAS_DEPS)
 # macpas
 
 MACPAS_DEPS=$(INC)/macpas.pp \
-            objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+            $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
             $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 
 macpas$(PPUEXT) : $(MACPAS_DEPS)
@@ -747,7 +763,7 @@ heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 # softfpu
 
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-             $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+             $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
              $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
@@ -758,7 +774,7 @@ System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS)
 
 # sfpux80
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-             $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+             $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
              $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
  
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
@@ -769,7 +785,7 @@ System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 
 # sfpu128
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-             $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+             $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
              $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
  
 
@@ -839,7 +855,7 @@ System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 # Dynlibs
 #
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-             objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+             $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
              $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 
 ifdef DYNLIBSINCDIR
@@ -869,7 +885,7 @@ System.InitC$(PPUEXT) : $(NSINC)/System.InitC.pp  $(INITC_DEPS)
 #
 # UnixCP
 #
-UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+UNIXCP_DEPS=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
         $(UNIXCP_DEPS_OS) $(UNIXCP_DEPS_CPU)
 
 unixcp$(PPUEXT) : $(UNIXCP_DEPS)
@@ -881,9 +897,12 @@ UnixApi.CP$(PPUEXT) : $(NSINC)/UnixApi.CP.pp $(UNIXCP_DEPS)
 #
 # Linux
 #
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 
 LINUX_DEPS=$(OSDIR)/linux.pp \
-           $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+           $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
            $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 
 linux$(PPUEXT): $(LINUX_DEPS)
@@ -908,7 +927,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 #
 FPCYLIX_DEPS=../linux/fpcylix.pp \
              $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-             objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+             $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
              $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 
 
@@ -974,11 +993,15 @@ DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 # for convenience this can be reused in SYSUTILS_DEPS_OS
 
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-                   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+                   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
                    $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
 
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-              $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+              $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
               $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
@@ -990,8 +1013,8 @@ System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 #
 # Classes
 #
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
              $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
              $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
              $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -1006,7 +1029,7 @@ System.Classes$(PPUEXT) : $(NSINC)/System.Classes.pp $(CLASSES_DEPS)
 # TypInfo
 #
 TYPINFO_DEPS=$(OBJPASDIR)/typinfo.pp \
-             objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+             $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
              $(TYPINFO_DEPS_OS) $(TYPINFO_DEPS_CPU)
 
 typinfo$(PPUEXT): $(TYPINFO_DEPS)
@@ -1020,7 +1043,7 @@ System.TypInfo$(PPUEXT): $(NSINC)/System.TypInfo.pp $(TYPINFO_DEPS)
 # let it depend on buildcollations to prevent simultaneous building of $(UNICODEDATAUNIT)
 
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-               $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+               $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
                $(CHARACTER_DEPS_OS) $(CHARACTER_DEPS_CPU)
 
 character$(PPUEXT): $(CHARACTER_DEPS)
@@ -1033,7 +1056,7 @@ System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 # Math
 #
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-           objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+           $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
            $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 
 math$(PPUEXT): $(MATH_DEPS)
@@ -1046,7 +1069,7 @@ System.Math$(PPUEXT): $(NSINC)/System.Math.pp $(MATH_DEPS)
 # FGL
 #
 FGL_DEPS=$(OBJPASDIR)/fgl.pp \
-          objpas$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+          $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
           $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
           $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -1061,7 +1084,7 @@ System.FGL$(PPUEXT) : $(NSINC)/System.FGL.pp $(FGL_DEPS)
 # Types
 #
 TYPES_DEPS=$(OBJPASDIR)/types.pp \
-           objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+           $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
            $(TYPES_DEPS_OS) $(TYPES_DEPS_CPU)
  
 types$(PPUEXT) : $(TYPES_DEPS)
@@ -1074,7 +1097,7 @@ System.Types$(PPUEXT) :  $(NSINC)/System.Types.pp $(TYPES_DEPS)
 # SysConst
 #
 SYSCONST_DEPS=$(OBJPASDIR)/sysconst.pp \
-              objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+              $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
               $(SYSCONST_DEPS_OS) $(SYSCONST_DEPS_CPU)
             
 sysconst$(PPUEXT) : $(SYSCONST_DEPS)
@@ -1090,15 +1113,15 @@ System.SysConst$(PPUEXT) :  $(NSINC)/System.SysConst.pp $(SYSCONST_DEPS)
 # Thus we need to use the variable here
 #
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-              objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+              $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
               $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
         $(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-              objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+              $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
               $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
@@ -1119,7 +1142,7 @@ CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 
 CPU_DEPS=$(PROCINC)/cpu.pp \
-         $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+         $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
          $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 
 cpu$(PPUEXT) : $(CPU_DEPS)
@@ -1144,9 +1167,12 @@ System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 #
 # X86
 #
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 
 X86_DEPS = $(UNIXINC)/x86.pp \
-          $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+          $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
           $(X86_DEPS_OS) $(X86_DEPS_CPU)
 
 x86$(PPUEXT) : $(X86_DEPS)
@@ -1227,7 +1253,7 @@ System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 #
 
 CHARSET_DEPS=$(INC)/charset.pp \
-             $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+             $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
              $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 
 charset$(PPUEXT) : $(CHARSET_DEPS)
@@ -1242,7 +1268,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
         $(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
@@ -1274,14 +1300,18 @@ endif
 
 # TODO: fpwidestring unit also includes rtldefs.inc
 # but this can be in different directories
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
                   $(CHARACTERUNIT)$(PPUEXT) $(CPALLUNIT)$(PPUEXT) \
                   $(FPWIDESTRING_DEPS_OS) $(FPWIDESTRING_DEPS_CPU)
 
@@ -1295,7 +1325,7 @@ System.FPWideString$(PPUEXT): $(NSINC)/System.FPWideString.pp $(FPWIDESTRING_DEP
 # sortbase
 #
 
-SORTBASE_DEPS=$(INC)/sortbase.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+SORTBASE_DEPS=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
               $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
@@ -1398,8 +1428,12 @@ UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS)
 #
 # UnixType
 #
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
+
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-              $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+              $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
               $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
                
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
@@ -1440,8 +1474,8 @@ UnixApi.Errors$(PPUEXT) : $(NSINC)/UnixApi.Errors.pp $(ERRORS_DEPS)
 # CThreads
 #
 
-CTHREADS_DEPS=$(UNIXINC)/cthreads.pp \
-              $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+              $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
               $(BASEUNIXUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(DLUNIT)$(PPUEXT) \
               $(CTHREADS_DEPS_OS) $(CTHREADS_DEPS_CPU)
 
@@ -1454,8 +1488,14 @@ UnixApi.CThreads$(PPUEXT) : $(NSINC)/UnixApi.CThreads.pp $(CTHREADS_DEPS)
 #
 # CWString
 #
-CWSTRING_DEPS=$(UNIXINC)/cwstring.pp \
-              $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+              $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
               $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
               $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
               $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -1470,6 +1510,12 @@ UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 # Ctypes
 #
 
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
+
 CTYPES_DEPS=$(INC)/ctypes.pp \
             $(SYSTEMUNIT)$(PPUEXT) \
             $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -1506,7 +1552,7 @@ objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 #
 
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-              $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+              $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
               $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
@@ -1524,7 +1570,7 @@ ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
 
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
              $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 
 windows$(PPUEXT): $(WINDOWS_DEPS)
@@ -1564,6 +1610,38 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
         $(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
 
+#
+# win16 specific WinAPI Units
+#
+
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+
+# winprocs uses $mode objfpc, which loads objpas unit implicitly
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+
+# win31 uses $mode objfpc, which loads objpas unit implicitly
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
 
 ###################
 # BSD units
@@ -1572,6 +1650,9 @@ WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 #
 # sysctl
 #
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
             $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)

+ 100 - 41
rtl/java/Makefile

@@ -896,7 +896,7 @@ SYSINIT_UNITS=
 ifeq ($(ARCH),arm)
 CPU_UNITS=lpc21x4 at91sam7x256 stellaris stm32f103
 endif
[email protected]
+override FPC_SYSTEM_OPT += @rtl.cfg
 ifeq ($(CPU_OS_TARGET),jvm-java)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) jdk15
 endif
@@ -2150,8 +2150,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2168,9 +2172,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2180,6 +2190,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2209,7 +2222,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2227,7 +2240,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2255,21 +2268,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2305,7 +2318,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2322,14 +2335,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2343,7 +2359,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2373,17 +2389,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2392,28 +2411,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2422,28 +2441,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2452,7 +2471,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2465,8 +2484,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2510,7 +2532,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2518,7 +2540,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2533,20 +2555,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2598,8 +2624,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2619,16 +2648,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2636,6 +2669,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2654,14 +2692,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2685,6 +2723,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 1 - 1
rtl/java/Makefile.fpc

@@ -44,7 +44,7 @@ endif
 
 # Paths
 
[email protected]
+override FPC_SYSTEM_OPT += @rtl.cfg
 
 [rules]
 .NOTPARALLEL:

+ 127 - 59
rtl/linux/Makefile

@@ -896,6 +896,15 @@ DOS_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(UNIXUTILUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEX
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 CTHREADS_DEPS_OS=$(LINUXUNIT)$(PPUEXT)
+ifeq ($(CPU_TARGET),sparc)
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(RTL)/sparcgen/sysnr.inc
+else
+ifeq ($(CPU_TARGET),sparc64)
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(RTL)/sparcgen/sysnr.inc
+else
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(ARCH)/sysnr.inc
+endif
+endif
 UNIX_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
 CPU_UNITS=
 SYSINIT_UNITS=
@@ -939,7 +948,7 @@ override FPCOPT+=-Ur
 endif
 ifeq ($(ARCH),arm)
 override LOADERS+=ucprt0
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifeq ($(ARCH),sparc)
   override FPCOPT+=-Fisparcgen
@@ -1123,58 +1132,58 @@ ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),armeb-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips64el-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),riscv32-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),riscv64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),xtensa-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
-override TARGET_RSTS+=$(MATHUNIT) typinfo sysconst rtlconsts
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override CLEAN_UNITS+=$(LINUXUNIT)
@@ -2782,8 +2791,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2800,9 +2813,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2812,6 +2831,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2841,7 +2863,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2859,7 +2881,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2887,21 +2909,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2937,7 +2959,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2954,14 +2976,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2975,7 +3000,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -3005,17 +3030,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -3024,28 +3052,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -3054,28 +3082,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -3084,7 +3112,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -3097,8 +3125,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -3142,7 +3173,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -3150,7 +3181,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -3165,20 +3196,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -3230,8 +3265,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -3251,16 +3289,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -3268,6 +3310,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -3286,14 +3333,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -3317,6 +3364,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 11 - 2
rtl/linux/Makefile.fpc

@@ -21,7 +21,7 @@ units=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) \
 
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo sysconst rtlconsts
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 
 [require]
 nortl=y
@@ -65,6 +65,15 @@ DOS_DEPS_OS=$(BASEUNIXUNIT)$(PPUEXT) $(UNIXUTILUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEX
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 CTHREADS_DEPS_OS=$(LINUXUNIT)$(PPUEXT)
+ifeq ($(CPU_TARGET),sparc)
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(RTL)/sparcgen/sysnr.inc
+else
+ifeq ($(CPU_TARGET),sparc64)
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(RTL)/sparcgen/sysnr.inc
+else
+SYSCALL_DEPS_OS=$(ARCH)/syscallh.inc $(ARCH)/sysnr.inc
+endif
+endif
 UNIX_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
 CPU_UNITS=
 SYSINIT_UNITS=
@@ -123,7 +132,7 @@ endif
 
 ifeq ($(ARCH),arm)
 override LOADERS+=ucprt0
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 
 ifeq ($(ARCH),sparc)

+ 99 - 43
rtl/macos/Makefile

@@ -891,9 +891,6 @@ DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 DOS_DEPS_OS=$(UNIXUTILUNIT)$(PPUEXT) $(MACUTILSUNIT)$(PPUEXT)
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
@@ -2171,8 +2168,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2189,9 +2190,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2201,6 +2208,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2230,7 +2240,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2248,7 +2258,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2276,21 +2286,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2326,7 +2336,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2343,14 +2353,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2364,7 +2377,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2394,17 +2407,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2413,28 +2429,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2443,28 +2459,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2473,7 +2489,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2486,8 +2502,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2531,7 +2550,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2539,7 +2558,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2554,20 +2573,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2619,8 +2642,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2640,16 +2666,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2657,6 +2687,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2675,14 +2710,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2706,6 +2741,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 0 - 7
rtl/macos/Makefile.fpc

@@ -46,13 +46,6 @@ DYNLIBSINCDIR=$(UNIXINC)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 DOS_DEPS_OS=$(UNIXUTILUNIT)$(PPUEXT) $(MACUTILSUNIT)$(PPUEXT)

+ 100 - 46
rtl/morphos/Makefile

@@ -890,9 +890,6 @@ AMIINC=$(RTL)/amicommon
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 SYSINITUNITS=si_prc
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),powerpc-morphos)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(HEAPTRCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(CPALLUNIT)
@@ -2154,8 +2151,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2172,9 +2173,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2184,6 +2191,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2213,7 +2223,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2231,7 +2241,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2259,21 +2269,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2309,7 +2319,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2326,14 +2336,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2347,7 +2360,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2377,17 +2390,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2396,28 +2412,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2426,28 +2442,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2456,7 +2472,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2469,8 +2485,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2514,7 +2533,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2522,7 +2541,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2537,20 +2556,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2602,8 +2625,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2623,16 +2649,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2640,6 +2670,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2658,14 +2693,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2689,6 +2724,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2836,7 +2892,5 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 %$(OEXT) : %.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)$*$(OEXT) $*.as
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp $(REDIR)
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 1 - 11
rtl/morphos/Makefile.fpc

@@ -44,13 +44,6 @@ UNITPREFIX=rtl
 SYSTEMUNIT=system
 SYSINITUNITS=si_prc
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -83,9 +76,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Base Units (System, strings, os-dependent-base-unit)
 #
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp $(REDIR)
-
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(HEAPTRCUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 

+ 99 - 40
rtl/msdos/Makefile

@@ -2182,8 +2182,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2200,9 +2204,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2212,6 +2222,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2241,7 +2254,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2259,7 +2272,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2287,21 +2300,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2337,7 +2350,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2354,14 +2367,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2375,7 +2391,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2405,17 +2421,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2424,28 +2443,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2454,28 +2473,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2484,7 +2503,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2497,8 +2516,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2542,7 +2564,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2550,7 +2572,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2565,20 +2587,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2630,8 +2656,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2651,16 +2680,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2668,6 +2701,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2686,14 +2724,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2717,6 +2755,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 103 - 82
rtl/msxdos/Makefile

@@ -888,6 +888,7 @@ COMMON=$(RTL)/common
 PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
+DOS_DEPS_OS =  registers.inc $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc
 OBJPASDIR=$(RTL)/objpas
 ifdef EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
@@ -896,7 +897,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(CPU_OS_TARGET),z80-msxdos)
-override TARGET_UNITS+=system si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(EXEINFOUNIT) $(HEAPTRCUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(EXEINFOUNIT) $(HEAPTRCUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),z80-msxdos)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS)
@@ -2151,8 +2152,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2169,9 +2174,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2181,6 +2192,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2210,7 +2224,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2228,7 +2242,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2256,21 +2270,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2306,7 +2320,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2323,14 +2337,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2344,7 +2361,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2374,17 +2391,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2393,28 +2413,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2423,28 +2443,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2453,7 +2473,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2466,8 +2486,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2511,7 +2534,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2519,7 +2542,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2534,20 +2557,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2599,8 +2626,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2620,16 +2650,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2637,6 +2671,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2655,14 +2694,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2686,6 +2725,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2829,48 +2889,9 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/tnyheaph.inc $(INC)/tinyheap.inc registers.inc
 ifneq ($(findstring -dTEST_I8086_SMARTLINK_SECTIONS,$(FPCOPT)),)
 override NASM_OPT+=-D__I8086_SMARTLINK_SECTIONS__
 endif
-system$(PPUEXT) : system.pp $(SYSDEPS) $(INC)/tnyheaph.inc $(INC)/tinyheap.inc registers.inc
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-dos$(PPUEXT) : dos.pp registers.inc \
-	       $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc \
-	       strings$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-		   types$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT) \
-		   $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-	$(EXECPPAS)
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconsts.pp
-	$(EXECPPAS)
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp sysutils$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
-	$(COMPILER) msmouse.pp $(REDIR)
-	$(EXECPPAS)
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp $(REDIR)
-	$(EXECPPAS)
-si_prc$(PPUEXT) : system$(PPUEXT)
+si_prc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) si_prc.pp

+ 14 - 76
rtl/msxdos/Makefile.fpc

@@ -5,19 +5,19 @@
 main=rtl
 [target]
 #loaders=prt0s prt0t prt0m prt0c prt0l prt0h # exceptn fpu
-units=system si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CHARSETUNIT) $(CPALLUNIT) \
+units=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CHARSETUNIT) $(CPALLUNIT) \
       $(GETOPTSUNIT) $(EXEINFOUNIT) $(HEAPTRCUNIT)
-#$(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) dos $(HEAPTRCUNIT) $(LNFODWRFUNIT) sysconst sysutils \
-#      $(MATHUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) rtlconsts typinfo cpu types \
-#      $(GETOPTSUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes \
-#      msmouse $(PORTSUNIT)  \
-#      $(CHARSETUNIT) $(CPALLUNIT) ctypes \
+#$(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) \
+#      $(MATHUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CPUUNIT) $(TYPESUNIT) \
+#      $(GETOPTSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) \
+#      $(MSMOUSEUNIT) $(PORTSUNIT)  \
+#      $(CHARSETUNIT) $(CPALLUNIT) $(CTYPESUNIT) \
 #      $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(UNICODEDATAUNIT)
 #     $(CMEMUNIT)
-#      initc profile dxetype dxeload emu387 \
-#      cpu $(MMXUNIT) \
+#      $(INITCUNIT) profile dxetype dxeload emu387 \
+#      $(CPUUNIT) $(MMXUNIT) \
 #      vesamode \
-# rsts=$(MATHUNIT) typinfo classes dateutil sysconst
+# rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits= $(CP_UNITS)
 
 [require]
@@ -38,6 +38,8 @@ PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 
+DOS_DEPS_OS =  registers.inc $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc
+
 # Paths
 OBJPASDIR=$(RTL)/objpas
 # Insert exception handler in system unit
@@ -60,7 +62,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/tnyheaph.inc $(INC)/tinyheap.inc registers.inc
+
 #
 # Loaders
 #
@@ -68,74 +71,9 @@ ifneq ($(findstring -dTEST_I8086_SMARTLINK_SECTIONS,$(FPCOPT)),)
 override NASM_OPT+=-D__I8086_SMARTLINK_SECTIONS__
 endif
 
-#
-# System Units (System, Objpas, Strings)
-#
-system$(PPUEXT) : system.pp $(SYSDEPS) $(INC)/tnyheaph.inc $(INC)/tinyheap.inc registers.inc
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-
-#
-# System Dependent Units
-#
-
-#
-# TP7 Compatible RTL Units
-#
-dos$(PPUEXT) : dos.pp registers.inc \
-               $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc \
-               strings$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
-
-#
-# Delphi Compatible Units
-#
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
-
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-                   types$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT) \
-                   $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-	$(EXECPPAS)
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconsts.pp
-	$(EXECPPAS)
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
-
-#
-# Other system-independent RTL Units
-#
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp sysutils$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
-
 #
 # Other system-dependent RTL Units
 #
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
-        $(COMPILER) msmouse.pp $(REDIR)
-	$(EXECPPAS)
-
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-        $(COMPILER) $(INC)/ctypes.pp $(REDIR)
-	$(EXECPPAS)
 
-si_prc$(PPUEXT) : system$(PPUEXT)
+si_prc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
         $(COMPILER) si_prc.pp

+ 105 - 48
rtl/nativent/Makefile

@@ -891,22 +891,22 @@ UNITPREFIX=rtl
 SYSTEMUNIT=system
 CPU_UNITS=
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) cpu
+CPU_UNITS=$(X86UNIT) $(CPUUNIT)
 endif
 DLLS=fpcmemdll
 OBJPASDIR=$(RTL)/objpas
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 ifeq ($(CPU_OS_TARGET),i386-nativent)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(CPALLUNIT) buildrtl
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(CPALLUNIT) buildrtl
 endif
 ifeq ($(CPU_OS_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=ndk ndkutils ddk ctypes $(STRINGSUNIT) dos rtlconsts sysconst sysutils $(MATHUNIT) types typinfo $(FGLUNIT) classes $(CPU_UNITS) $(CHARSETUNIT) $(GETOPTSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) $(CP_UNITS)
+override TARGET_IMPLICITUNITS+=ndk ndkutils ddk $(CTYPESUNIT) $(STRINGSUNIT) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(GETOPTSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) $(CP_UNITS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-nativent)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-nativent)
@@ -2158,8 +2158,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2176,9 +2180,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2188,6 +2198,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2217,7 +2230,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2235,7 +2248,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2263,21 +2276,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2313,7 +2326,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2330,14 +2343,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2351,7 +2367,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2381,17 +2397,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2400,28 +2419,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2430,28 +2449,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2460,7 +2479,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2473,8 +2492,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2518,7 +2540,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2526,7 +2548,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2541,20 +2563,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2606,8 +2632,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2627,16 +2656,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2644,6 +2677,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2662,14 +2700,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2693,6 +2731,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2839,7 +2898,5 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-system$(PPUEXT) : system.pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -Fi$(DDKINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 12 - 15
rtl/nativent/Makefile.fpc

@@ -7,25 +7,25 @@ main=rtl
 
 [target]
 loaders=
-#units=system $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(LINEINFOUNIT) $(LNFODWRFUNIT)
-units=system $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(CPALLUNIT) buildrtl
+#units=$(SYSTEMUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(LINEINFOUNIT) $(LNFODWRFUNIT)
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(CPALLUNIT) buildrtl
 implicitunits=ndk ndkutils ddk \
-      ctypes $(STRINGSUNIT) \
+      $(CTYPESUNIT) $(STRINGSUNIT) \
 #      $(HEAPTRCUNIT)
-#      initc $(CMEMUNIT) $(DYNLIBSUNIT) signals \
-      dos \
-      rtlconsts sysconst sysutils $(MATHUNIT) types \
-      typinfo $(FGLUNIT) classes \
+#      $(INITCUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) signals \
+      $(DOSUNIT) \
+      $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPESUNIT) \
+      $(TYPINFOUNIT) $(FGLUNIT) $(CLASSESUNIT) \
       $(CPU_UNITS) $(CHARSETUNIT) $(GETOPTSUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) \
-#      sockets printer \
+#      printer \
 #      keyboard
 #      sharemem exeinfo $(FPINTRESUNIT) \
       $(CP_UNITS)
 
 # shared=$(DLLS)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -56,11 +56,11 @@ SYSTEMUNIT=system
 CPU_UNITS=
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) cpu
+CPU_UNITS=$(X86UNIT) $(CPUUNIT)
 endif
 
 DLLS=fpcmemdll
@@ -104,9 +104,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Unit specific rules
 #
 
-system$(PPUEXT) : system.pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -Fi$(DDKINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 

+ 101 - 63
rtl/nds/Makefile

@@ -895,7 +895,7 @@ endif
 OBJPASDIR=$(RTL)/objpas
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-nds)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2180,8 +2180,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2198,9 +2202,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2210,6 +2220,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2239,7 +2252,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2257,7 +2270,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2285,21 +2298,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2335,7 +2348,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2352,14 +2365,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2373,7 +2389,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2403,17 +2419,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2422,28 +2441,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2452,28 +2471,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2482,7 +2501,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2495,8 +2514,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2540,7 +2562,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2548,7 +2570,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2563,20 +2585,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2628,8 +2654,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2649,16 +2678,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2666,6 +2699,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2684,14 +2722,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2715,6 +2753,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2860,6 +2919,7 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
+override FPC_SYSTEM_OPT += @rtl.cfg
 prt07$(OEXT) : prt07.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt07$(OEXT) prt07.as
 prt09$(OEXT) : prt09.as
@@ -2868,25 +2928,3 @@ cprt07$(OEXT) : cprt07.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)cprt07$(OEXT) cprt07.as
 cprt09$(OEXT) : cprt09.as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)cprt09$(OEXT) cprt09.as
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp $(REDIR)
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-		    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-aboxlib$(PPUEXT): aboxlib.pas
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-		   utility$(PPUEXT) graphics$(PPUEXT)
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)

+ 3 - 52
rtl/nds/Makefile.fpc

@@ -7,13 +7,13 @@ main=rtl
 
 [target]
 loaders=$(LOADERS)
-units=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(SORTBASEUNIT)  $(SYSUTILSUNIT) \
       $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  \
       $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \
       $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT) 
-#rsts=$(MATHUNIT) rtlconsts varutils typinfo variants classes sysconst dateutil fpmkunit
+#rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(CP_UNITS) $(UNICODEDATAUNIT)
 
 [require]
@@ -64,7 +64,7 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
-
+override FPC_SYSTEM_OPT += @rtl.cfg
 
 #
 # Loaders
@@ -82,52 +82,3 @@ cprt07$(OEXT) : cprt07.as
 cprt09$(OEXT) : cprt09.as
         $(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)cprt09$(OEXT) cprt09.as
 
-#
-# Base Units (System, strings, os-dependent-base-unit)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS) $(INC)/softfpu.pp
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp $(REDIR)
-
-#
-# Other system-dependent RTL Units
-#
-
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-                    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-
-aboxlib$(PPUEXT): aboxlib.pas
-
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-                   utility$(PPUEXT) graphics$(PPUEXT)
-
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-

+ 122 - 116
rtl/netbsd/Makefile

@@ -891,38 +891,42 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 TARGETPROCINC=$(RTL)/netbsd/$(CPU_TARGET)
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS = sysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 LINUXUNIT=
 PRT0=prt0
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) unix rtlconsts initc $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) bsd sysconst cthreads dos cwstring $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) $(ERRORSUNIT) $(BSDUNIT) $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netbsd)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -961,22 +965,22 @@ ifeq ($(CPU_OS_TARGET),arm-netbsd)
 override TARGET_LOADERS+=prt0 cprt0 dllprt0
 endif
 ifeq ($(CPU_OS_TARGET),i386-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-netbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-netbsd)
@@ -2285,8 +2289,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2303,9 +2311,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2315,6 +2329,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2344,7 +2361,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2362,7 +2379,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2390,21 +2407,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2440,7 +2457,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2457,14 +2474,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2478,7 +2498,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2508,17 +2528,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2527,28 +2550,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2557,28 +2580,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2587,7 +2610,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2600,8 +2623,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2645,7 +2671,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2653,7 +2679,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2668,20 +2694,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2733,8 +2763,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2754,16 +2787,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2771,6 +2808,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2789,14 +2831,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2820,6 +2862,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2964,68 +3027,11 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS = sysconst.inc systypes.inc syscalls.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
 	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-baseunix$(PPUEXT) :  $(UNIXINC)/baseunix.pp errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc sysctl$(PPUEXT) \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) sysctl$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 syscalls.inc systypes.inc sysconst.inc $(UNIXINC)/timezone.inc \
-		 unxsysc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		objpas$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-		   sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-endif
-	$(COMPILER) $<
-fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(MATHUNIT)$(PPUEXT)
-	$(COMPILER) -Fi$(INC) $(INC)/variants.pp
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $<
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<

+ 23 - 130
rtl/netbsd/Makefile.fpc

@@ -10,19 +10,19 @@ fpcpackage=y
 
 [target]
 loaders=prt0 cprt0 dllprt0
-units=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
-      $(STRINGSUNIT) syscall sysctl  baseunix unixutil $(CHARACTERUNIT) \
-      unix rtlconsts initc $(CMEMUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) \
+      $(STRINGSUNIT) $(SYSCALLUNIT) $(SYSCTLUNIT)  $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(CHARACTERUNIT) \
+      $(UNIXUNIT) $(RTLCONSTSUNIT) $(INITCUNIT) $(CMEMUNIT) \
       $(DLUNIT) $(TERMIOUNIT) \
-      sysutils $(MATHUNIT) typinfo types $(SORTBASEUNIT) classes $(FGLUNIT) $(DYNLIBSUNIT) \
+      $(SYSUTILSUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(DYNLIBSUNIT) \
       $(CPU_UNITS) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LNFODWRFUNIT) $(LINEINFOUNIT) \
-      $(ERRORSUNIT) bsd \
-      sysconst cthreads dos cwstring \
+      $(ERRORSUNIT) $(BSDUNIT) \
+      $(SYSCONSTUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) \
       $(FPINTRESUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -42,10 +42,10 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos \
-      sysutils typinfo $(MATHUNIT) \
-      cpu $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT) 
 
 [prerules]
@@ -59,28 +59,29 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 TARGETPROCINC=$(RTL)/netbsd/$(CPU_TARGET)
+
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS = sysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 
 SYSTEMUNIT=system
 LINUXUNIT=
 PRT0=prt0
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 endif
 
 
@@ -99,8 +100,8 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
+SYSDEPS = sysconst.inc systypes.inc syscalls.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 
 #
 # Loaders
@@ -115,111 +116,3 @@ cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
         $(AS) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
 
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-baseunix$(PPUEXT) :  $(UNIXINC)/baseunix.pp errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc sysctl$(PPUEXT) \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) sysctl$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 syscalls.inc systypes.inc sysconst.inc $(UNIXINC)/timezone.inc \
-                 unxsysc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-#
-# Graph
-#
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		objpas$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(FGLUNIT)$(PPUEXT) \
-                   sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-#
-# Other system-independent RTL Units
-#
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-endif
-	$(COMPILER) $<
-
-fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-#
-# Other system-dependent RTL Units
-#
-
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp unixtype$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-variants$(PPUEXT) : $(INC)/variants.pp sysutils$(PPUEXT) sysconst$(PPUEXT) varutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) $(MATHUNIT)$(PPUEXT)
-        $(COMPILER) -Fi$(INC) $(INC)/variants.pp
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-

+ 101 - 43
rtl/netware/Makefile

@@ -893,7 +893,7 @@ RTLCONSTSUNIT=rtlconst
 endif
 DOS_DEPS_OS=$(STRINGSUNIT)$(PPUEXT)
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
-override FPCOPT+=-Ur
+INITC_DEPS_OS=$(OSDIR)/nwsys.inc
 override FPCOPT+=-dMT
 CREATESMART=1
 OBJPASDIR=$(RTL)/objpas
@@ -907,7 +907,7 @@ requestr.imp socklib.imp streams.imp threads.imp \
 tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp \
 nwpre.imp
 ifeq ($(CPU_OS_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(CTYPESUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(CMEMUNIT) aio nwsnut nwserv nwnit nwprot netware nwcalls nwpre $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(CTYPESUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(CMEMUNIT) aio nwsnut nwserv nwnit nwprot netware nwcalls nwpre $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netware)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2195,8 +2195,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2213,9 +2217,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2225,6 +2235,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2254,7 +2267,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2272,7 +2285,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2300,21 +2313,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2350,7 +2363,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2367,14 +2380,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2388,7 +2404,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2418,17 +2434,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2437,28 +2456,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2467,28 +2486,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2497,7 +2516,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2510,8 +2529,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2555,7 +2577,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2563,7 +2585,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2578,20 +2600,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2643,8 +2669,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2664,16 +2693,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2681,6 +2714,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2699,14 +2737,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2730,6 +2768,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2880,7 +2939,6 @@ copyimpfiles:
 	$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
 nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
 netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
-initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 aio$(PPUEXT) : aio.pp $(SYSTEMUNIT)$(PPUEXT)
 nwsnut$(PPUEXT) : nwsnut.pp nwserv$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 nwserv$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)

+ 2 - 11
rtl/netware/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 [target]
 loaders=nwpre prelude
-units=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(DOSUNIT) $(SYSCONSTUNIT) \
       $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(GETOPTSUNIT) \
@@ -47,13 +47,7 @@ RTLCONSTSUNIT=rtlconst
 endif
 DOS_DEPS_OS=$(STRINGSUNIT)$(PPUEXT)
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
-
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-# ifdef RELEASE
-override FPCOPT+=-Ur
-# endif
+INITC_DEPS_OS=$(OSDIR)/nwsys.inc
 
 #debug, -a: dont delete asm, -al include lines
 #override FPCOPT+=-a
@@ -121,9 +115,6 @@ nwpre$(PPUEXT) : nwpre.pp $(SYSTEMUNIT)$(PPUEXT)
 
 netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
 
-initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-
 #
 # Other system-dependent RTL Units
 #

+ 103 - 67
rtl/netwlibc/Makefile

@@ -889,13 +889,13 @@ UNITPREFIX=rtl
 IMPFILES=nwsnut.imp ws2_32.imp ws2nlm.imp libc.imp netware.imp \
 libcclib.imp
 SYSTEMUNIT=system
-override FPCOPT+=-Ur
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) libc.pp
 override FPCOPT+=-dMT
 CREATESMART=1
 OBJPASDIR=$(RTL)/objpas
 override BINUTILSPREFIX=$(CPU_TARGET)-netware-
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) nwsnut libc dos sysconst initc sysutils types typinfo $(SORTBASEUNIT) $(FGLUNIT) classes cpu $(MMXUNIT) $(GETOPTSUNIT) $(CHARSETUNIT) $(CPALLUNIT) rtlconsts $(MATHUNIT) $(DYNLIBSUNIT) $(CMEMUNIT) ctypes $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) nwsnut libc $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(RTLCONSTSUNIT) $(MATHUNIT) $(DYNLIBSUNIT) $(CMEMUNIT) $(CTYPESUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS)
@@ -904,7 +904,7 @@ ifeq ($(CPU_OS_TARGET),i386-netwlibc)
 override TARGET_LOADERS+=nwplibc nwl_main nwl_dlle
 endif
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconsts system
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) system
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
@@ -2183,8 +2183,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2201,9 +2205,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2213,6 +2223,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2242,7 +2255,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2260,7 +2273,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2288,21 +2301,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2338,7 +2351,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2355,14 +2368,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2376,7 +2392,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2406,17 +2422,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2425,28 +2444,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2455,28 +2474,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2485,7 +2504,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2498,8 +2517,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2543,7 +2565,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2551,7 +2573,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2566,20 +2588,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2631,8 +2657,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2652,16 +2681,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2669,6 +2702,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2687,14 +2725,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2718,6 +2756,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2863,7 +2922,7 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS = libc.pp $(SYSINCDEPS) $(SYSCPUDEPS)
 copyimpfiles:
 	$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
 nwplibc$(OEXT) :
@@ -2872,32 +2931,9 @@ nwl_main$(OEXT) : nwl_main.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)nwl_main$(OEXT) nwl_main.as
 nwl_dlle$(OEXT) : nwl_dlle.as
 	$(AS) -o $(UNITTARGETDIRPREFIX)nwl_dlle$(OEXT) nwl_dlle.as
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp libc.pp $(SYSDEPS)
-	$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
 netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) -I$(WININC) netware.pp
 nwsnut$(PPUEXT) : nwsnut.pp ../netware/nwsnut.pp libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-dos$(PPUEXT) : dos.pp libc.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) libc.pp sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-		   sysconst$(PPUEXT) types$(PPUEXT) sortbase$(PPUEXT) \
-		   tthread.inc $(FGLUNIT)$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
 aio$(PPUEXT) : aio.pp $(SYSTEMUNIT)$(PPUEXT)
 override INSTALLPPUFILES+=$(IMPFILES)
 override CLEANPPUFILES+=$(addprefix $(COMPILER_UNITTARGETDIR)/,$(IMPFILES))

+ 9 - 66
rtl/netwlibc/Makefile.fpc

@@ -9,15 +9,15 @@ main=rtl
 loaders=nwplibc nwl_main nwl_dlle
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) \
-      nwsnut libc dos sysconst \
-      initc sysutils types typinfo $(SORTBASEUNIT) $(FGLUNIT) classes \
-      cpu $(MMXUNIT) $(GETOPTSUNIT) \
+      nwsnut libc $(DOSUNIT) $(SYSCONSTUNIT) \
+      $(INITCUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) \
-      rtlconsts $(MATHUNIT) \
-      $(DYNLIBSUNIT) $(CMEMUNIT) ctypes \
+      $(RTLCONSTSUNIT) $(MATHUNIT) \
+      $(DYNLIBSUNIT) $(CMEMUNIT) $(CTYPESUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst rtlconsts system
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) system
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS)
 
 [require]
@@ -47,13 +47,7 @@ libcclib.imp
 # nwplibc.o
 
 SYSTEMUNIT=system
-
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-# ifdef RELEASE
-override FPCOPT+=-Ur
-# endif
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) libc.pp
 
 #debug, -a: dont delete asm, -al include lines
 #override FPCOPT+=-a
@@ -89,7 +83,7 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS = libc.pp $(SYSINCDEPS) $(SYSCPUDEPS)
 
 copyimpfiles:
 	$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
@@ -106,7 +100,7 @@ copyimpfiles:
 
 # for now use the gcc pre
 nwplibc$(OEXT) :
-        cp pre/libcpre.gcc.o $(UNITTARGETDIRPREFIX)nwplibc$(OEXT)
+	cp pre/libcpre.gcc.o $(UNITTARGETDIRPREFIX)nwplibc$(OEXT)
 
 nwl_main$(OEXT) : nwl_main.as
         $(AS) -o $(UNITTARGETDIRPREFIX)nwl_main$(OEXT) nwl_main.as
@@ -114,14 +108,6 @@ nwl_main$(OEXT) : nwl_main.as
 nwl_dlle$(OEXT) : nwl_dlle.as
         $(AS) -o $(UNITTARGETDIRPREFIX)nwl_dlle$(OEXT) nwl_dlle.as
 
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp libc.pp $(SYSDEPS)
-	$(COPY) $(IMPFILES) $(COMPILER_UNITTARGETDIR)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
-
 #
 # System Dependent Units
 #
@@ -131,49 +117,6 @@ netware$(PPUEXT) : netware.pp $(SYSTEMUNIT)$(PPUEXT)
 
 nwsnut$(PPUEXT) : nwsnut.pp ../netware/nwsnut.pp libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 
-initc$(PPUEXT) : initc.pp ctypes$(PPUEXT) libc$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : dos.pp libc.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) libc.pp sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-                   sysconst$(PPUEXT) types$(PPUEXT) sortbase$(PPUEXT) \
-                   tthread.inc $(FGLUNIT)$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-#
-# Other system-independent RTL Units
-#
-
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
-
 #
 # Other system-dependent RTL Units
 #

+ 1 - 0
rtl/objpas/classes/streams.inc

@@ -1354,6 +1354,7 @@ end;
 constructor TFileStream.Create(const AFileName: string; Mode: Word);
 
 begin
+  // 438 = 666 octal which is rw rw rw 
   Create(AFileName,Mode,438);
 end;
 

+ 14 - 4
rtl/objpas/classes/stringl.inc

@@ -1065,8 +1065,13 @@ end;
 Function TStrings.AddObject(const S: string; AObject: TObject): Integer;
 
 begin
-  Result:=Add(S);
-  Objects[result]:=AObject;
+  BeginUpdate;
+  try
+    Result:=Add(S);
+    Objects[result]:=AObject;
+  finally
+    EndUpdate;
+  end;
 end;
 
 function TStrings.AddObject(const Fmt: string; Args : Array of const; AObject: TObject): Integer;
@@ -1324,8 +1329,13 @@ Procedure TStrings.InsertObject(Index: Integer; const S: string;
   AObject: TObject);
 
 begin
-  Insert (Index,S);
-  Objects[Index]:=AObject;
+  BeginUpdate;
+  try
+    Insert (Index,S);
+    Objects[Index]:=AObject;
+  finally
+    EndUpdate;
+  end;
 end;
 
 function TStrings.LastIndexOf(const S: string): Integer;

+ 114 - 106
rtl/openbsd/Makefile

@@ -890,14 +890,18 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 TARGETPROCINC=$(RTL)/openbsd/$(CPU_TARGET)
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS = sysnr.inc setsysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 LINUXUNIT=
 PRT0=prt0
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 ifeq ($(FPC_USE_SYSCALL),)
 override FPCOPT+=-dFPC_USE_LIBC
 endif
@@ -905,17 +909,17 @@ CPU_UNITS=
 SYSINIT_UNITS=si_prc si_c si_dll si_g
 LOADERS=prt0
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) initc $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd $(CPU_UNITS) dos rtlconsts sysutils $(SORTBASEUNIT) $(FGLUNIT) classes typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(ERRORSUNIT) types sysctl sysconst $(FPINTRESUNIT) $(DYNLIBSUNIT) cwstring $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) cthreads $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(INITCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(BASEUNIXUNIT) $(LINUXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(UNIXUNIT) $(CTYPESUNIT) $(BSDUNIT) $(CPU_UNITS) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(ERRORSUNIT) $(TYPESUNIT) $(SYSCTLUNIT) $(SYSCONSTUNIT) $(FPINTRESUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(CTHREADSUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) initc $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall baseunix $(LINUXUNIT) unixtype unixutil unix ctypes bsd $(CPU_UNITS) dos rtlconsts sysutils $(SORTBASEUNIT) $(FGLUNIT) classes typinfo $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(ERRORSUNIT) types sysctl sysconst $(FPINTRESUNIT) $(DYNLIBSUNIT) cwstring $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) cthreads $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(INITCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(BASEUNIXUNIT) $(LINUXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(UNIXUNIT) $(CTYPESUNIT) $(BSDUNIT) $(CPU_UNITS) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(ERRORSUNIT) $(TYPESUNIT) $(SYSCTLUNIT) $(SYSCONSTUNIT) $(FPINTRESUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) $(CTHREADSUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-openbsd)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -930,10 +934,10 @@ ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-openbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y y
 ifeq ($(CPU_OS_TARGET),i386-openbsd)
@@ -2218,8 +2222,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2236,9 +2244,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2248,6 +2262,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2277,7 +2294,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2295,7 +2312,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2323,21 +2340,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2373,7 +2390,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2390,14 +2407,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2411,7 +2431,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2441,17 +2461,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2460,28 +2483,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2490,28 +2513,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2520,7 +2543,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2533,8 +2556,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2578,7 +2604,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2586,7 +2612,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2601,20 +2627,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2666,8 +2696,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2687,16 +2720,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2704,6 +2741,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2722,14 +2764,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2753,6 +2795,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2897,7 +2960,8 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS= sysconst.inc systypes.inc syscalls.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
 	$(AS) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
 si_prc$(PPUEXT) : si_prc.pp si_intf.inc si_impl.inc $(ARCH)/openbsd_ident.inc $(ARCH)/si_prc.inc $(SYSTEMUNIT)$(PPUEXT)
@@ -2908,59 +2972,3 @@ si_dll$(PPUEXT) : si_dll.pp si_intf.inc si_impl.inc $(ARCH)/openbsd_ident.inc $(
 	$(COMPILER) $<
 si_g$(PPUEXT) : si_g.pp si_intf.inc si_impl.inc $(ARCH)/openbsd_ident.inc $(ARCH)/si_g.inc $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) $<
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Fu../unix -Fu../bsd ../unix/baseunix.pp
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 unxconst.inc $(UNIXINC)/timezone.inc \
-		 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $<
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-	$(COMPILER) $<
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-endif
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $<
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp baseunix$(PPUEXT)
-	$(COMPILER) $<
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) -Fu$(UNIXINC) -Fu$(BSDINC) $(BSDINC)/sysctl.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp
-	$(COMPILER) $<
-rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconst.pp

+ 24 - 131
rtl/openbsd/Makefile.fpc

@@ -10,18 +10,18 @@ fpcpackage=y
 
 [target]
 loaders=$(LOADERS)
-units=$(SYSTEMUNIT) $(SYSINIT_UNITS) initc $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) syscall baseunix \
-      $(LINUXUNIT) unixtype unixutil unix ctypes bsd \
-      $(CPU_UNITS) dos rtlconsts \
-      sysutils $(SORTBASEUNIT) $(FGLUNIT) classes typinfo $(MATHUNIT) \
+units=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(INITCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SYSCALLUNIT) $(BASEUNIXUNIT) \
+      $(LINUXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(UNIXUNIT) $(CTYPESUNIT) $(BSDUNIT) \
+      $(CPU_UNITS) $(DOSUNIT) $(RTLCONSTSUNIT) \
+      $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) \
       $(ERRORSUNIT) \
-      types sysctl sysconst \
-      $(FPINTRESUNIT) $(DYNLIBSUNIT) cwstring $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) \
-      cthreads $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
+      $(TYPESUNIT) $(SYSCTLUNIT) $(SYSCONSTUNIT) \
+      $(FPINTRESUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(CMEMUNIT) $(DLUNIT) $(TERMIOUNIT) \
+      $(CTHREADSUNIT) $(UNIXCPUNIT) $(FPWIDESTRINGUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
 [require]
@@ -42,10 +42,10 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos  \
-      sysutils typinfo $(MATHUNIT) \
-      cpu $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT)  \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT)
 
 [prerules]
@@ -58,20 +58,21 @@ BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 TARGETPROCINC=$(RTL)/openbsd/$(CPU_TARGET)
+
+BASEUNIX_DEPS_OS=$(SYSCTLUNIT)$(PPUEXT)
+BSD_DEPS_OS=$(SYSCALLUNIT)$(PPUEXT)
+CLASSESDIR=$(UNIXINC)
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
+SYSCALL_DEPS_OS = sysnr.inc setsysnr.inc $(BSDPROCINC)/syscallh.inc
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 
 SYSTEMUNIT=system
 LINUXUNIT=
 PRT0=prt0
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # OpenBSD defaults to libc, no syscalls
 ifeq ($(FPC_USE_SYSCALL),)
 override FPCOPT+=-dFPC_USE_LIBC
@@ -83,10 +84,10 @@ SYSINIT_UNITS=si_prc si_c si_dll si_g
 LOADERS=prt0
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) cpu $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
 endif
 
 # Paths
@@ -107,8 +108,8 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
+SYSDEPS= sysconst.inc systypes.inc syscalls.inc $(SYSINCDEPS) $(SYSCPUDEPS)
+SYSTEMDIR = $(BSDINC)
 
 #
 # Loaders
@@ -134,111 +135,3 @@ si_g$(PPUEXT) : si_g.pp si_intf.inc si_impl.inc $(ARCH)/openbsd_ident.inc $(ARCH
 	$(COMPILER) $<
 
 
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-unixtype$(PPUEXT): $(UNIXINC)/unixtype.pp $(UNIXINC)/ctypes.inc ptypes.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-baseunix$(PPUEXT) : errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  $(BSDINC)/bunxsysc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
-  $(BSDINC)/ostypes.inc $(BSDINC)/osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Fu../unix -Fu../bsd ../unix/baseunix.pp
-
-
-unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 unxconst.inc $(UNIXINC)/timezone.inc \
-                 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-
-#
-# Graph
-#
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp unixtype$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-#
-# Other system-independent RTL Units
-#
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT)
-        $(COMPILER) $<
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-endif
-
-bsd$(PPUEXT) : $(BSDINC)/bsd.pas initc$(PPUEXT) unix$(PPUEXT) syscall$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-initc$(PPUEXT) : $(UNIXINC)/initc.pp ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $<
-
-#
-# Other system-dependent RTL Units
-#
-
-syscall$(PPUEXT) : $(UNIXINC)/syscall.pp baseunix$(PPUEXT)
-        $(COMPILER) $<
-
-# sysctl needs to also compile baseunix and syscall units, which
-# are respectively located in ../
-sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) syscall$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) -Fu$(UNIXINC) -Fu$(BSDINC) $(BSDINC)/sysctl.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp
-        $(COMPILER) $<
-
-rtlconst$(PPUEXT) : $(OBJPASDIR)/rtlconst.pp
-        $(COMPILER) $(OBJPASDIR)/rtlconst.pp
-

+ 100 - 44
rtl/os2/Makefile

@@ -897,12 +897,9 @@ SYSTEMUNIT=system
 ifndef FPC_DOTTEDUNITS
 RTLCONSTSUNIT=rtlconst
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-os2)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2190,8 +2187,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2208,9 +2209,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2220,6 +2227,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2249,7 +2259,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2267,7 +2277,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2295,21 +2305,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2345,7 +2355,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2362,14 +2372,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2383,7 +2396,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2413,17 +2426,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2432,28 +2448,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2462,28 +2478,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2492,7 +2508,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2505,8 +2521,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2550,7 +2569,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2558,7 +2577,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2573,20 +2592,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2638,8 +2661,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2659,16 +2685,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2676,6 +2706,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2694,14 +2729,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2725,6 +2760,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 1 - 8
rtl/os2/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 [target]
 loaders=prt0
-units=$(SYSTEMUNIT) $(UUCHARUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) \
       $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) \
       $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) \
@@ -57,13 +57,6 @@ ifndef FPC_DOTTEDUNITS
 RTLCONSTSUNIT=rtlconst
 endif
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 

+ 102 - 55
rtl/palmos/Makefile

@@ -888,15 +888,12 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 PRT0=prt0
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) objpas $(ISO7185UNIT) $(STRINGSUNIT) ctypes $(CHARSETUNIT) $(CPALLUNIT) sysconst systraps pilot
+override TARGET_UNITS+=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) systraps pilot
 endif
 ifeq ($(CPU_OS_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) objpas $(ISO7185UNIT) $(STRINGSUNIT) ctypes $(CHARSETUNIT) $(CPALLUNIT) sysconst systraps pilot
+override TARGET_UNITS+=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) $(CTYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(SYSCONSTUNIT) systraps pilot
 endif
 ifeq ($(CPU_OS_TARGET),m68k-palmos)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS)
@@ -2193,8 +2190,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2211,9 +2212,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2223,6 +2230,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2252,7 +2262,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2270,7 +2280,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2298,21 +2308,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2348,7 +2358,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2365,14 +2375,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2386,7 +2399,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2416,17 +2429,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2435,28 +2451,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2465,28 +2481,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2495,7 +2511,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2508,8 +2524,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2553,7 +2572,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2561,7 +2580,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2576,20 +2595,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2641,8 +2664,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2662,16 +2688,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2679,6 +2709,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2697,14 +2732,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2728,6 +2763,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2874,20 +2930,11 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+override FPC_SYSTEM_OPT += @rtl.cfg
 $(PRT0)$(OEXT) : $(CPU_TARGET)/$(PRT0).as
 	$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)$(PRT0)$(OEXT) $(CPU_TARGET)/$(PRT0).as
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp
 si_prc$(PPUEXT): si_prc.pp palmos.inc $(SYSTEMUNIT)$(PPUEXT)
-types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
 systraps$(PPUEXT) : systraps.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) systraps.pp
 pilot$(PPUEXT) : pilot.pp $(SYSTEMUNIT)$(PPUEXT) systraps$(PPUEXT)
 	$(COMPILER) pilot.pp
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/fmtbcd.pp

+ 12 - 56
rtl/palmos/Makefile.fpc

@@ -7,29 +7,26 @@ main=rtl
 
 [target]
 loaders= prt0
-units=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) objpas $(ISO7185UNIT) $(STRINGSUNIT) \
-       ctypes \
+units=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT) \
+       $(CTYPESUNIT) \
        $(CHARSETUNIT) $(CPALLUNIT) \
-       sysconst \
+       $(SYSCONSTUNIT) \
        systraps pilot
-#units=$(SYSTEMUNIT) $(UUCHARUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+#units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
 #      $(LNFODWRFUNIT) $(LINEINFOUNIT) $(HEAPTRCUNIT) \
 #      windows messages $(DYNLIBSUNIT) \
-#      dos objects \
-#      rtlconsts sysconst sysutils \
-#      typinfo types $(FGLUNIT) classes fmtbcd \
-#      strutils convutils $(MATHUNIT) dateutils \
-#      varutils variants \
-#      matrix ucomplex \
-#      $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) winsock sockets
-# initc $(CMEMUNIT) signals \
-#    crt graph \
+#      $(DOSUNIT) \
+#      $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) \
+#      $(TYPINFOUNIT) $(TYPESUNIT) $(FGLUNIT) $(CLASSESUNIT) \
+#      strutils convutils $(MATHUNIT) \
+#      $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) winsock
+# $(INITCUNIT) $(CMEMUNIT) signals \
 #    wincrt winmouse winevent  printer \
 #    video mouse keyboard \
 #    winsysut
 implicitunits=$(CP_UNITS)
 
-# rsts=$(MATHUNIT) varutils typinfo variants classes dateutils sysconst
+# rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -57,13 +54,6 @@ UNITPREFIX=rtl
 SYSTEMUNIT=system
 PRT0=prt0
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -85,7 +75,7 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-
+override FPC_SYSTEM_OPT += @rtl.cfg
 
 #
 # Loaders
@@ -99,20 +89,8 @@ $(PRT0)$(OEXT) : $(CPU_TARGET)/$(PRT0).as
 # System Units (System, Objpas, Strings)
 #
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp
-
 si_prc$(PPUEXT): si_prc.pp palmos.inc $(SYSTEMUNIT)$(PPUEXT)
 
-types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
 #
 # System Dependent Units
 #
@@ -122,28 +100,6 @@ systraps$(PPUEXT) : systraps.pp $(SYSTEMUNIT)$(PPUEXT)
 pilot$(PPUEXT) : pilot.pp $(SYSTEMUNIT)$(PPUEXT) systraps$(PPUEXT)
         $(COMPILER) pilot.pp
 
-#
-# TP7 Compatible RTL Units
-#
-
-#dos$(PPUEXT) : $(DOSDEPS) $(SYSTEMPPU)
-#	$(PP) $(OPT) dos $(REDIR)
-
-#crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(INC)/filerec.inc $(SYSTEMPPU)
-#	$(PP) $(OPT) crt $(REDIR)
-
-#objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMPPU)
-#	$(COPY) $(INC)/objects.pp .
-#	$(PP) $(OPT) objects $(REDIR)
-#	$(DEL) objects.pp
-
-#
-# Other system-independent RTL Units
-#
-
-fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
-
 #####################################################################
 # Libs
 #####################################################################

+ 8 - 45
rtl/qnx/Makefile.fpc

@@ -7,10 +7,10 @@ main=rtl
 
 [target]
 loaders=cprt0 crti crtn
-units=system $(UUCHARUNIT) dos $(OBJPASUNIT) objects $(STRINGSUNIT) \
-      sysutils typinfo $(MATHUNIT) \
-      cpu $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) posix
-rsts=$(MATHUNIT) typinfo
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(DOSUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) posix
+rsts=$(MATHUNIT) $(TYPINFOUNIT)
 
 [require]
 nortl=y
@@ -31,18 +31,13 @@ targetdir=.
 RTL=..
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
-POSIXINC=$(RTL)/posix
+POSIXINC=$(RTL)/qnx
 SYSCALLINC=$(RTL)/qnx/$(CPU_TARGET)
 
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
+SYSUTILSDIR=$(POSIXINC)
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT)
 
 # Paths
 OBJPASDIR=$(RTL)/objpas
@@ -83,41 +78,9 @@ func$(OEXT) : $(CPU_TARGET)/func.as
 dllprt$(OEXT) : $(CPU_TARGET)/dllprt.as
         $(AS) -o dllprt$(OEXT) $(CPU_TARGET)/dllprt.as
 
-#
-# system Units (system, Objpas, Strings)
-#
-
-system$(PPUEXT) : system.pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               posix$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(POSIXINC)/dos.pp
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(POSIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT)
-        $(COMPILER) -I$(OBJPASDIR) $(POSIXINC)/sysutils.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-#
-# Other system-independent RTL Units
-#
-
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
-
 #
 # Other system-dependent RTL Units
 #
 
 posix$(PPUEXT) : posix.pp \
-		 errno.inc osposix.inc osposixh.inc signal.inc system$(PPUEXT)
+		 errno.inc osposix.inc osposixh.inc signal.inc $(SYSTEMUNIT)$(PPUEXT)

+ 103 - 48
rtl/sinclairql/Makefile

@@ -889,21 +889,18 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 LOADERS=
 SYSTEMUNIT=system
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) buildrtl $(CPALLUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
-override TARGET_IMPLICITUNITS+=si_prc ctypes rtlconsts $(STRINGSUNIT) $(SORTBASEUNIT) $(CHARSETUNIT) $(FPWIDESTRINGUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
+override TARGET_IMPLICITUNITS+=si_prc $(CTYPESUNIT) $(RTLCONSTSUNIT) $(STRINGSUNIT) $(SORTBASEUNIT) $(CHARSETUNIT) $(FPWIDESTRINGUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
-override TARGET_RSTS+=$(MATHUNIT) rtlconsts typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
@@ -2182,8 +2179,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2200,9 +2201,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2212,6 +2219,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2241,7 +2251,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2259,7 +2269,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2287,21 +2297,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2337,7 +2347,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2354,14 +2364,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2375,7 +2388,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2405,17 +2418,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2424,28 +2440,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2454,28 +2470,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2484,7 +2500,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2497,8 +2513,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2542,7 +2561,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2550,7 +2569,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2565,20 +2584,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2630,8 +2653,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2651,16 +2677,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2668,6 +2698,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2686,14 +2721,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2717,6 +2752,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2862,7 +2918,6 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) qdos.inc qdosh.inc qdosfuncs.inc sms.inc
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp $(REDIR)
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
+override FPC_SYSTEM_OPT += @rtl.cfg
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 4 - 18
rtl/sinclairql/Makefile.fpc

@@ -8,13 +8,12 @@ main=rtl
 [target]
 loaders=$(LOADERS)
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) buildrtl $(CPALLUNIT)
-# $(EXTPASUNIT) $(MACPASUNIT)
 implicitunits=si_prc \
-      ctypes rtlconsts $(STRINGSUNIT) \
+      $(CTYPESUNIT) $(RTLCONSTSUNIT) $(STRINGSUNIT) \
       $(SORTBASEUNIT) $(CHARSETUNIT) $(FPWIDESTRINGUNIT) \
       $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) rtlconsts typinfo classes sysconst
+rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -40,13 +39,6 @@ UNITPREFIX=rtl
 LOADERS=
 SYSTEMUNIT=system
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -66,18 +58,12 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) qdos.inc qdosh.inc qdosfuncs.inc sms.inc
-
+override FPC_SYSTEM_OPT += @rtl.cfg
 
 #
 # Base Units (System, strings, os-dependent-base-unit)
 #
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg @rtl.cfg $(SYSTEMUNIT).pp $(REDIR)
-
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(CPU_TARGET) -Fu$(PROCINC) -Fu$(AMIINC) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 
-#fpextres$(PPUEXT) : $(INC)/fpextres.pp $(SYSTEMUNIT)$(PPUEXT)
-#        $(COMPILER) -Sg $(INC)/fpextres.pp
-

+ 111 - 98
rtl/solaris/Makefile

@@ -888,31 +888,32 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 OSPROCINC=$(RTL)/solaris/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
+CLASSESDIR=$(UNIXINC)
 CPU_UNITS=
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 TERMIO_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 SYSTEMUNIT=system
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 override FPCOPT+=-dFPC_USE_LIBC
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) baseunix unixutil $(UNIXCPUNIT) $(TERMIOUNIT) unix initc $(CMEMUNIT) sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types sysconst $(CHARACTERUNIT) rtlconsts cthreads dos $(FPWIDESTRINGUNIT) cwstring $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(UNIXCPUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT) $(RTLCONSTSUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(FPWIDESTRINGUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) baseunix unixutil $(UNIXCPUNIT) $(TERMIOUNIT) unix initc $(CMEMUNIT) sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types sysconst $(CHARACTERUNIT) rtlconsts cthreads dos $(FPWIDESTRINGUNIT) cwstring $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(UNIXCPUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT) $(RTLCONSTSUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(FPWIDESTRINGUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) baseunix unixutil $(UNIXCPUNIT) $(TERMIOUNIT) unix initc $(CMEMUNIT) sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) types sysconst $(CHARACTERUNIT) rtlconsts cthreads dos $(FPWIDESTRINGUNIT) cwstring $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(UNIXCPUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT) $(RTLCONSTSUNIT) $(CTHREADSUNIT) $(DOSUNIT) $(FPWIDESTRINGUNIT) $(CWSTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-solaris)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -924,13 +925,13 @@ ifeq ($(CPU_OS_TARGET),x86_64-solaris)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-solaris)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-solaris)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-solaris)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst rtlconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-solaris)
@@ -2194,8 +2195,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2212,9 +2217,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2224,6 +2235,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2253,7 +2267,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2271,7 +2285,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2299,21 +2313,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2349,7 +2363,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2366,14 +2380,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2387,7 +2404,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2417,17 +2434,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2436,28 +2456,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2466,28 +2486,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2496,7 +2516,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2509,8 +2529,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2554,7 +2577,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2562,7 +2585,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2577,20 +2600,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2642,8 +2669,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2663,16 +2693,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2680,6 +2714,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2698,14 +2737,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2729,6 +2768,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2874,50 +2934,3 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
-baseunix$(PPUEXT) : unixtype$(PPUEXT) errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  ostypes.inc osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/baseunix.pp
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixtype.pp
-unix$(PPUEXT) : unixtype$(PPUEXT) baseunix$(PPUEXT) unixutil$(PPUEXT) strings$(PPUEXT) $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-		 unxconst.inc $(UNIXINC)/timezone.inc \
-		 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unix.pp
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-	       unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) \
-		   $(SYSTEMUNIT)$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-endif
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cthreads.pp
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cwstring.pp
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-initc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)

+ 18 - 114
rtl/solaris/Makefile.fpc

@@ -7,23 +7,23 @@ main=rtl
 
 [target]
 loaders=
-units=$(SYSTEMUNIT) $(UUCHARUNIT) unixtype ctypes $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(MACPASUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) \
-      baseunix unixutil $(UNIXCPUNIT) \
-      $(TERMIOUNIT) unix initc $(CMEMUNIT) \
-      sysutils typinfo $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) classes \
+      $(BASEUNIXUNIT) $(UNIXUTILUNIT) $(UNIXCPUNIT) \
+      $(TERMIOUNIT) $(UNIXUNIT) $(INITCUNIT) $(CMEMUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) \
       $(ERRORSUNIT) \
       $(DLUNIT) $(DYNLIBSUNIT) \
-      types sysconst $(CHARACTERUNIT) \
-      rtlconsts cthreads \
-      dos $(FPWIDESTRINGUNIT) \
-      cwstring $(FPINTRESUNIT) $(CPU_UNITS) \
+      $(TYPESUNIT) $(SYSCONSTUNIT) $(CHARACTERUNIT) \
+      $(RTLCONSTSUNIT) $(CTHREADSUNIT) \
+      $(DOSUNIT) $(FPWIDESTRINGUNIT) \
+      $(CWSTRINGUNIT) $(FPINTRESUNIT) $(CPU_UNITS) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-rsts=$(MATHUNIT) typinfo classes sysconst rtlconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT)
 
 [require]
 nortl=y
@@ -43,9 +43,9 @@ sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(COMMON)
 libname=libfprtl.so
 libversion=2.0.0
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
-      unix  \
-      dos \
-      sysutils typinfo $(MATHUNIT) \
+      $(UNIXUNIT)  \
+      $(DOSUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT)
 
@@ -57,31 +57,28 @@ PROCINC=$(RTL)/$(CPU_TARGET)
 OSPROCINC=$(RTL)/solaris/$(CPU_TARGET)
 UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
+CLASSESDIR=$(UNIXINC)
 CPU_UNITS=
+DOSDIR=$(UNIXINC)
 DYNLIBS_DEPS_OS=$(DLUNIT)$(PPUEXT)
 DYNLIBSINCDIR=$(UNIXINC)
 TERMIO_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT)
+SYSUTILSDIR=$(UNIXINC)
+SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 
 SYSTEMUNIT=system
 
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 SYSINIT_UNITS=   # si_prc si_c si_dll
 endif
 
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Solaris requires libc, no syscalls
 override FPCOPT+=-dFPC_USE_LIBC
 
@@ -105,96 +102,3 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 
-
-#
-# System Units (System, Objpas, Strings)
-#
-
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(SYSTEMUNIT).pp
-
-#
-# System Dependent Units
-#
-
-baseunix$(PPUEXT) : unixtype$(PPUEXT) errno.inc ptypes.inc $(UNIXINC)/ctypes.inc \
-  signal.inc $(UNIXINC)/bunxh.inc \
-  ostypes.inc osmacro.inc $(UNIXINC)/gensigset.inc \
-  $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/baseunix.pp
-
-unixtype$(PPUEXT) : $(UNIXINC)/unixtype.pp ptypes.inc $(UNIXINC)/ctypes.inc $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixtype.pp
-
-unix$(PPUEXT) : unixtype$(PPUEXT) baseunix$(PPUEXT) unixutil$(PPUEXT) strings$(PPUEXT) $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
-                 unxconst.inc $(UNIXINC)/timezone.inc \
-                 unxfunc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unix.pp
-
-unixutil$(PPUEXT) : $(UNIXINC)/unixutil.pp baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/unixutil.pp
-
-#
-# TP7 Compatible RTL Units
-#
-
-dos$(PPUEXT) : strings$(PPUEXT) unix$(PPUEXT) $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
-               unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/dos.pp
-
-#
-# Graph
-#
-
-#
-# Delphi Compatible Units
-#
-
-sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) unix$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) sysconst$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(UNIXINC)/sysutils.pp
-
-classes$(PPUEXT) : $(UNIXINC)/classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) \
-		   $(SYSTEMUNIT)$(PPUEXT) $(FGLUNIT)$(PPUEXT) sortbase$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes $(UNIXINC)/classes.pp
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp $(OBJPASUNIT)$(PPUEXT) sysutils$(PPUEXT) rtlconsts$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-
-#
-# Other system-independent RTL Units
-#
-
-ifneq ($(findstring $(ARCH),x86_64 i386),)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-else
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-endif
-
-#
-# Other system-dependent RTL Units
-#
-
-cthreads$(PPUEXT) : $(UNIXINC)/cthreads.pp sysutils$(PPUEXT) baseunix$(PPUEXT) unixtype$(PPUEXT) unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cthreads.pp
-
-cwstring$(PPUEXT) : $(UNIXINC)/cwstring.pp $(SYSTEMUNIT)$(PPUEXT) sysutils$(PPUEXT) baseunix$(PPUEXT) unix$(PPUEXT) unixtype$(PPUEXT) ctypes$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT)
-	$(COMPILER) $(UNIXINC)/cwstring.pp
-
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT) unixtype$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp
-
-initc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
-

+ 103 - 44
rtl/symbian/Makefile

@@ -894,17 +894,17 @@ RTLCONSTSUNIT=rtlconst
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 ifeq ($(ARCH),arm)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 ifneq ($(findstring $(ARCH),i386),)
 CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 else
 CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 endif
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),i386-symbian)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(RTLCONSTSUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(FGLUNIT) $(CPU_UNITS) $(DOSUNIT) $(TYPEINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) buildrtl
 endif
@@ -2173,8 +2173,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2191,9 +2195,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2203,6 +2213,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2232,7 +2245,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2250,7 +2263,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2278,21 +2291,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2328,7 +2341,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2345,14 +2358,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2366,7 +2382,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2396,17 +2412,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2415,28 +2434,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2445,28 +2464,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2475,7 +2494,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2488,8 +2507,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2533,7 +2555,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2541,7 +2563,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2556,20 +2578,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2621,8 +2647,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2642,16 +2671,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2659,6 +2692,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2677,14 +2715,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2708,6 +2746,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2854,5 +2913,5 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) # $(MACPASUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) # $(MACPASUNIT)$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -I$(SYMBIANINC) -I$(UIQINC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 4 - 4
rtl/symbian/Makefile.fpc

@@ -45,11 +45,11 @@ endif
 OBJPASDIR=$(RTL)/objpas
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=cpu $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 endif
 
 ifeq ($(ARCH),arm)
-CPU_UNITS=cpu
+CPU_UNITS=$(CPUUNIT)
 endif
 
 ifneq ($(findstring $(ARCH),i386),)
@@ -57,7 +57,7 @@ CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 else
 CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 endif
-DOS_DEPS_OS=objpas$(PPUEXT)
+DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
 
 [rules]
 .NOTPARALLEL:
@@ -82,6 +82,6 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # System Units (System, Objpas, Strings)
 #
 
-buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) # $(MACPASUNIT)$(PPUEXT)
+buildrtl$(PPUEXT): buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) # $(MACPASUNIT)$(PPUEXT)
         $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -I$(SYMBIANINC) -I$(UIQINC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
 

+ 100 - 41
rtl/wasi/Makefile

@@ -898,7 +898,7 @@ endif
 ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
-FPC_SYSTEM_OPT=-Fiwasiinc
+override FPC_SYSTEM_OPT += -Fiwasiinc
 DOS_DEPS_OS=$(WASIAPIUNIT)$(PPUEXT) $(WASIUTILUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),wasm32-wasi)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(SYSINIT_UNITS) $(OBJPASUNIT) $(EXTPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(UUCHARUNIT) $(WASIAPIUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(SYSCONSTUNIT)  $(SYSUTILSUNIT) $(SORTBASEUNIT) $(MATHUNIT) $(RTLCONSTSUNIT) $(TYPESUNIT)  $(TYPINFOUNIT)  $(FGLUNIT) $(GETOPTSUNIT) $(CHARSETUNIT)  $(CPALLUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT)  $(CLASSESUNIT) $(DOSUNIT) $(RESUNIT) $(HEAPTRCUNIT) $(WASIUTILUNIT)  $(WEBASSEMBLYUNIT)
@@ -2156,8 +2156,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2174,9 +2178,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2186,6 +2196,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2215,7 +2228,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2233,7 +2246,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2261,21 +2274,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2311,7 +2324,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2328,14 +2341,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2349,7 +2365,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2379,17 +2395,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2398,28 +2417,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2428,28 +2447,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2458,7 +2477,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2471,8 +2490,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2516,7 +2538,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2524,7 +2546,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2539,20 +2561,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2604,8 +2630,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2625,16 +2654,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2642,6 +2675,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2660,14 +2698,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2691,6 +2729,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)

+ 1 - 1
rtl/wasi/Makefile.fpc

@@ -48,7 +48,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 
-FPC_SYSTEM_OPT=-Fiwasiinc
+override FPC_SYSTEM_OPT += -Fiwasiinc
 
 DOS_DEPS_OS=$(WASIAPIUNIT)$(PPUEXT) $(WASIUTILUNIT)$(PPUEXT)
 

+ 106 - 54
rtl/watcom/Makefile

@@ -892,16 +892,13 @@ RTLCONSTSUNIT=rtlconst
 endif
 DOS_DEPS_OS=$(STRINGSUNIT)$(PPUEXT)
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 ifdef EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
 endif
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 ifeq ($(CPU_OS_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) watcom $(DOSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(WATCOMUNIT) $(DOSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-watcom)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -910,7 +907,7 @@ ifeq ($(CPU_OS_TARGET),i386-watcom)
 override TARGET_LOADERS+=prt0
 endif
 ifeq ($(CPU_OS_TARGET),i386-watcom)
-override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) pmhelp $(CLASSESUNIT) $(SYSCONSTUNIT) $(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),i386-watcom)
@@ -2189,8 +2186,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2207,9 +2208,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2219,6 +2226,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2248,7 +2258,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2266,7 +2276,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2294,21 +2304,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2344,7 +2354,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2361,14 +2371,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2382,7 +2395,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2412,17 +2425,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2431,28 +2447,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2461,28 +2477,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2491,7 +2507,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2504,8 +2520,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2549,7 +2568,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2557,7 +2576,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2572,20 +2591,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2637,8 +2660,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2658,16 +2684,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2675,6 +2705,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2693,14 +2728,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2724,6 +2759,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2872,12 +2928,8 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 prt0$(OEXT) : prt0.as
 	wasm prt0.as -fo=prt0$(OEXT) -bt=dos -5s -fp5 -ms -zq
 	$(COPY) prt0$(OEXT) $(UNITTARGETDIRPREFIX)prt0$(OEXT)
-watcom$(PPUEXT) : watcom.pp system$(PPUEXT)
-dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
-	$(COMPILER) -Sg dpmiexcp.pp
-initc$(PPUEXT) : initc.pp system$(PPUEXT)
-profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) watcom$(PPUEXT)
-dxeload$(PPUEXT) : dxeload.pp system$(PPUEXT)
-emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
-		  dpmiexcp$(PPUEXT)
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
+WATCOM_DEPS = watcom.pp $(SYSTEMUNIT)$(PPUEXT)
+watcom$(PPUEXT) : $(WATCOM_DEPS)
+	$(COMPILER) $(WATCOM_OPT) $<
+WatcomApi.WatCom.pp$(PPUEXT) : $(NSOSINC)/WatcomApi.WatCom.pp $(WATCOM_DEPS)
+	$(COMPILER) $(WATCOM_OPT) $<

+ 8 - 31
rtl/watcom/Makefile.fpc

@@ -10,21 +10,17 @@ loaders=prt0
 #exceptn fpu
 
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
-      watcom $(DOSUNIT) \
+      $(WATCOMUNIT) $(DOSUNIT) \
       $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  \
       $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SPFU128UNIT)       $(UFLOAT128UNIT)
-rsts=$(MATHUNIT) $(TYPINFOUNIT) pmhelp $(CLASSESUNIT) $(SYSCONSTUNIT)
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
-# dpmiexcp initc $(PORTSUNIT) profile dxeload emu387 \
-# printer graph classes \
-# msmouse video mouse keyboard vesamode
-
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -54,13 +50,6 @@ endif
 DOS_DEPS_OS=$(STRINGSUNIT)$(PPUEXT)
 SYSUTILS_DEPS_OS=$(DOSUNIT)$(PPUEXT)
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 
@@ -105,23 +94,11 @@ prt0$(OEXT) : prt0.as
 # System Dependent Units
 #
 
-watcom$(PPUEXT) : watcom.pp system$(PPUEXT)
-
-dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
-        $(COMPILER) -Sg dpmiexcp.pp
-
-initc$(PPUEXT) : initc.pp system$(PPUEXT)
+WATCOM_DEPS = watcom.pp $(SYSTEMUNIT)$(PPUEXT)
 
-profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) watcom$(PPUEXT)
-
-dxeload$(PPUEXT) : dxeload.pp system$(PPUEXT)
-
-emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
-                  dpmiexcp$(PPUEXT)
-
-#
-# Other system-dependent RTL Units
-#
+watcom$(PPUEXT) : $(WATCOM_DEPS)
+	$(COMPILER) $(WATCOM_OPT) $<
 
-msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
+WatcomApi.WatCom.pp$(PPUEXT) : $(NSOSINC)/WatcomApi.WatCom.pp $(WATCOM_DEPS)
+	$(COMPILER) $(WATCOM_OPT) $<
 

+ 101 - 80
rtl/wii/Makefile

@@ -888,13 +888,13 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-override [email protected]
+override FPC_SYSTEM_OPT += @rtl.cfg
 ifdef RELEASE
 override FPCOPT+=-Ur
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),powerpc-wii)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(DOSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT) $(CMEMUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(DOSUNIT) $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT) $(CMEMUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-wii)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2149,8 +2149,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2167,9 +2171,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2179,6 +2189,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2208,7 +2221,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2226,7 +2239,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2254,21 +2267,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2304,7 +2317,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2321,14 +2334,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2342,7 +2358,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2372,17 +2388,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2391,28 +2410,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2421,28 +2440,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2451,7 +2470,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2464,8 +2483,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2509,7 +2531,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2517,7 +2539,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2532,20 +2554,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2597,8 +2623,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2618,16 +2647,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2635,6 +2668,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2653,14 +2691,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2684,6 +2722,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2829,41 +2888,3 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-	$(COMPILER) exec.pp
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-	$(COMPILER) timer.pp
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-	$(COMPILER) utility.pp
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-	$(COMPILER) doslib.pp
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-	$(COMPILER) hardware.pas
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) inputevent.pas
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-	$(COMPILER) graphics.pas
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) layers.pas
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-		    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-	$(COMPILER) intuition.pas
-aboxlib$(PPUEXT): aboxlib.pas
-	$(COMPILER) aboxlib.pas
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-	$(COMPILER) clipboard.pas
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-		   utility$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) datatypes.pas
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) asl.pas
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) ahi.pas
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) mui.pas
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-	$(COMPILER) tinygl.pp
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-	$(COMPILER) get9.pas
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) muihelper.pas

+ 3 - 68
rtl/wii/Makefile.fpc

@@ -7,13 +7,13 @@ main=rtl
 
 [target]
 loaders=
-units=$(SYSTEMUNIT) $(UUCHARUNIT) objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(SORTBASEUNIT)  $(SYSUTILSUNIT) $(DOSUNIT) \
       $(CLASSESUNIT)  $(MATHUNIT) $(TYPINFOUNIT) $(CTYPESUNIT)  \
       $(CHARSETUNIT) $(CPALLUNIT) $(GETOPTSUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \
       $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(LINEINFOUNIT) $(FGLUNIT) $(CMEMUNIT)
-#rsts=$(MATHUNIT) rtlconsts varutils typinfo variants classes sysconst dateutil fpmkunit
+#rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(CP_UNITS) $(UNICODEDATAUNIT)
 
 [require]
@@ -38,7 +38,7 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
-override [email protected]
+override FPC_SYSTEM_OPT += @rtl.cfg
 
 ifdef RELEASE
 override FPCOPT+=-Ur
@@ -64,68 +64,3 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 # Put system unit dependencies together.
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
 
-
-#
-# Base Units (System, strings, os-dependent-base-unit)
-#
-
-#
-# Other system-dependent RTL Units
-#
-
-exec$(PPUEXT)    : exec.pp execf.inc execd.inc
-	$(COMPILER) exec.pp
-
-timer$(PPUEXT)   : timer.pp timerd.inc timerf.inc
-	$(COMPILER) timer.pp
-
-utility$(PPUEXT) : utility.pp exec$(PPUEXT) utilf.inc utild1.inc utild2.inc
-	$(COMPILER) utility.pp
-
-doslib$(PPUEXT)  : doslib.pp exec$(PPUEXT) timer$(PPUEXT) doslibd.inc doslibf.inc
-	$(COMPILER) doslib.pp
-
-hardware$(PPUEXT): hardware.pas exec$(PPUEXT)
-	$(COMPILER) hardware.pas
-
-inputevent$(PPUEXT): inputevent.pas exec$(PPUEXT) timer$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) inputevent.pas
-
-graphics$(PPUEXT): graphics.pas exec$(PPUEXT) utility$(PPUEXT) hardware$(PPUEXT)
-	$(COMPILER) graphics.pas
-
-layers$(PPUEXT)  : layers.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) layers.pas
-
-intuition$(PPUEXT): intuition.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT) \
-                    inputevent$(PPUEXT) timer$(PPUEXT) layers$(PPUEXT)
-	$(COMPILER) intuition.pas
-
-aboxlib$(PPUEXT): aboxlib.pas
-	$(COMPILER) aboxlib.pas
-
-clipboard$(PPUEXT): clipboard.pas exec$(PPUEXT)
-	$(COMPILER) clipboard.pas
-
-datatype$(PPUEXT): datatypes.pas exec$(PPUEXT) doslib$(PPUEXT) intuition$(PPUEXT) \
-                   utility$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) datatypes.pas
-
-asl$(PPUEXT): asl.pas exec$(PPUEXT) graphics$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) asl.pas
-
-ahi$(PPUEXT): ahi.pas exec$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) ahi.pas
-
-mui$(PPUEXT): mui.pas exec$(PPUEXT) utility$(PPUEXT) intuition$(PPUEXT) graphics$(PPUEXT)
-	$(COMPILER) mui.pas
-
-tinygl$(PPUEXT): tinygl.pp exec$(PPUEXT)
-	$(COMPILER) tinygl.pp
-
-get9$(PPUEXT): get9.pas exec$(PPUEXT)
-	$(COMPILER) get9.pas
-
-muihelper$(PPUEXT): muihelper.pas intuition$(PPUEXT) mui$(PPUEXT) doslib$(PPUEXT) utility$(PPUEXT)
-	$(COMPILER) muihelper.pas
-

+ 107 - 90
rtl/win16/Makefile

@@ -888,6 +888,10 @@ COMMON=$(RTL)/common
 PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
+TYPES_DEPS_OS=$(WINTYPESUNIT)$(PPUEXT)
+DOS_DEPS_OS = registers.inc $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc $(WINTYPESUNIT)$(PPUEXT) $(WINPROCSUNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) $(WINPROCSUNIT)$(PPUEXT)
+CLASSES_DEPS_OS = $(WINPROCSUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT)
 OBJPASDIR=$(RTL)/objpas
 ifdef EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
@@ -896,7 +900,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(CPU_OS_TARGET),i8086-win16)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(ISO7185UNIT) $(EXTPASUNIT) dos wintypes winprocs win31 $(PORTSUNIT) $(DYNLIBSUNIT) $(SORTBASEUNIT) sysconst rtlconsts sysutils $(MATHUNIT) types typinfo $(FGLUNIT) classes $(CHARSETUNIT) cpu $(GETOPTSUNIT) $(CPALLUNIT) $(UNICODEDATAUNIT) $(CHARACTERUNIT) ctypes
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(DOSUNIT) $(WINTYPESUNIT) $(WINPROCSUNIT) $(WIN31UNIT) $(PORTSUNIT) $(DYNLIBSUNIT) $(SORTBASEUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CPUUNIT) $(GETOPTSUNIT) $(CPALLUNIT) $(UNICODEDATAUNIT) $(CHARACTERUNIT) $(CTYPESUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i8086-win16)
 override TARGET_IMPLICITUNITS+=$(CP_UNITS)
@@ -2181,8 +2185,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2199,9 +2207,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2211,6 +2225,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2240,7 +2257,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2258,7 +2275,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2286,21 +2303,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2336,7 +2353,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2353,14 +2370,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2374,7 +2394,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2404,17 +2424,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2423,28 +2446,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2453,28 +2476,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2483,7 +2506,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2496,8 +2519,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2541,7 +2567,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2549,7 +2575,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2564,20 +2590,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2629,8 +2659,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2650,16 +2683,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2667,6 +2704,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2685,14 +2727,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2716,6 +2758,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2859,7 +2922,9 @@ include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) wintypes.inc winprocsh.inc winprocs.inc \
+		  glbheap.inc glbheaph.inc locheap.inc locheaph.inc \
+		  sysdl.inc sysdlh.inc
 prt0s$(OEXT) : prt0s.asm prt0comn.asm
 	$(MAKE) $(COMPILER_UNITTARGETDIR)
 	$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0s$(OEXT) prt0s.asm
@@ -2875,51 +2940,3 @@ prt0l$(OEXT) : prt0l.asm prt0comn.asm
 prt0h$(OEXT) : prt0h.asm prt0comn.asm
 	$(MAKE) $(COMPILER_UNITTARGETDIR)
 	$(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0h$(OEXT) prt0h.asm
-system$(PPUEXT) : system.pp $(SYSDEPS) wintypes.inc winprocsh.inc winprocs.inc \
-		  glbheap.inc glbheaph.inc locheap.inc locheaph.inc \
-		  sysdl.inc sysdlh.inc
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-wintypes$(PPUEXT) : wintypes.pp wintypes.inc system$(PPUEXT)
-	$(COMPILER) wintypes.pp
-	$(EXECPPAS)
-winprocs$(PPUEXT) : winprocs.pp winprocsh.inc winprocs.inc system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) wintypes$(PPUEXT)
-	$(COMPILER) winprocs.pp
-	$(EXECPPAS)
-win31$(PPUEXT) : win31.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) wintypes$(PPUEXT)
-	$(COMPILER) win31.pp
-	$(EXECPPAS)
-dos$(PPUEXT) : dos.pp registers.inc \
-	       $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc \
-	       strings$(PPUEXT) wintypes$(PPUEXT) winprocs$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-		    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT) \
-		    wintypes$(PPUEXT) winprocs$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-		   types$(PPUEXT) $(FGLUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
-		   winprocs$(PPUEXT) wintypes$(PPUEXT) sortbase$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-	$(EXECPPAS)
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(MATHUNIT)$(PPUEXT) wintypes$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconsts.pp
-	$(EXECPPAS)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp sysutils$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-	$(COMPILER) $(INC)/ctypes.pp $(REDIR)
-	$(EXECPPAS)

+ 14 - 86
rtl/win16/Makefile.fpc

@@ -5,11 +5,11 @@
 main=rtl
 [target]
 loaders=prt0s prt0m prt0c prt0l prt0h 
-units=system $(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(ISO7185UNIT) $(EXTPASUNIT) dos \
-      wintypes winprocs win31 $(PORTSUNIT) $(DYNLIBSUNIT) $(SORTBASEUNIT) \
-      sysconst rtlconsts sysutils $(MATHUNIT) types typinfo $(FGLUNIT) \
-      classes $(CHARSETUNIT) cpu $(GETOPTSUNIT) $(CPALLUNIT) \
-      $(UNICODEDATAUNIT) $(CHARACTERUNIT) ctypes
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(DOSUNIT) \
+      $(WINTYPESUNIT) $(WINPROCSUNIT) $(WIN31UNIT) $(PORTSUNIT) $(DYNLIBSUNIT) $(SORTBASEUNIT) \
+      $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(SYSUTILSUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(FGLUNIT) \
+      $(CLASSESUNIT) $(CHARSETUNIT) $(CPUUNIT) $(GETOPTSUNIT) $(CPALLUNIT) \
+      $(UNICODEDATAUNIT) $(CHARACTERUNIT) $(CTYPESUNIT)
 implicitunits=$(CP_UNITS)
 
 [require]
@@ -30,6 +30,11 @@ PROCINC=../$(CPU_TARGET)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 
+TYPES_DEPS_OS=$(WINTYPESUNIT)$(PPUEXT)
+DOS_DEPS_OS = registers.inc $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc $(WINTYPESUNIT)$(PPUEXT) $(WINPROCSUNIT)$(PPUEXT)
+SYSUTILS_DEPS_OS = $(DOSUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) $(WINPROCSUNIT)$(PPUEXT)
+CLASSES_DEPS_OS = $(WINPROCSUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT)
+
 # Paths
 OBJPASDIR=$(RTL)/objpas
 # Insert exception handler in system unit
@@ -52,7 +57,10 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 # Put system unit dependencies together.
-SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) wintypes.inc winprocsh.inc winprocs.inc \
+                  glbheap.inc glbheaph.inc locheap.inc locheaph.inc \
+                  sysdl.inc sysdlh.inc
+
 #
 # Loaders
 #
@@ -71,84 +79,4 @@ prt0l$(OEXT) : prt0l.asm prt0comn.asm
 prt0h$(OEXT) : prt0h.asm prt0comn.asm
 	$(MAKE) $(COMPILER_UNITTARGETDIR)
         $(NASM) -f obj -o $(UNITTARGETDIRPREFIX)prt0h$(OEXT) prt0h.asm
-#
-# System Units (System, Objpas, Strings)
-#
-system$(PPUEXT) : system.pp $(SYSDEPS) wintypes.inc winprocsh.inc winprocs.inc \
-                  glbheap.inc glbheaph.inc locheap.inc locheaph.inc \
-                  sysdl.inc sysdlh.inc
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-
-#
-# WinAPI Units
-#
-
-wintypes$(PPUEXT) : wintypes.pp wintypes.inc system$(PPUEXT)
-	$(COMPILER) wintypes.pp
-	$(EXECPPAS)
-
-# winprocs uses $mode objfpc, which loads objpas unit implicitly
-winprocs$(PPUEXT) : winprocs.pp winprocsh.inc winprocs.inc system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) wintypes$(PPUEXT)
-	$(COMPILER) winprocs.pp
-	$(EXECPPAS)
-
-# win31 uses $mode objfpc, which loads objpas unit implicitly
-win31$(PPUEXT) : win31.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) wintypes$(PPUEXT)
-	$(COMPILER) win31.pp
-	$(EXECPPAS)
-
-#
-# TP7 Compatible RTL Units
-#
-dos$(PPUEXT) : dos.pp registers.inc \
-               $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc \
-               strings$(PPUEXT) wintypes$(PPUEXT) winprocs$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) dos.pp
-	$(EXECPPAS)
-
-#
-# Delphi Compatible Units
-#
-sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
-                    $(OBJPASUNIT)$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT) \
-                    wintypes$(PPUEXT) winprocs$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
-	$(EXECPPAS)
-
-classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
-                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) \
-                   types$(PPUEXT) $(FGLUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
-                   winprocs$(PPUEXT) wintypes$(PPUEXT) sortbase$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
-	$(EXECPPAS)
-
-typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp sysutils$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) rtlconsts$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Sg -Fi$(OBJPASDIR) $(OBJPASDIR)/typinfo.pp
-	$(EXECPPAS)
-
-types$(PPUEXT) : $(OBJPASDIR)/types.pp $(MATHUNIT)$(PPUEXT) wintypes$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/types.pp
-	$(EXECPPAS)
 
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) $(OBJPASDIR)/sysconst.pp
-	$(EXECPPAS)
-
-rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc $(OBJPASUNIT)$(PPUEXT) system$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR) $(OBJPASDIR)/rtlconsts.pp
-	$(EXECPPAS)
-
-#
-# Other system-independent RTL Units
-#
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp sysutils$(PPUEXT) system$(PPUEXT)
-	$(COMPILER) $(PROCINC)/cpu.pp
-	$(EXECPPAS)
-
-#
-# Other system-dependent RTL Units
-#
-ctypes$(PPUEXT) : $(INC)/ctypes.pp system$(PPUEXT)
-        $(COMPILER) $(INC)/ctypes.pp $(REDIR)
-	$(EXECPPAS)

+ 106 - 46
rtl/win32/Makefile

@@ -887,35 +887,36 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=../win/wininc
 WINDIR=../win
-OSDIR=win32
 NSOSDIR=$(NSDIR)/windows
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 DLLS=fpcmemdll
 CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT)
 OBJPASDIR=$(RTL)/objpas
-FPC_SYSTEM_OPT=-Fu$(WINDIR)
+override FPC_SYSTEM_OPT += -Fu$(WINDIR)
 SYSUTILSDIR=$(WINDIR)
 SYSUTILS_OPT=-Fi$(WINDIR)
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) $(WINDIRSUNIT)$(PPUEXT)
 WINDIRSDIR=$(WINDIR)
 DYNLIBSINCDIR=$(WINDIR)
+TTHREADINCDIR=$(WINDIR)
 include $(WININC)/makefile.inc
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 EXEINFO_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 EXTPAS_DEPS_OS=buildrtl$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),i386-win32)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof initc $(EXTPASUNIT) $(HEAPTRCUNIT) $(WINSYSUTUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(DOSUNIT) $(MESSAGESUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(GETOPTSUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(SHAREMEMUNIT) $(EXEINFOUNIT) $(FPINTRESUNIT) $(WINDIRSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) $(CP_UNITS) $(UNICODEDATAUNIT) $(CPU_UNITS)
+override TARGET_IMPLICITUNITS+=sysinitpas sysinitcyg sysinitgprof $(INITCUNIT) $(EXTPASUNIT) $(HEAPTRCUNIT) $(WINSYSUTUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(DOSUNIT) $(MESSAGESUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(GETOPTSUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(SHAREMEMUNIT) $(EXEINFOUNIT) $(FPINTRESUNIT) $(WINDIRSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) $(CP_UNITS) $(UNICODEDATAUNIT) $(CPU_UNITS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-win32)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),i386-win32)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_BUILDUNIT=buildrtl
 override INSTALL_FPCPACKAGE=y y
@@ -2195,8 +2196,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2213,9 +2218,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2225,6 +2236,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2254,7 +2268,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2272,7 +2286,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2300,21 +2314,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2350,7 +2364,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2367,14 +2381,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2388,7 +2405,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2418,17 +2435,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2437,28 +2457,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2467,28 +2487,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2497,7 +2517,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2510,8 +2530,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2555,7 +2578,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2563,7 +2586,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2578,20 +2601,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2643,8 +2670,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2664,16 +2694,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2681,6 +2715,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2699,14 +2738,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2730,6 +2769,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2882,7 +2942,7 @@ BUILDUNITPATHS=-Fu$(WININC) -Fu$(WINDIR) -Fu$(INC) -Fu$(OBJPASDIR) -Fu../$(ARCH)
 ifdef FPC_DOTTEDUNITS
 BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS 
 endif
-BUILDRTL_DEPS=buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+BUILDRTL_DEPS=buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	      $(BUILDRTL_DEPS_OS) $(BUILDRTL_DEPS_CPU)
 buildrtl$(PPUEXT) : $(BUILDRTL_DEPS)
 	$(COMPILER) $(BUILDUNITPATHS) $(BUILDINCLUDEPATHS) $(BUILDRTL_OPT) $<

+ 7 - 6
rtl/win32/Makefile.fpc

@@ -7,8 +7,8 @@ main=rtl
 
 [target]
 loaders=$(LOADERS)
-units=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
-implicitunits=sysinitpas sysinitcyg sysinitgprof initc $(EXTPASUNIT) $(HEAPTRCUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
+implicitunits=sysinitpas sysinitcyg sysinitgprof $(INITCUNIT) $(EXTPASUNIT) $(HEAPTRCUNIT) \
       $(WINSYSUTUNIT) $(CTYPESUNIT) $(STRINGSUNIT) \
       $(DOSUNIT) $(MESSAGESUNIT) \
       $(CMEMUNIT) $(DYNLIBSUNIT) \
@@ -22,7 +22,7 @@ implicitunits=sysinitpas sysinitcyg sysinitgprof initc $(EXTPASUNIT) $(HEAPTRCUN
 
 # shared=$(DLLS)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 [require]
 nortl=y
@@ -46,7 +46,6 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=../win/wininc
 WINDIR=../win
-OSDIR=win32
 NSOSDIR=$(NSDIR)/windows
 
 UNITPREFIX=rtl
@@ -55,12 +54,13 @@ DLLS=fpcmemdll
 CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT)
 # Paths
 OBJPASDIR=$(RTL)/objpas
-FPC_SYSTEM_OPT=-Fu$(WINDIR)
+override FPC_SYSTEM_OPT += -Fu$(WINDIR)
 SYSUTILSDIR=$(WINDIR)
 SYSUTILS_OPT=-Fi$(WINDIR)
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) $(WINDIRSUNIT)$(PPUEXT)
 WINDIRSDIR=$(WINDIR)
 DYNLIBSINCDIR=$(WINDIR)
+TTHREADINCDIR=$(WINDIR)
 
 # Files used by windows.pp
 include $(WININC)/makefile.inc
@@ -70,6 +70,7 @@ WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 EXEINFO_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 EXTPAS_DEPS_OS=buildrtl$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 
 [rules]
 .NOTPARALLEL:
@@ -104,7 +105,7 @@ endif
 # Unit specific rules
 #
 
-BUILDRTL_DEPS=buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+BUILDRTL_DEPS=buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
               $(BUILDRTL_DEPS_OS) $(BUILDRTL_DEPS_CPU)
 
 buildrtl$(PPUEXT) : $(BUILDRTL_DEPS)

+ 107 - 47
rtl/win64/Makefile

@@ -887,13 +887,13 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=../win/wininc
 WINDIR=../win
-OSDIR=win64
 NSOSDIR=$(NSDIR)/windows
 SYSUTILSDIR=$(WINDIR)
 SYSUTILS_OPT=-Fi../win
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) $(WINDIRSUNIT)$(PPUEXT)
 WINDIRSDIR=$(WINDIR)
 DYNLIBSINCDIR=$(WINDIR)
+TTHREADINCDIR=$(WINDIR)
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 EXEINFO_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
@@ -905,14 +905,15 @@ CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT)
 endif
 OBJPASDIR=$(RTL)/objpas
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
-FPC_SYSTEM_OPT=-Fi../win
+override FPC_SYSTEM_OPT += -Fi../win
 EXEINFO_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 ifeq ($(CPU_OS_TARGET),x86_64-win64)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-win64)
-override TARGET_UNITS+=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-win64)
 override TARGET_IMPLICITUNITS+=sysinit $(EXTPASUNIT) $(HEAPTRCUNIT) $(FPINTRESUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(DOSUNIT) $(MESSAGESUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(GETOPTSUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(SHAREMEMUNIT) $(EXEINFOUNIT) $(WINDIRSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT) $(CP_UNITS) $(UNICODEDATAUNIT) $(CPU_UNITS)
@@ -927,10 +928,10 @@ ifeq ($(CPU_OS_TARGET),aarch64-win64)
 override TARGET_LOADERS+=$(LOADERS)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-win64)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-win64)
-override TARGET_RSTS+=$(MATHUNIT) typinfo classes sysconst
+override TARGET_RSTS+=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 endif
 override INSTALL_BUILDUNIT=buildrtl
 override INSTALL_FPCPACKAGE=y y
@@ -2216,8 +2217,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2234,9 +2239,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2246,6 +2257,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2275,7 +2289,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2293,7 +2307,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2321,21 +2335,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2371,7 +2385,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2388,14 +2402,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2409,7 +2426,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2439,17 +2456,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2458,28 +2478,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2488,28 +2508,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2518,7 +2538,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2531,8 +2551,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2576,7 +2599,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2584,7 +2607,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2599,20 +2622,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2664,8 +2691,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2685,16 +2715,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2702,6 +2736,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2720,14 +2759,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2751,6 +2790,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2903,7 +2963,7 @@ BUILDUNITPATHS=-Fu$(WININC) -Fu$(WINDIR) -Fu$(INC) -Fu$(OBJPASDIR) -Fu../$(ARCH)
 ifdef FPC_DOTTEDUNITS
 BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS 
 endif
-BUILDRTL_DEPS=buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+BUILDRTL_DEPS=buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	      $(BUILDRTL_DEPS_OS) $(BUILDRTL_DEPS_CPU)
 buildrtl$(PPUEXT) : $(BUILDRTL_DEPS)
 	$(COMPILER) $(BUILDUNITPATHS) $(BUILDINCLUDEPATHS) $(BUILDRTL_OPT) $<

+ 6 - 5
rtl/win64/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 [target]
 loaders=$(LOADERS)
-units=system $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(WINDOWSUNIT) $(SYSUTILSUNIT) buildrtl $(CHARSETUNIT) $(CPALLUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)
 implicitunits=sysinit $(EXTPASUNIT) $(HEAPTRCUNIT) $(FPINTRESUNIT) \
       $(CTYPESUNIT) $(STRINGSUNIT) \
       $(DOSUNIT) $(MESSAGESUNIT) \
@@ -20,7 +20,7 @@ implicitunits=sysinit $(EXTPASUNIT) $(HEAPTRCUNIT) $(FPINTRESUNIT) \
       $(CP_UNITS) $(UNICODEDATAUNIT) \
       $(CPU_UNITS)
 
-rsts=$(MATHUNIT) typinfo classes sysconst
+rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 
 programs=
 
@@ -48,13 +48,13 @@ COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=../win/wininc
 WINDIR=../win
-OSDIR=win64
 NSOSDIR=$(NSDIR)/windows
 SYSUTILSDIR=$(WINDIR)
 SYSUTILS_OPT=-Fi../win
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) $(WINDIRSUNIT)$(PPUEXT)
 WINDIRSDIR=$(WINDIR)
 DYNLIBSINCDIR=$(WINDIR)
+TTHREADINCDIR=$(WINDIR)
 
 UNITPREFIX=rtl
 SYSTEMUNIT=system
@@ -82,9 +82,10 @@ OBJPASDIR=$(RTL)/objpas
 #include $(WININC)/makefile.inc
 
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
-FPC_SYSTEM_OPT=-Fi../win
+override FPC_SYSTEM_OPT += -Fi../win
 EXEINFO_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 
 [rules]
 .NOTPARALLEL:
@@ -118,7 +119,7 @@ endif
 # Unit specific rules
 #
 
-BUILDRTL_DEPS=buildrtl.pp system$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+BUILDRTL_DEPS=buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
               $(BUILDRTL_DEPS_OS) $(BUILDRTL_DEPS_CPU)
 
 buildrtl$(PPUEXT) : $(BUILDRTL_DEPS)

+ 105 - 47
rtl/wince/Makefile

@@ -895,9 +895,6 @@ CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
 CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) 
 MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT) 
 endif
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
 include $(WININC)/makefile.inc
@@ -908,11 +905,13 @@ SYSUTILSDIR=.
 SYSUTILS_OPT=-Fi../win
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) 
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TTHREADINCDIR=$(WINDIR)
 ifeq ($(CPU_OS_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(CPU_UNITS)  $(HEAPTRCUNIT) $(LINEINFOUNIT) $(WINDOWSUNIT) $(MESSAGESUNIT) $(DYNLIBSUNIT) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT)   $(FPWIDESTRINGUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(CMEMUNIT)  $(SHARMEMUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(CPU_UNITS)  $(HEAPTRCUNIT) $(LINEINFOUNIT) $(WINDOWSUNIT) $(MESSAGESUNIT) $(DYNLIBSUNIT) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT)   $(FPWIDESTRINGUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(CMEMUNIT)  $(SHARMEMUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(CPU_UNITS)  $(HEAPTRCUNIT) $(LINEINFOUNIT) $(WINDOWSUNIT) $(MESSAGESUNIT) $(DYNLIBSUNIT) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT)   $(FPWIDESTRINGUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(CMEMUNIT)  $(SHARMEMUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(CPU_UNITS)  $(HEAPTRCUNIT) $(LINEINFOUNIT) $(WINDOWSUNIT) $(MESSAGESUNIT) $(DYNLIBSUNIT) $(DOSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT)   $(FPWIDESTRINGUNIT)  $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(CMEMUNIT)  $(SHARMEMUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-wince)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -2176,8 +2175,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2194,9 +2197,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2206,6 +2215,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2235,7 +2247,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2253,7 +2265,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2281,21 +2293,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2331,7 +2343,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2348,14 +2360,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2369,7 +2384,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2399,17 +2414,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2418,28 +2436,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2448,28 +2466,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2478,7 +2496,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2491,8 +2509,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2536,7 +2557,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2544,7 +2565,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2559,20 +2580,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2624,8 +2649,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2645,16 +2673,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2662,6 +2694,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2680,14 +2717,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2711,6 +2748,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2860,7 +2918,7 @@ include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) winres.inc
 WINMESSAGESDIR=$(OSDIR)
-sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) $(WINDIR)/sharemem.pp
-fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) $(WINDIR)/fpcmemdll.pp

+ 7 - 13
rtl/wince/Makefile.fpc

@@ -6,7 +6,7 @@
 main=rtl
 
 [target]
-units=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) ctypes objpas $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
+units=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(CPU_UNITS)  $(HEAPTRCUNIT) $(LINEINFOUNIT) \
       $(WINDOWSUNIT) $(MESSAGESUNIT) $(DYNLIBSUNIT) \
       $(DOSUNIT) \
@@ -17,13 +17,12 @@ units=$(SYSTEMUNIT) $(UUCHARUNIT) $(FPINTRESUNIT) ctypes objpas $(MACPASUNIT) $(
       $(CMEMUNIT)  $(SHARMEMUNIT) \
       $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 
-#    initc  signals \
-#    crt graph \
+#    $(INITCUNIT)  signals \
 #    wincrt winmouse winevent  printer \
 #    video mouse keyboard \
 #    winsysut
 
-# rsts=$(MATHUNIT) varutils typinfo variants classes dateutils sysconst
+# rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT)
 implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
 
 # fake dll
@@ -62,13 +61,6 @@ CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT)
 MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT) 
 endif
 
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
-endif
-
 # Paths
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
@@ -83,6 +75,8 @@ SYSUTILSDIR=.
 SYSUTILS_OPT=-Fi../win
 SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) 
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
+TTHREADINCDIR=$(WINDIR)
 
 [rules]
 .NOTPARALLEL:
@@ -112,9 +106,9 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) winres.inc
 
 WINMESSAGESDIR=$(OSDIR)
 
-sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp $(SYSTEMUNIT)$(PPUEXT)
         $(COMPILER) $(WINDIR)/sharemem.pp
 
-fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp $(SYSTEMUNIT)$(PPUEXT)
         $(COMPILER) $(WINDIR)/fpcmemdll.pp
 

+ 101 - 45
rtl/zxspectrum/Makefile

@@ -896,7 +896,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
-override TARGET_UNITS+=system si_prc
+override TARGET_UNITS+=$(SYSTEMUNIT) si_prc
 endif
 override INSTALL_FPCPACKAGE=y y
 ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
@@ -2148,8 +2148,12 @@ ifndef DYNLIBSINCDIR
 DYNLIBSINCDIR=$(OSDIR)
 endif
 ifndef INITCDIR
+ifdef UNIXINC
+INITCDIR=$(UNIXINC)
+else
 INITCDIR=$(OSDIR)
 endif
+endif
 ifndef DOSDIR
 DOSDIR=$(OSDIR)
 NSDOSDIR=$(NSDIR)/$(DOSDIR)
@@ -2166,9 +2170,15 @@ endif
 ifndef NSSYSUTILSDIR
 NSSYSUTILSDIR=$(NSDIR)/$(SYSUTILSDIR)
 endif
+ifndef SYSTEMDIR
+SYSTEMDIR=$(OSDIR)
+endif
 ifndef CLASSESDIR
 CLASSESDIR=$(OSDIR)
 endif
+ifndef TTHREADINCDIR
+TTHREADINCDIR=$(CLASSESDIR)
+endif
 ifndef NSCLASSESDIR
 NSCLASSESDIR=$(NSDIR)/$(CLASSESDIR)
 endif
@@ -2178,6 +2188,9 @@ endif
 ifndef TERMIODIR
 TERMIODIR=$(OSDIR)
 endif
+ifndef PTHREADINCDIR
+PTHREADINCDIR=$(OSDIR)
+endif
 ifndef NSWINDOWSDIR
 NSWINDOWSDIR=$(NSDIR)/windows
 endif
@@ -2207,7 +2220,7 @@ OBJC_OPT:=$(OBJC_OPT) -dFPC_DOTTEDUNITS
 OBJCBASE_OPT:=$(OBJCBASE_OPT) -dFPC_DOTTEDUNITS
 FPCYLIX_OPT:=$(FPCYLIX_OPT) -dFPC_DOTTEDUNITS
 endif
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMDIR)/$(SYSTEMUNIT).$(SYSTEMUNITEXT) $(SYSDEPS)
 	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $<
 UUCHAR_DEPS=$(INC)/uuchar.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
@@ -2225,7 +2238,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    objpas$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2253,21 +2266,21 @@ HEAPTRC_DEPS=$(INC)/heaptrc.pp \
 heaptrc$(PPUEXT) : $(HEAPTRC_DEPS)
 	$(COMPILER) $(HEAPTRC_OPT) $<
 SOFTFPU_DEPS=$(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SOFTFPU_DEPS_OS) $(SOFTFPU_DEPS_CPU)
 softfpu$(PPUEXT) : $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 System.SoftFPU$(PPUEXT) : $(NSINC)/System.SoftFPU.pp $(SOFTFPU_DEPS) 
 	$(COMPILER) -Sg $(SOFTFPU_OPT) $<
 SFPUX80_DEPS=$(INC)/sfpux80.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPUX80_DEPS_OS) $(SFPUX80_DEPS_CPU) 
 sfpux80$(PPUEXT) : $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 System.SoftFpuX80$(PPUEXT) : $(NSINC)/System.SoftFpuX80.pp  $(SFPUX80_DEPS)
 	$(COMPILER) -Sg $(SFPUX80_OPT) $<
 SFPU128_DEPS=$(INC)/sfpu128.pp $(INC)/softfpu.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(SFPU128_DEPS_OS) $(SFPU128_DEPS_CPU)
 sfpu128$(PPUEXT) : $(SFPU128_DEPS)
 	$(COMPILER) -Sg $(SFPUX128_OPT) $<
@@ -2303,7 +2316,7 @@ ports$(PPUEXT) : $(PORTS_DEPS)
 System.Ports$(PPUEXT) :  $(NSINC)/System.Ports.$(PORTSUNITEXT) $(PORTS_DEPS)
 	$(COMPILER) $(PORTS_OPT) $<
 DYNLIBS_DEPS=$(INC)/dynlibs.pas $(DYNLIBSINCDIR)/dynlibs.inc \
-	     objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	     $(DYNLIBS_DEPS_OS) $(DYNLIBS_DEPS_CPU)
 ifdef DYNLIBSINCDIR
   ifndef DYNLIBS_OPT
@@ -2320,14 +2333,17 @@ 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=$(UNIXINC)/unixcp.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  LINUX_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 LINUX_DEPS=$(OSDIR)/linux.pp \
-	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(LINUX_DEPS_OS) $(LINUX_DEPS_CPU)
 linux$(PPUEXT): $(LINUX_DEPS)
 	$(COMPILER) $<
@@ -2341,7 +2357,7 @@ LinuxApi.Vcs$(PPUEXT): $(NSOSDIR)/LinuxApi.Vcs.pp $(LINUXVCS_DEPS)
 	$(COMPILER) $(LINUXVCS_OPT) $<
 FPCYLIX_DEPS=../linux/fpcylix.pp \
 	     $(CTHREADSUNIT)$(PPUEXT) $(CWSTRINGUNIT)$(PPUEXT) $(DYNLIBSUNIT)$(PPUEXT) \
-	     objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	     $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	     $(FPCYLIX_DEPS_OS)  $(FPCYLIX_DEPS_CPU)
 fpcylix$(PPUEXT) : $(FPCYLIX_DEPS)
 	$(COMPILER) $(FPCYLIX_OPT) $<
@@ -2371,17 +2387,20 @@ msmouse$(PPUEXT) : $(MSMOUSE_DEPS)
 DOSApi.MSMouse$(PPUEXT) : $(NSOSDIR)/DOSApi.MSMouse.pp $(MSMOUSE_DEPS)
 	$(COMPILER) $(MSMOUSE_OPTS) $<
 SYSUTILS_UNIX_DEPS=$(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
-		   $(SYSCALLUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
+		   $(BASEUNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 		   $(UNIXUTILUNIT)$(PPUEXT)  $(INITCUNIT)$(PPUEXT)
-SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/$(SYSUTILSUNIT)/*.inc) \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSUTILS_UNIX_DEPS+= $(SYSCALLUNIT)$(PPUEXT)
+endif
+SYSUTILS_DEPS=$(SYSUTILSDIR)/sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSCONSTUNIT)$(PPUEXT) \
 	      $(SYSUTILS_DEPS_OS) $(SYSUTILS_DEPS_CPU)
 sysutils$(PPUEXT) : $(SYSUTILS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $<
 System.SysUtils$(PPUEXT) : $(NSINC)/System.SysUtils.pp $(SYSUTILS_DEPS)
 	$(COMPILER) $(SYSUTILS_OPT) -Fi$(OBJPASDIR)/sysutils -Fi$(SYSUTILSDIR) $<
-CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(wildcard $(OBJPASDIR)/$(CLASSESUNIT)/*.inc) \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+CLASSES_DEPS=$(CLASSESDIR)/classes.pp $(TTHREADINCDIR)/tthread.inc $(wildcard $(OBJPASDIR)/classes/*.inc) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	     $(SYSUTILSUNIT)$(PPUEXT) $(TYPINFOUNIT)$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
 	     $(FGLUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) \
 	     $(CLASSES_DEPS_OS) $(CLASSES_DEPS_CPU)
@@ -2390,28 +2409,28 @@ classes$(PPUEXT) : $(CLASSES_DEPS)
 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) \
+	     $(OBJPASUNIT)$(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 $(TYPINFO_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) -Sg $(TYPINFO_OPT) $<
 CHARACTER_DEPS=$(OBJPASDIR)/character.pas \
-	       $(SYSUTILSUNIT)$(PPUEXT) objpas$(PPUEXT) $(RTLCONSTSUNIT)$(PPUEXT) \
+	       $(SYSUTILSUNIT)$(PPUEXT) $(OBJPASUNIT)$(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 $(PROCINC)/mathu.inc \
-	   objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(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) \
+	  $(OBJPASUNIT)$(PPUEXT) $(TYPESUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(SYSUTILSUNIT)$(PPUEXT) $(SORTBASEUNIT)$(PPUEXT) \
 	  $(RTLCONSTSUNIT)$(PPUEXT) \
 	  $(FGL_DEPS_OS) $(FGL_DEPS_CPU)
@@ -2420,28 +2439,28 @@ fgl$(PPUEXT) : $(FGL_DEPS)
 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) \
+	   $(OBJPASUNIT)$(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) \
+	      $(OBJPASUNIT)$(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) $<
 ifdef FPC_DOTTEDUNITS
-RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/rtlconsts.pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 System.RtlConsts$(PPUEXT) : $(NSINC)/System.RtlConsts.pp $(RTLCONSTS_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(RTLCONSTS_OPT) $<
 else
-RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp \
-	      objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+RTLCONSTS_DEPS=$(OBJPASDIR)/$(RTLCONSTSUNIT).pp $(OBJPASDIR)/rtlconst.inc \
+	      $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(RTLCONSTS_DEPS_OS) $(RTLCONSTS_DEPS_CPU)
 $(RTLCONSTSUNIT)$(PPUEXT) : $(RTLCONSTS_DEPS)
 	$(COMPILER) $(RTLCONSTS_OPT) $<
@@ -2450,7 +2469,7 @@ ifneq ($(findstring $(ARCH),x86_64 i386 i8086),)
 CPU_DEPS_CPU:=$(CPU_DEPS_CPU) $(SYSUTILSUNIT)$(PPUEXT)
 endif
 CPU_DEPS=$(PROCINC)/cpu.pp \
-	 $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
+	 $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	 $(CPU_DEPS_OS) $(CPU_DEPS_CPU)
 cpu$(PPUEXT) : $(CPU_DEPS)
 	$(COMPILER) $(CPU_OPT) $<
@@ -2463,8 +2482,11 @@ mmx$(PPUEXT) : $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
 System.CPU.MMX$(PPUEXT) : $(NSINC)/System.CPU.MMX.pp $(MMX_DEPS)
 	$(COMPILER) $(MMX_OPT) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  X86_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 X86_DEPS = $(UNIXINC)/x86.pp \
-	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSCALLUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	  $(BASEUNIXUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	  $(X86_DEPS_OS) $(X86_DEPS_CPU)
 x86$(PPUEXT) : $(X86_DEPS)
 	$(COMPILER) $(X86_OPT)  $<
@@ -2508,7 +2530,7 @@ lnfogdb$(PPUEXT) : $(LNFOGDB_DEPS)
 System.LineInfo.Gdb$(PPUEXT) : $(NSINC)/System.LineInfo.Gdb.pp $(LNFOGDB_DEPS)
 	$(COMPILER) $(LNFOGDB_OPT) $<
 CHARSET_DEPS=$(INC)/charset.pp \
-	     $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+	     $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(CHARSET_DEPS_OS) $(CHARSET_DEPS_CPU)
 charset$(PPUEXT) : $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $<
@@ -2516,7 +2538,7 @@ System.CharSet$(PPUEXT) : $(NSINC)/System.CharSet.pp $(CHARSET_DEPS)
 	$(COMPILER) $(CHARSET_OPT) $< 
 UNICODEDATA_DEPS = $(OBJPASDIR)/unicodedata.pas $(OBJPASDIR)/unicodedata.inc \
 		   $(OBJPASDIR)/unicodedata_le.inc $(OBJPASDIR)/unicodedata_be.inc \
-		   $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT)
+		   $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT)
 unicodedata$(PPUEXT) : $(UNICODEDATA_DEPS)
 	$(COMPILER) -Fi$(OBJPASDIR) $(UNICODEDATA_OPT) $<
 System.CodePages.unicodedata$(PPUEXT) : $(NSINC)/System.CodePages.unicodedata.pas $(UNICODEDATA_DEPS)
@@ -2531,20 +2553,24 @@ System.CodePages.All$(PPUEXT):  $(NSINC)/System.CodePages.All.pas $(CPALL_DEPS)
 ifneq ($(UNIXINC),)
   FPWIDESTRING_DEPS_OS:=$(FPWIDESTRING_DEPS_OS) $(UNIXCPUNIT)$(PPUEXT)
 endif
-ifeq ($(AMIINC),)
-  RTLDEFSINCDIR = $(OSDIR)
-else
+ifneq ($(AMIINC),)
   RTLDEFSINCDIR=$(AMIINC)
+else
+ifeq ($(OS_TARGET),android)
+  RTLDEFSINCDIR = $(LINUXINC)
+else
+  RTLDEFSINCDIR = $(OSDIR)
+endif
 endif
 FPWIDESTRING_DEPS=$(OBJPASDIR)/fpwidestring.pp $(RTLDEFSINCDIR)/rtldefs.inc \
-		  $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
+		  $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNICODEDATAUNIT)$(PPUEXT) \
 		  $(CHARACTERUNIT)$(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=$(INC)/sortbase.pp $(OBJPASUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	      $(SORTBASE_DEPS_OS) $(SORTBASE_DEPS_CPU) 
 sortbase$(PPUEXT) : $(SORTBASE_DEPS)
 	$(COMPILER) $(SORTBASE_OPT) $<
@@ -2596,8 +2622,11 @@ unixutil$(PPUEXT) : $(UNIXUTIL_DEPS)
 	$(COMPILER) $(UNIXUTIL_OPT) $<
 UnixApi.Utils$(PPUEXT) : $(NSINC)/UnixApi.Utils.pp $(UNIXUTIL_DEPS) 
 	$(COMPILER) $(UNIXUTIL_OPT) $<
+ifndef PTYPESINCDIR
+  PTYPESINCDIR=$(OSDIR)
+endif
 UNIXTYPE_DEPS=$(UNIXINC)/unixtype.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) $(OSDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(PTYPESINCDIR)/ptypes.inc $(UNIXINC)/ctypes.inc \
 	      $(UNIXTYPE_DEPS_OS) $(UNIXTYPE_DEPS_CPU)
 unixtype$(PPUEXT) : $(UNIXTYPE_DEPS)
 	$(COMPILER) $(UNIXTYPE_OPT) $(UNIXINC)/unixtype.pp
@@ -2617,16 +2646,20 @@ 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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(UNIXUNIT)$(PPUEXT) \
+CTHREADS_DEPS=$(UNIXINC)/cthreads.pp $(PTHREADINCDIR)/pthread.inc \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(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) objpas$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
+ifndef CWSTRINGDIR
+  CWSTRINGDIR=$(UNIXINC)
+  CWSSTRING_INC=$(RTLDEFSINCDIR)/rtldefs.inc
+endif
+CWSTRING_DEPS=$(CWSTRINGDIR)/cwstring.pp $(CWSTRING_INC) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(BASEUNIXUNIT)$(PPUEXT) \
 	      $(UNIXUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(DYNLIBSUNIT)$(PPUEXT) $(UNIXCPUNIT)$(PPUEXT) \
 	      $(CWSTRING_DEPS_OS) $(CWSTRING_DEPS_CPU) 
@@ -2634,6 +2667,11 @@ cwstring$(PPUEXT) : $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
 UnixApi.CWString$(PPUEXT) : $(NSINC)/UnixApi.CWString.pp $(CWSTRING_DEPS)
 	$(COMPILER) $(CWSTRING_OPT) $<
+ifneq ($(UNIXINC),)
+ifneq ($(OS_TARGET),macosclassic)
+  CTYPES_DEPS_OS+=$(UNIXTYPEUNIT)$(PPUEXT)
+endif
+endif
 CTYPES_DEPS=$(INC)/ctypes.pp \
 	    $(SYSTEMUNIT)$(PPUEXT) \
 	    $(CTYPES_DEPS_OS) $(CTYPES_DEPS_CPU)
@@ -2652,14 +2690,14 @@ OBJCBASE_DEPS=$(INC)/objcbase.pp \
 objcbase$(PPUEXT) : $(OBJCBASE_DEPS)
 	$(COMPILER) $(OBJCBASE_OPT) $<
 BLOCKRTL_DEPS=$(INC)/blockrtl.pp \
-	      $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
+	      $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(INITCUNIT)$(PPUEXT) $(CTYPESUNIT)$(PPUEXT) \
 	      $(BLOCKRTL_DEPS_OS) $(BLOCKRTL_DEPS_CPU)
 blockrtl$(PPUEXT) : $(BLOCKRTL_DEPS)
 	$(COMPILER) $(BLOCKRTL_OPT) $<
 ifndef WININCDIR
   WININCDIR = $(WINDIR)/wininc
 endif
-WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) \
+WINDOWS_DEPS=windows.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) \
 	     $(WINDOWS_DEPS_OS) $(WINDOWS_DEPS_CPU)
 windows$(PPUEXT): $(WINDOWS_DEPS)
 	$(COMPILER) -Fi$(WININC) $(WINDOWS_OPT) $<
@@ -2683,6 +2721,27 @@ messages$(PPUEXT): $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) $<
 WinApi.Messages$(PPUEXT): $(NSWINDOWSDIR)/WinApi.Messages.pp $(MESSAGES_DEPS)
 	$(COMPILER) -Fi$(WINMESSAGESINCDIR) -Fi$(WINMMESSAGESDIR) $<
+WINTYPES_DEPS = wintypes.pp wintypes.inc $(SYSTEMUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+wintypes$(PPUEXT) : $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WinApi.WinTypes$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinTypes.pp $(WINTYPES_DEPS)
+	$(COMPILER) $<
+WINPROCS_DEPS = winprocs.pp winprocsh.inc winprocs.inc $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+winprocs$(PPUEXT) : $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WinApi.Winprocs$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.WinProcs.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+WIN31_DEPS = win31.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINTYPESUNIT)$(PPUEXT) \
+	       $(WINTYPES_DEPS_OS) $(WINTYPES_DEPS_CPU)
+win31$(PPUEXT) : $(WIN31_DEPS)
+	$(COMPILER) $<
+WinApi.Win31$(PPUEXT) : $(NSWINDOWSDIR)/WinApi.Win31.pp $(WINPROCS_DEPS)
+	$(COMPILER) $<
+ifeq ($(filter -dFPC_USE_LIBC,$(FPCOPT)),)
+  SYSCTL_DEPS_OS+=$(SYSCALLUNIT)$(PPUEXT)
+endif
 SYSCTL_DEPS=$(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT) $(UNIXTYPEUNIT)$(PPUEXT) \
 	    $(SYSCTL_DEPS_OS) $(SYSCTL_DEPS_CPU)
 sysctl$(PPUEXT) : $(SYSCTL_DEPS)
@@ -2827,8 +2886,5 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-system$(PPUEXT) : system.pp $(SYSDEPS)
-	$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-	$(EXECPPAS)
-si_prc$(PPUEXT) : system$(PPUEXT)
+si_prc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
 	$(COMPILER) si_prc.pp

+ 3 - 6
rtl/zxspectrum/Makefile.fpc

@@ -5,7 +5,7 @@
 main=rtl
 [target]
 loaders=
-units=system si_prc
+units=$(SYSTEMUNIT) si_prc
 
 [require]
 nortl=y
@@ -50,11 +50,8 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 
 #
-# System Units (System, Objpas, Strings)
+# Loaders
 #
-system$(PPUEXT) : system.pp $(SYSDEPS)
-        $(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg system.pp
-        $(EXECPPAS)
 
-si_prc$(PPUEXT) : system$(PPUEXT)
+si_prc$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT)
         $(COMPILER) si_prc.pp

+ 19 - 0
tests/test/tvrec1.pp

@@ -0,0 +1,19 @@
+program tvrec1;
+
+type
+  TTestRec = record
+  case (A, B) of
+  A: (I: Integer);
+  B: (D: Double);
+  end;
+
+var
+  rec: TTestRec;
+begin
+  if @[email protected] then
+  begin
+    WriteLn('ok');
+    halt(0);
+  end;
+  halt(1);
+end.

+ 75 - 0
tests/test/units/classes/tstrlonchange.pp

@@ -0,0 +1,75 @@
+program sl;
+//issue #40261
+{$mode objfpc}
+{$WARN 5024 off : Parameter "$1" not used}
+uses
+  SysUtils, Classes;
+
+type
+  TTest = class
+  private
+    FList: TStringList;
+    FCount: Integer;
+    procedure Change(Sender: TObject);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure DoTest;
+  end;
+
+procedure assertOK(B : Boolean; Msg : String);
+
+begin
+  if not B then
+    begin
+    Writeln(Msg);
+    Halt(1);
+    end;
+end;
+
+procedure TTest.Change(Sender: TObject);
+begin
+  Inc(FCount);
+end;
+
+constructor TTest.Create;
+begin
+  FCount := 0;
+  FList := TStringList.Create;
+  FList.OwnsObjects := True;
+  FList.OnChange := @Change;
+end;
+
+destructor TTest.Destroy;
+begin
+  FList.Free;
+  inherited Destroy;
+end;
+
+procedure TTest.DoTest;
+begin
+  FCount := 0;
+  FList.AddObject('Added',TObject.Create);
+  AssertOK(FCount=1,format('AddObject causes %d OnChanges, expected 1',[FCount]));
+
+  FCount := 0;
+  FList.InsertObject(0, 'Inserted',TObject.Create);
+  AssertOK(FCount=1,format('InsertObject causes %d OnChanges, expected 1',[FCount]));
+
+  FCount := 0;
+  FList.AddPair('Name','Value',TObject.Create);
+  AssertOK(FCount=1,format('InsertObject causes %d OnChanges, expected 1',[FCount]));
+end;
+
+var
+  T: TTest;
+
+begin
+  T := TTest.Create;
+  try
+    T.DoTest;
+  finally
+    T.Free;
+  end;
+end.
+

+ 4 - 4
utils/fpcm/fpcmake.pp

@@ -107,8 +107,8 @@ program fpcmake;
 
           { Add the subdirs }
           subdirs:='';
-          for c:=low(tcpu) to high(tcpu) do
-           for t:=low(tos) to high(tos) do
+          for c:=succ(low(tcpu)) to high(tcpu) do
+           for t:=succ(low(tos)) to high(tos) do
             if CurrFPCMake.IncludeTargets[c,t] then
              begin
                s2:=CurrFPCMake.GetTargetVariable(c,t,'target_dirs',true);
@@ -119,8 +119,8 @@ program fpcmake;
                  AddTokenNoDup(subdirs,s,' ');
                until false;
              end;
-          for c:=low(tcpu) to high(tcpu) do
-           for t:=low(tos) to high(tos) do
+          for c:=succ(low(tcpu)) to high(tcpu) do
+           for t:=succ(low(tos)) to high(tos) do
             if CurrFPCMake.IncludeTargets[c,t] then
              begin
                s2:=CurrFPCMake.GetTargetVariable(c,t,'target_exampledirs',true);

+ 84 - 75
utils/fpcm/fpcmmain.pp

@@ -69,11 +69,13 @@ interface
 
     type
       TCpu=(
-        c_i386,c_m68k,c_powerpc,c_sparc,c_x86_64,c_arm,c_powerpc64,c_avr,c_armeb,c_armel,c_mips,c_mipsel,c_mips64,c_mips64el,c_jvm,c_i8086,c_aarch64,c_wasm32,c_sparc64,c_riscv32,c_riscv64,c_xtensa,c_z80, c_loongarch64
+        c_none,c_i386,c_m68k,c_powerpc,c_sparc,c_x86_64,c_arm,c_powerpc64,c_avr,
+	c_armeb,c_armel,c_mips,c_mipsel,c_mips64,c_mips64el,c_jvm,c_i8086,c_aarch64,
+	c_wasm32,c_sparc64,c_riscv32,c_riscv64,c_xtensa,c_z80, c_loongarch64
       );
 
       TOS=(
-        o_linux,o_go32v2,o_win32,o_os2,o_freebsd,o_beos,o_haiku,o_netbsd,
+        o_none,o_linux,o_go32v2,o_win32,o_os2,o_freebsd,o_beos,o_haiku,o_netbsd,
         o_amiga,o_atari, o_solaris, o_qnx, o_netware, o_openbsd,o_wdosx,
         o_palmos,o_macosclassic,o_darwin,o_emx,o_watcom,o_morphos,o_netwlibc,
         o_win64,o_wince,o_gba,o_nds,o_embedded,o_symbian,o_nativent,o_iphonesim,
@@ -85,19 +87,25 @@ interface
 
     const
       CpuStr : array[TCpu] of string=(
-        'i386','m68k','powerpc','sparc','x86_64','arm','powerpc64','avr','armeb', 'armel', 'mips', 'mipsel', 'mips64', 'mips64el', 'jvm','i8086','aarch64','wasm32','sparc64','riscv32','riscv64','xtensa','z80', 'loongarch64'
+        'none','i386','m68k','powerpc','sparc','x86_64','arm','powerpc64','avr',
+	'armeb', 'armel', 'mips', 'mipsel', 'mips64', 'mips64el', 'jvm','i8086','aarch64',
+	'wasm32','sparc64','riscv32','riscv64','xtensa','z80', 'loongarch64'
       );
 
       CpuSuffix : array[TCpu] of string=(
-        '_i386','_m68k','_powerpc','_sparc','_x86_64','_arm','_powerpc64','_avr','_armeb', '_armel', '_mips', '_mipsel', '_mips64', '_mips64el', '_jvm','_i8086','_aarch64','_wasm32','_sparc64','_riscv32','_riscv64','xtensa','_z80', 'loongarch64'
+        '_none','_i386','_m68k','_powerpc','_sparc','_x86_64','_arm','_powerpc64','_avr',
+	'_armeb', '_armel', '_mips', '_mipsel', '_mips64', '_mips64el', '_jvm','_i8086','_aarch64',
+	'_wasm32','_sparc64','_riscv32','_riscv64','xtensa','_z80', 'loongarch64'
       );
 
       ppcSuffix : array[TCpu] of string=(
-        '386','68k','ppc','sparc','x64','arm','ppc64','avr','armeb', 'armel', 'mips', 'mipsel', 'mips64', 'mips64el', 'jvm','8086','a64','wasm32','sparc64','rv32','rv64','xtensa','z80', 'loongarch64'
+        'none','386','68k','ppc','sparc','x64','arm','ppc64','avr',
+	'armeb', 'armel', 'mips', 'mipsel', 'mips64', 'mips64el', 'jvm','8086','a64',
+	'wasm32','sparc64','rv32','rv64','xtensa','z80', 'loongarch64'
       );
 
       OSStr : array[TOS] of string=(
-        'linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd',
+        'none','linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd',
         'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx',
         'palmos','macosclassic','darwin','emx','watcom','morphos','netwlibc',
         'win64','wince','gba','nds','embedded','symbian','nativent',
@@ -107,7 +115,7 @@ interface
       );
 
       OSSuffix : array[TOS] of string=(
-        '_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd',
+        '_none','_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd',
         '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx',
         '_palmos','_macosclassic','_darwin','_emx','_watcom','_morphos','_netwlibc',
         '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent',
@@ -118,52 +126,53 @@ interface
 
       { This table is kept OS,Cpu because it is easier to maintain (PFV) }
       OSCpuPossible : array[TOS,TCpu] of boolean = (
-        { os          i386    m68k  ppc    sparc  x86_64 arm    ppc64  avr    armeb  armel  mips   mipsel mips64 misp64el jvm    i8086  aarch64 wasm32 sparc64 riscv32 riscv64 xtensa z80   loongarch64 }
-        { linux }   ( true,  true,  true,  true,  true,  true,  true,  false, true,  false, true,  true,  true,  true,    false, false, true,   false, true,  true,   true,   true,  false, true),
-        { go32v2 }  ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { win32 }   ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { os2 }     ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { freebsd } ( true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
-        { beos }    ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { haiku }   ( true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { netbsd }  ( true,  true,  true,  true,  true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { amiga }   ( false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { atari }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { solaris } ( true,  false, false, true,  true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { qnx }     ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { netware } ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { openbsd } ( true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { wdosx }   ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { palmos }  ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-   { macosclassic } ( false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { darwin }  ( true,  false, true,  false, true,  false, true,  false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
-        { emx }     ( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { watcom }  ( true,  false, false, false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { morphos } ( false, false, true,  false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { netwlibc }( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { win64   } ( false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
-        { wince    }( true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { gba    }  ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { nds    }  ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { embedded }( true,  true,  true,  true,  true,  true,  true,  true,  true , false, false, true , false, false,   false, true , true ,  true,  false, true,   true,   true,  true,  false),
-        { symbian } ( true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { nativent }( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { iphonesim }( true, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
-        { wii }     ( false, false, true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { aix }     ( false, false, true,  false, false, false, true,  false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { java }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   true,  false, false,  false, false, false,  false,  false, false, false),
-        { android } ( true,  false, false, false, true,  true,  false, false, false, false, false, true,  false, false,   true,  false, true,   false, false, false,  false,  false, false, false),
-        { msdos }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
-        { aros }    ( true,  false, false, false, true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        {dragonfly} ( false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { win16 }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
-        { freertos }( false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, true,   false,   true, false, false),
-        {zxspectrum}( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
-        { msxdos}   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
-        { ios }     ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
-        {amstradcpc}( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
-        {sinclairql}( false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
-        { wasi }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  true,  false, false,  false,  false, false, false)
+        { os          none   i386    m68k  ppc    sparc  x86_64 arm    ppc64  avr    armeb  armel  mips   mipsel mips64 misp64el jvm    i8086  aarch64 wasm32 sparc64 riscv32 riscv64 xtensa z80   loongarch64 }
+        { none  }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { linux }   ( false, true,  true,  true,  true,  true,  true,  true,  false, true,  false, true,  true,  true,  true,    false, false, true,   false, true,  true,   true,   true,  false, true),
+        { go32v2 }  ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { win32 }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { os2 }     ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { freebsd } ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
+        { beos }    ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { haiku }   ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { netbsd }  ( false, true,  true,  true,  true,  true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { amiga }   ( false, false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { atari }   ( false, false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { solaris } ( false, true,  false, false, true,  true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { qnx }     ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { netware } ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { openbsd } ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { wdosx }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { palmos }  ( false, false, true,  false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+   { macosclassic } ( false, false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { darwin }  ( false, true,  false, true,  false, true,  false, true,  false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
+        { emx }     ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { watcom }  ( false, true,  false, false, false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { morphos } ( false, false, false, true,  false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { netwlibc }( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { win64   } ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
+        { wince    }( false, true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { gba    }  ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { nds    }  ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { embedded }( false, true,  true,  true,  true,  true,  true,  true,  true,  true , false, false, true , false, false,   false, true , true ,  true,  false, true,   true,   true,  true,  false),
+        { symbian } ( false, true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { nativent }( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { iphonesim }( false, true, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
+        { wii }     ( false, false, false, true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { aix }     ( false, false, false, true,  false, false, false, true,  false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { java }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   true,  false, false,  false, false, false,  false,  false, false, false),
+        { android } ( false, true,  false, false, false, true,  true,  false, false, false, false, false, true,  false, false,   true,  false, true,   false, false, false,  false,  false, false, false),
+        { msdos }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
+        { aros }    ( false, true,  false, false, false, true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        {dragonfly} ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { win16 }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
+        { freertos }( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, true,   false,   true, false, false),
+        {zxspectrum}( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
+        { msxdos}   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
+        { ios }     ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
+        {amstradcpc}( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
+        {sinclairql}( false, false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
+        { wasi }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  true,  false, false,  false,  false, false, false)
       );
 
     type
@@ -651,8 +660,8 @@ implementation
         c : tcpu;
       begin
         FSections:=TDictionary.Create;
-        for c:=low(tcpu) to high(tcpu) do
-         for t:=low(tos) to high(tos) do
+        for c:=succ(low(tcpu)) to high(tcpu) do
+         for t:=succ(low(tos)) to high(tos) do
           FRequireList[c,t]:=TStringList.Create;
         FVariables:=TKeyValue.Create;
         FCommentChars:=[';','#'];
@@ -674,8 +683,8 @@ implementation
         c : tcpu;
       begin
         FSections.Free;
-        for c:=low(tcpu) to high(tcpu) do
-         for t:=low(tos) to high(tos) do
+        for c:=succ(low(tcpu)) to high(tcpu) do
+         for t:=succ(low(tos)) to high(tos) do
           FRequireList[c,t].Free;
         FVariables.Free;
       end;
@@ -836,8 +845,8 @@ implementation
           { target 'all' includes all targets }
           if hs='all' then
            begin
-             for c:=low(TCpu) to high(TCpu) do
-              for t:=low(TOs) to high(TOs) do
+             for c:=succ(low(TCpu)) to high(TCpu) do
+              for t:=succ(low(TOs)) to high(TOs) do
                if OSCpuPossible[t,c] then
                 FIncludeTargets[c,t]:=true;
              targetset:=true;
@@ -849,11 +858,11 @@ implementation
             begin
               hcpu:=copy(hs,1,i-1);
               htarget:=copy(hs,i+1,length(hs)-i);
-              for c:=low(TCpu) to high(TCpu) do
+              for c:=succ(low(TCpu)) to high(TCpu) do
                 begin
                   if hcpu=CpuStr[c] then
                     begin
-                      for t:=low(TOs) to high(TOs) do
+                      for t:=succ(low(TOs)) to high(TOs) do
                         begin
                           if htarget=OSStr[t] then
                             begin
@@ -871,9 +880,9 @@ implementation
             end
           else
             begin
-              for c:=low(TCpu) to high(TCpu) do
+              for c:=succ(low(TCpu)) to high(TCpu) do
                 begin
-                  for t:=low(TOS) to high(TOS) do
+                  for t:=succ(low(TOS)) to high(TOS) do
                     begin
                       if hs=OSStr[t] then
                         begin
@@ -893,8 +902,8 @@ implementation
         else
          begin
            hs:='';
-           for c:=low(TCpu) to high(TCpu) do
-            for t:=low(TOs) to high(TOs) do
+           for c:=succ(low(TCpu)) to high(TCpu) do
+            for t:=succ(low(TOs)) to high(TOs) do
              if FIncludeTargets[c,t] then
               AddToken(hs,CpuStr[c]+'-'+OSStr[t],' ');
            Verbose(FPCMakeDebug,Format(s_targets_info,[hs]));
@@ -953,8 +962,8 @@ implementation
         FExportSec.AddKey('name',FPackageName);
         FExportSec.AddKey('version',FPackageVersion);
         { Add required packages }
-        for c:=low(TCpu) to high(TCpu) do
-         for t:=low(TOS) to high(TOS) do
+        for c:=succ(low(TCpu)) to high(TCpu) do
+         for t:=succ(low(TOS)) to high(TOS) do
           FExportSec.AddKey('require'+CpuSuffix[c]+OSSuffix[t],FPackageSec['require'+CpuSuffix[c]+OSSuffix[t]]);
         { Unit dir }
         {FExportSec.AddKey('unitdir','$(UNITSDIR)/'+Lowercase(PackageName));}
@@ -1143,8 +1152,8 @@ implementation
            SetVariable('require_packages',s,false);
          end;
         { Load recursively all required packages starting with this Makefile.fpc }
-        for c:=low(TCpu) to high(TCpu) do
-          for t:=low(Tos) to high(Tos) do
+        for c:=succ(low(TCpu)) to high(TCpu) do
+          for t:=succ(low(Tos)) to high(Tos) do
             if FIncludeTargets[c,t] then
               LoadRequires(c,t,self);
       end;
@@ -1212,14 +1221,14 @@ implementation
            exit;
          end;
         { for LLVM compiler support, and dwarf eh }
-        for c:=low(tcpu) to high(tcpu) do
+        for c:=succ(low(tcpu)) to high(tcpu) do
           if FIncludeTargets[c,o_linux] then
             begin
               Result:=true;
               exit;
             end;
-        for c:=low(tcpu) to high(tcpu) do
-          for t:=low(tos) to high(tos) do
+        for c:=succ(low(tcpu)) to high(tcpu) do
+          for t:=succ(low(tos)) to high(tos) do
             if FIncludeTargets[c,t] then
               begin
                 for i:=0 to RequireList[c,t].Count-1 do
@@ -1276,7 +1285,7 @@ implementation
          begin
 {$ifdef UNIX}
 {$ifndef NO_UNIX_UNIT}
-           cpu := low(TCpu);
+           cpu := succ(low(TCpu));
            while(cpuStr[cpu] <> {$I %FPCTARGETCPU%}) do begin
              Inc(cpu);
              if cpu > high(TCpu) then
@@ -1605,8 +1614,8 @@ implementation
         t:TOS;
       begin
         result:=false;
-        for c:=low(tcpu) to high(tcpu) do
-          for t:=low(tos) to high(tos) do
+        for c:=succ(low(tcpu)) to high(tcpu) do
+          for t:=succ(low(tos)) to high(tos) do
            if FIncludeTargets[c,t] then
              begin
                if (GetVariable(inivar,false)<>'') or

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