Browse Source

* updated

git-svn-id: trunk@2836 -
peter 19 years ago
parent
commit
f893e5ab6c
3 changed files with 649 additions and 368 deletions
  1. 377 189
      rtl/win64/Makefile
  2. 47 67
      rtl/win64/Makefile.fpc
  3. 225 112
      rtl/win64/system.pp

+ 377 - 189
rtl/win64/Makefile

@@ -1,5 +1,13 @@
 #
 #
+<<<<<<< .mine
+<<<<<<< .mine
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/03/10]
+=======
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/12/10]
+=======
 # Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/03/08]
 # Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/03/08]
+>>>>>>> .r2831
+>>>>>>> .r2248
 #
 #
 default: all
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince powerpc64-linux
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince powerpc64-linux
@@ -235,485 +243,672 @@ override PACKAGE_NAME=rtl
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 RTL=..
 RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
+COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=wininc
 WININC=wininc
 UNITPREFIX=rtl
 UNITPREFIX=rtl
-SYSTEMUNIT=system
-PRT0=wprt0
-ifdef RELEASE
-override FPCOPT+=-Ur
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
 endif
 endif
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
-GRAPHDIR=$(INC)/graph
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
+endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
 override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
+endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) # ctypes objpas macpas strings rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard winsysut fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_LOADERS+=$(LOADERS)
+endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
 override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
 override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
+endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
 override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_LOADERS+=#wprt0 wdllprt0 gprt0 wcygprt0
+override TARGET_LOADERS+=$(LOADERS)
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_RSTS+=math varutils typinfo variants classes dateutils sysconst fpmkunit
 endif
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
+<<<<<<< .mine
+<<<<<<< .mine
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
+=======
+>>>>>>> .r2248
+=======
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
 endif
 endif
+>>>>>>> .r2831
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
 ifdef REQUIRE_UNITSDIR
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
@@ -1977,44 +2172,36 @@ makefiles: fpc_makefiles
 ifneq ($(wildcard fpcmake.loc),)
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 include fpcmake.loc
 endif
 endif
-SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
+SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 include $(INC)/makefile.inc
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-wprt0$(OEXT) : $(PRT0).as
-	$(AS) -o $(UNITTARGETDIRPREFIX)wprt0$(OEXT) $(PRT0).as
+wprt0$(OEXT) : wprt0.as
 gprt0$(OEXT) : gprt0.as
 gprt0$(OEXT) : gprt0.as
 wdllprt0$(OEXT) : wdllprt0.as
 wdllprt0$(OEXT) : wdllprt0.as
 wcygprt0$(OEXT) : wcygprt0.as
 wcygprt0$(OEXT) : wcygprt0.as
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-	$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp -Fi..\win
-objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+system$(PPUEXT) : system.pp $(SYSDEPS)
+	$(COMPILER) -Us -Sg system.pp -Fi../win
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
 		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
-		   $(SYSTEMUNIT)$(PPUEXT)
-windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
+		   system$(PPUEXT)
+windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) system$(PPUEXT)
 	$(COMPILER) -I$(WININC) windows.pp
 	$(COMPILER) -I$(WININC) windows.pp
-messages$(PPUEXT): messages.pp $(WININC)/messages.inc $(SYSTEMUNIT)$(PPUEXT)
+messages$(PPUEXT): messages.pp $(WININC)/messages.inc system$(PPUEXT)
 	$(COMPILER) -I$(WININC) messages.pp
 	$(COMPILER) -I$(WININC) messages.pp
-opengl32$(PPUEXT) : opengl32.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-winsock$(PPUEXT) : winsock.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-sockets$(PPUEXT) : sockets.pp windows$(PPUEXT) winsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+opengl32$(PPUEXT) : opengl32.pp windows$(PPUEXT) system$(PPUEXT)
+winsock$(PPUEXT) : winsock.pp windows$(PPUEXT) system$(PPUEXT)
+sockets$(PPUEXT) : sockets.pp windows$(PPUEXT) winsock$(PPUEXT) system$(PPUEXT) \
 		   $(INC)/sockets.inc $(INC)/socketsh.inc
 		   $(INC)/sockets.inc $(INC)/socketsh.inc
-initc$(PPUEXT) : initc.pp $(SYSTEMUNIT)$(PPUEXT)
-wincrt$(PPUEXT) : wincrt.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
-winmouse$(PPUEXT) : winmouse.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
+initc$(PPUEXT) : initc.pp system$(PPUEXT)
 dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
 dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
-dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-include $(GRAPHDIR)/makefile.inc
-GRAPHINCDEPS=$(addprefix $(GRAPHDIR)/,$(GRAPHINCNAMES))
-graph$(PPUEXT) : graph.pp strings$(PPUEXT) windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
-		 $(GRAPHINCDEPS)
-	$(COMPILER) -I$(GRAPHDIR) graph.pp
+dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) system$(PPUEXT)
+crt$(PPUEXT) : crt.pp $(INC)/textrec.inc system$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
+objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
 sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
 sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
 		    objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT) sysconst$(PPUEXT)
 		    objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT) sysconst$(PPUEXT)
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
 	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
@@ -2032,11 +2219,11 @@ varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
 	$(COMPILER) -Fi$(OBJPASDIR) varutils.pp
 	$(COMPILER) -Fi$(OBJPASDIR) varutils.pp
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
 	$(COMPILER) -Fi$(INC) $(INC)/variants.pp
 	$(COMPILER) -Fi$(INC) $(INC)/variants.pp
-types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) system$(PPUEXT)
 	$(COMPILER) $(OBJPASDIR)/types.pp
 	$(COMPILER) $(OBJPASDIR)/types.pp
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
 	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
 	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) system$(PPUEXT)
 	$(COMPILER) $(OBJPASDIR)/sysconst.pp
 	$(COMPILER) $(OBJPASDIR)/sysconst.pp
 dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
 dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
@@ -2044,17 +2231,18 @@ convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
 strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
 strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
-macpas$(PPUEXT) : $(INC)/macpas.pp $(SYSTEMUNIT)$(PPUEXT)
+macpas$(PPUEXT) : $(INC)/macpas.pp system$(PPUEXT)
 	$(COMPILER) $(INC)/macpas.pp $(REDIR)
 	$(COMPILER) $(INC)/macpas.pp $(REDIR)
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
-mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
-heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
+mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
+getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
 	$(COMPILER) -Sg $(INC)/heaptrc.pp
 	$(COMPILER) -Sg $(INC)/heaptrc.pp
-lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
-charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
-cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
+lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
+charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
+cmem$(PPUEXT) : $(INC)/cmem.pp system$(PPUEXT)
+ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
+fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT)
+callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
+ctypes$(PPUEXT) :  $(INC)/ctypes.pp system$(PPUEXT)
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) typinfo$(PPUEXT)
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) typinfo$(PPUEXT)

+ 47 - 67
rtl/win64/Makefile.fpc

@@ -6,17 +6,17 @@
 main=rtl
 main=rtl
 
 
 [target]
 [target]
-loaders= #wprt0 wdllprt0 gprt0 wcygprt0
-units=$(SYSTEMUNIT) # ctypes objpas macpas strings \
-#     lineinfo heaptrc matrix \
-#     windows winsock initc cmem dynlibs signals \
-#     dos crt objects graph messages \
-#     rtlconsts sysconst sysutils math types \
-#     strutils convutils dateutils varutils variants typinfo classes \
-#     cpu mmx charset ucomplex getopts \
-#     wincrt winmouse winevent sockets printer \
-#     video mouse keyboard \
-#     winsysut fpmkunit
+loaders=$(LOADERS)
+units=system ctypes objpas macpas strings \
+      lineinfo heaptrc matrix \
+      windows winsock initc cmem dynlibs signals \
+      dos crt objects messages \
+      rtlconsts sysconst sysutils math types \
+      strutils convutils dateutils varutils variants typinfo classes \
+      cpu mmx charset ucomplex getopts \
+      winevent sockets printer \
+      video mouse keyboard \
+      winsysut fpmkunit
 
 
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 
 
@@ -31,40 +31,34 @@ fpcdir=../..
 target=win64
 target=win64
 
 
 [compiler]
 [compiler]
-includedir=$(INC) $(PROCINC) $(RTL)/win
-sourcedir=$(INC) $(PROCINC)
+includedir=$(INC) $(PROCINC)
+sourcedir=$(INC) $(PROCINC) $(COMMON)
 
 
 
 
 [prerules]
 [prerules]
 RTL=..
 RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
+COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
 WININC=wininc
 WININC=wininc
 
 
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 
 
-SYSTEMUNIT=system
-PRT0=wprt0
-
-# Use new feature from 1.0.5 version
-# that generates release PPU files
-# which will not be recompiled
-ifdef RELEASE
-override FPCOPT+=-Ur
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
 endif
 endif
 
 
 # Paths
 # Paths
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
-GRAPHDIR=$(INC)/graph
 
 
 # Files used by windows.pp
 # Files used by windows.pp
-# include $(WININC)/makefile.inc
+#include $(WININC)/makefile.inc
 
 
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 
 
 
 
 [rules]
 [rules]
-SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
+SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 
 
 # Get the system independent include file names.
 # Get the system independent include file names.
 # This will set the following variables :
 # This will set the following variables :
@@ -86,8 +80,7 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Loaders
 # Loaders
 #
 #
 
 
-wprt0$(OEXT) : $(PRT0).as
-        $(AS) -o $(UNITTARGETDIRPREFIX)wprt0$(OEXT) $(PRT0).as
+wprt0$(OEXT) : wprt0.as
 
 
 gprt0$(OEXT) : gprt0.as
 gprt0$(OEXT) : gprt0.as
 
 
@@ -99,38 +92,34 @@ wcygprt0$(OEXT) : wcygprt0.as
 # System Units (System, Objpas, Strings)
 # System Units (System, Objpas, Strings)
 #
 #
 
 
-$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
-        $(COMPILER) -Us -Sg $(SYSTEMUNIT).pp -Fi..\win
+system$(PPUEXT) : system.pp $(SYSDEPS)
+        $(COMPILER) -Us -Sg system.pp -Fi../win
 
 
-objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
         $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
         $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 
 
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
                    $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
                    $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
-                   $(SYSTEMUNIT)$(PPUEXT)
+                   system$(PPUEXT)
 
 
 #
 #
 # System Dependent Units
 # System Dependent Units
 #
 #
 
 
-windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
+windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) system$(PPUEXT)
         $(COMPILER) -I$(WININC) windows.pp
         $(COMPILER) -I$(WININC) windows.pp
 
 
-messages$(PPUEXT): messages.pp $(WININC)/messages.inc $(SYSTEMUNIT)$(PPUEXT)
+messages$(PPUEXT): messages.pp $(WININC)/messages.inc system$(PPUEXT)
         $(COMPILER) -I$(WININC) messages.pp
         $(COMPILER) -I$(WININC) messages.pp
 
 
-opengl32$(PPUEXT) : opengl32.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+opengl32$(PPUEXT) : opengl32.pp windows$(PPUEXT) system$(PPUEXT)
 
 
-winsock$(PPUEXT) : winsock.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+winsock$(PPUEXT) : winsock.pp windows$(PPUEXT) system$(PPUEXT)
 
 
-sockets$(PPUEXT) : sockets.pp windows$(PPUEXT) winsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+sockets$(PPUEXT) : sockets.pp windows$(PPUEXT) winsock$(PPUEXT) system$(PPUEXT) \
                    $(INC)/sockets.inc $(INC)/socketsh.inc
                    $(INC)/sockets.inc $(INC)/socketsh.inc
 
 
-initc$(PPUEXT) : initc.pp $(SYSTEMUNIT)$(PPUEXT)
-
-wincrt$(PPUEXT) : wincrt.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
-
-winmouse$(PPUEXT) : winmouse.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
+initc$(PPUEXT) : initc.pp system$(PPUEXT)
 
 
 dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
 dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
 
 
@@ -138,22 +127,11 @@ dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
 # TP7 Compatible RTL Units
 # TP7 Compatible RTL Units
 #
 #
 
 
-dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) system$(PPUEXT)
 
 
-crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
+crt$(PPUEXT) : crt.pp $(INC)/textrec.inc system$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
 
 
-objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
-
-#
-# Graph
-#
-
-include $(GRAPHDIR)/makefile.inc
-GRAPHINCDEPS=$(addprefix $(GRAPHDIR)/,$(GRAPHINCNAMES))
-
-graph$(PPUEXT) : graph.pp strings$(PPUEXT) windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
-                 $(GRAPHINCDEPS)
-        $(COMPILER) -I$(GRAPHDIR) graph.pp
+objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
 
 
 
 
 #
 #
@@ -184,13 +162,13 @@ varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
         $(COMPILER) -Fi$(INC) $(INC)/variants.pp
         $(COMPILER) -Fi$(INC) $(INC)/variants.pp
 
 
-types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) system$(PPUEXT)
         $(COMPILER) $(OBJPASDIR)/types.pp
         $(COMPILER) $(OBJPASDIR)/types.pp
 
 
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
         $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
         $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
 
 
-sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) system$(PPUEXT)
         $(COMPILER) $(OBJPASDIR)/sysconst.pp
         $(COMPILER) $(OBJPASDIR)/sysconst.pp
 
 
 dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
 dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
@@ -206,36 +184,38 @@ strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
 # Mac Pascal Model
 # Mac Pascal Model
 #
 #
 
 
-macpas$(PPUEXT) : $(INC)/macpas.pp $(SYSTEMUNIT)$(PPUEXT)
+macpas$(PPUEXT) : $(INC)/macpas.pp system$(PPUEXT)
         $(COMPILER) $(INC)/macpas.pp $(REDIR)
         $(COMPILER) $(INC)/macpas.pp $(REDIR)
 
 
 #
 #
 # Other system-independent RTL Units
 # Other system-independent RTL Units
 #
 #
 
 
-cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
+cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
 
 
-mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
 
 
-getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
+getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
 
 
-heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
         $(COMPILER) -Sg $(INC)/heaptrc.pp
         $(COMPILER) -Sg $(INC)/heaptrc.pp
 
 
-lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
+lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
+
+charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
 
 
-charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
+cmem$(PPUEXT) : $(INC)/cmem.pp system$(PPUEXT)
 
 
-cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
+ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
 
 
-ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+fpmkunit$(PPUEXT) : $(COMMON)/fpmkunit.pp classes$(PPUEXT)
 
 
 #
 #
 # Other system-dependent RTL Units
 # Other system-dependent RTL Units
 #
 #
 
 
-callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
+callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)
 
 
-ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
+ctypes$(PPUEXT) :  $(INC)/ctypes.pp system$(PPUEXT)
 
 
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) typinfo$(PPUEXT)
 variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) typinfo$(PPUEXT)

+ 225 - 112
rtl/win64/system.pp

@@ -1,6 +1,6 @@
 {
 {
     This file is part of the Free Pascal run time library.
     This file is part of the Free Pascal run time library.
-    Copyright (c) 1999-2000 by Florian Klaempfl and Pavel Ozerski
+    Copyright (c) 1999-2005 by Florian Klaempfl and Pavel Ozerski
     member of the Free Pascal development team.
     member of the Free Pascal development team.
 
 
     FPC Pascal system unit for the Win32 API.
     FPC Pascal system unit for the Win32 API.
@@ -90,12 +90,9 @@ var
 { Win32 Info }
 { Win32 Info }
   startupinfo : tstartupinfo;
   startupinfo : tstartupinfo;
   hprevinst,
   hprevinst,
-  HInstance,
   MainInstance,
   MainInstance,
   cmdshow     : longint;
   cmdshow     : longint;
   DLLreason,DLLparam:longint;
   DLLreason,DLLparam:longint;
-  Win32StackTop : Dword;
-
 type
 type
   TDLL_Process_Entry_Hook = function (dllparam : longint) : longbool;
   TDLL_Process_Entry_Hook = function (dllparam : longint) : longbool;
   TDLL_Entry_Hook = procedure (dllparam : longint);
   TDLL_Entry_Hook = procedure (dllparam : longint);
@@ -106,11 +103,29 @@ const
   Dll_Thread_Attach_Hook : TDLL_Entry_Hook = nil;
   Dll_Thread_Attach_Hook : TDLL_Entry_Hook = nil;
   Dll_Thread_Detach_Hook : TDLL_Entry_Hook = nil;
   Dll_Thread_Detach_Hook : TDLL_Entry_Hook = nil;
 
 
-type
-  HMODULE = THandle;
-
 implementation
 implementation
 
 
+var
+  SysInstance : Longint;public;
+
+{$ifdef i386}
+{$define HAS_RESOURCES}
+{$i win32res.inc}
+{$endif}
+
+{ used by wstrings.inc because wstrings.inc is included before sysos.inc
+  this is put here (FK) }
+
+function SysAllocStringLen(psz:pointer;len:dword):pointer;stdcall;
+ external 'oleaut32.dll' name 'SysAllocStringLen';
+
+procedure SysFreeString(bstr:pointer);stdcall;
+ external 'oleaut32.dll' name 'SysFreeString';
+
+function SysReAllocStringLen(var bstr:pointer;psz: pointer;
+  len:dword): Integer; stdcall;external 'oleaut32.dll' name 'SysReAllocStringLen';
+
+
 { include system independent routines }
 { include system independent routines }
 {$I system.inc}
 {$I system.inc}
 
 
@@ -155,6 +170,7 @@ var
     end;
     end;
 
 
 begin
 begin
+  SetupProcVars;
   { create commandline, it starts with the executed filename which is argv[0] }
   { create commandline, it starts with the executed filename which is argv[0] }
   { Win32 passes the command NOT via the args, but via getmodulefilename}
   { Win32 passes the command NOT via the args, but via getmodulefilename}
   count:=0;
   count:=0;
@@ -166,7 +182,7 @@ begin
     Inc(Arglen);
     Inc(Arglen);
   until (pc[Arglen]=#0);
   until (pc[Arglen]=#0);
   allocarg(count,arglen);
   allocarg(count,arglen);
-  move(pc^,argv[count]^,arglen);
+  move(pc^,argv[count]^,arglen+1);
   { Setup cmdline variable }
   { Setup cmdline variable }
   cmdline:=GetCommandLine;
   cmdline:=GetCommandLine;
   { process arguments }
   { process arguments }
@@ -347,7 +363,6 @@ procedure remove_exception_handlers;forward;
 procedure PascalMain;stdcall;external name 'PASCALMAIN';
 procedure PascalMain;stdcall;external name 'PASCALMAIN';
 procedure fpc_do_exit;stdcall;external name 'FPC_DO_EXIT';
 procedure fpc_do_exit;stdcall;external name 'FPC_DO_EXIT';
 Procedure ExitDLL(Exitcode : longint); forward;
 Procedure ExitDLL(Exitcode : longint); forward;
-procedure asm_exit(Exitcode : longint);external name 'asm_exit';
 
 
 Procedure system_exit;
 Procedure system_exit;
 begin
 begin
@@ -365,7 +380,7 @@ begin
   remove_exception_handlers;
   remove_exception_handlers;
 
 
   { call exitprocess, with cleanup as required }
   { call exitprocess, with cleanup as required }
-  asm_exit(exitcode);
+  ExitProcess(exitcode);
 end;
 end;
 
 
 var
 var
@@ -373,7 +388,9 @@ var
     to check if the call stack can be written on exceptions }
     to check if the call stack can be written on exceptions }
   _SS : Cardinal;
   _SS : Cardinal;
 
 
-procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
+procedure Exe_entry;[public,alias:'_FPC_EXE_Entry'];
+  var
+    ST : pointer;
   begin
   begin
      IsLibrary:=false;
      IsLibrary:=false;
      { install the handlers for exe only ?
      { install the handlers for exe only ?
@@ -382,7 +399,6 @@ procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
      { This strange construction is needed to solve the _SS problem
      { This strange construction is needed to solve the _SS problem
        with a smartlinked syswin32 (PFV) }
        with a smartlinked syswin32 (PFV) }
      asm
      asm
-{!!!!!!!
          { allocate space for an exception frame }
          { allocate space for an exception frame }
         pushl $0
         pushl $0
         pushl %fs:(0)
         pushl %fs:(0)
@@ -393,21 +409,24 @@ procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
         movl %esp,%eax
         movl %esp,%eax
         movl %eax,System_exception_frame
         movl %eax,System_exception_frame
         pushl %ebp
         pushl %ebp
-        xorl %ebp,%ebp
         movl %esp,%eax
         movl %esp,%eax
-        movl %eax,Win32StackTop
-        movw %ss,%bp
-        movl %ebp,_SS
+        movl %eax,st
+     end;
+     StackTop:=st;
+     asm
+        xorl %eax,%eax
+        movw %ss,%ax
+        movl %eax,_SS
         call SysResetFPU
         call SysResetFPU
         xorl %ebp,%ebp
         xorl %ebp,%ebp
         call PASCALMAIN
         call PASCALMAIN
         popl %ebp
         popl %ebp
-}
      end;
      end;
      { if we pass here there was no error ! }
      { if we pass here there was no error ! }
      system_exit;
      system_exit;
   end;
   end;
 
 
+
 Const
 Const
   { DllEntryPoint  }
   { DllEntryPoint  }
      DLL_PROCESS_ATTACH = 1;
      DLL_PROCESS_ATTACH = 1;
@@ -419,7 +438,7 @@ Var
 Const
 Const
      DLLExitOK : boolean = true;
      DLLExitOK : boolean = true;
 
 
-function Dll_entry : longbool;[public, alias : '_FPC_DLL_Entry'];
+function Dll_entry : longbool;
 var
 var
   res : longbool;
   res : longbool;
 
 
@@ -478,6 +497,44 @@ begin
     LongJmp(DLLBuf,1);
     LongJmp(DLLBuf,1);
 end;
 end;
 
 
+{$ifndef VER2_0}
+
+procedure _FPC_mainCRTStartup;stdcall;public name '_mainCRTStartup';
+begin
+  IsConsole:=true;
+  Exe_entry;
+end;
+
+
+procedure _FPC_WinMainCRTStartup;stdcall;public name '_WinMainCRTStartup';
+begin
+  IsConsole:=false;
+  Exe_entry;
+end;
+
+
+procedure _FPC_DLLMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLMainCRTStartup';
+begin
+  IsConsole:=true;
+  sysinstance:=_hinstance;
+  dllreason:=_dllreason;
+  dllparam:=_dllparam;
+  DLL_Entry;
+end;
+
+
+procedure _FPC_DLLWinMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLWinMainCRTStartup';
+begin
+  IsConsole:=false;
+  sysinstance:=_hinstance;
+  dllreason:=_dllreason;
+  dllparam:=_dllparam;
+  DLL_Entry;
+end;
+
+{$endif VER2_0}
+
+
 function GetCurrentProcess : dword;
 function GetCurrentProcess : dword;
  stdcall;external 'kernel32' name 'GetCurrentProcess';
  stdcall;external 'kernel32' name 'GetCurrentProcess';
 
 
@@ -776,96 +833,113 @@ begin
         end;
         end;
 end;
 end;
 
 
-function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;stdcall;
 var
 var
-        frame,
-        res  : longint;
+  { this variable is set to true, if currently an sse check is executed and no sig ill should be generated }
+  sse_check : boolean;
 
 
-function SysHandleErrorFrame(error, frame : Longint; must_reset_fpu : Boolean) : Longint;
+function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;stdcall;
+var
+  res: longint;
+  err: byte;
+  must_reset_fpu: boolean;
 begin
 begin
-        if (frame = 0) then
-                SysHandleErrorFrame:=EXCEPTION_CONTINUE_SEARCH
-        else begin
-                if (exceptLevel >= MaxExceptionLevel) then exit;
-
-                exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
-                exceptError[exceptLevel] := error;
-                resetFPU[exceptLevel] := must_reset_fpu;
-                inc(exceptLevel);
-
-                excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
-                excep^.ExceptionRecord^.ExceptionCode := 0;
-
-                SysHandleErrorFrame := EXCEPTION_CONTINUE_EXECUTION;
-{$ifdef SYSTEMEXCEPTIONDEBUG}
-                if IsConsole then begin
-                        writeln(stderr,'Exception Continue Exception set at ',
-                                hexstr(exceptEip[exceptLevel],8));
-                        writeln(stderr,'Eip changed to ',
-                                hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
-                end;
-{$endif SYSTEMEXCEPTIONDEBUG}
+  res := EXCEPTION_CONTINUE_SEARCH;
+  if excep^.ContextRecord^.SegSs=_SS then begin
+    err := 0;
+    must_reset_fpu := true;
+  {$ifdef SYSTEMEXCEPTIONDEBUG}
+    if IsConsole then Writeln(stderr,'Exception  ',
+            hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
+  {$endif SYSTEMEXCEPTIONDEBUG}
+    case cardinal(excep^.ExceptionRecord^.ExceptionCode) of
+      STATUS_INTEGER_DIVIDE_BY_ZERO,
+      STATUS_FLOAT_DIVIDE_BY_ZERO :
+        err := 200;
+      STATUS_ARRAY_BOUNDS_EXCEEDED :
+        begin
+          err := 201;
+          must_reset_fpu := false;
         end;
         end;
-end;
-
-begin
-        if excep^.ContextRecord^.SegSs=_SS then
-                frame := excep^.ContextRecord^.Ebp
+      STATUS_STACK_OVERFLOW :
+        begin
+          err := 202;
+          must_reset_fpu := false;
+        end;
+      STATUS_FLOAT_OVERFLOW :
+        err := 205;
+      STATUS_FLOAT_DENORMAL_OPERAND,
+      STATUS_FLOAT_UNDERFLOW :
+        err := 206;
+  {excep^.ContextRecord^.FloatSave.StatusWord := excep^.ContextRecord^.FloatSave.StatusWord and $ffffff00;}
+      STATUS_FLOAT_INEXACT_RESULT,
+      STATUS_FLOAT_INVALID_OPERATION,
+      STATUS_FLOAT_STACK_CHECK :
+        err := 207;
+      STATUS_INTEGER_OVERFLOW :
+        begin
+          err := 215;
+          must_reset_fpu := false;
+        end;
+      STATUS_ILLEGAL_INSTRUCTION:
+        { if we're testing sse support, simply set the flag and continue }
+        if sse_check then
+          begin
+            os_supports_sse:=false;
+            { if yes, then retry }
+            excep^.ExceptionRecord^.ExceptionCode := 0;
+            res:=EXCEPTION_CONTINUE_EXECUTION;
+          end
         else
         else
-                frame := 0;
-        res := EXCEPTION_CONTINUE_SEARCH;
-{$ifdef SYSTEMEXCEPTIONDEBUG}
-        if IsConsole then Writeln(stderr,'Exception  ',
-                hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
-{$endif SYSTEMEXCEPTIONDEBUG}
-        case cardinal(excep^.ExceptionRecord^.ExceptionCode) of
-                STATUS_INTEGER_DIVIDE_BY_ZERO,
-                STATUS_FLOAT_DIVIDE_BY_ZERO :
-                        res := SysHandleErrorFrame(200, frame, true);
-                STATUS_ARRAY_BOUNDS_EXCEEDED :
-                        res := SysHandleErrorFrame(201, frame, false);
-                STATUS_STACK_OVERFLOW :
-                        res := SysHandleErrorFrame(202, frame, false);
-                STATUS_FLOAT_OVERFLOW :
-                        res := SysHandleErrorFrame(205, frame, true);
-                STATUS_FLOAT_DENORMAL_OPERAND,
-                STATUS_FLOAT_UNDERFLOW :
-                        res := SysHandleErrorFrame(206, frame, true);
-{excep^.ContextRecord^.FloatSave.StatusWord := excep^.ContextRecord^.FloatSave.StatusWord and $ffffff00;}
-                STATUS_FLOAT_INEXACT_RESULT,
-                STATUS_FLOAT_INVALID_OPERATION,
-                STATUS_FLOAT_STACK_CHECK :
-                        res := SysHandleErrorFrame(207, frame, true);
-                STATUS_INTEGER_OVERFLOW :
-                        res := SysHandleErrorFrame(215, frame, false);
-                STATUS_ILLEGAL_INSTRUCTION:
-                  res := SysHandleErrorFrame(216, frame, true);
-                STATUS_ACCESS_VIOLATION:
-                  { Athlon prefetch bug? }
-                  if is_prefetch(pointer(excep^.ContextRecord^.Eip)) then
-                    begin
-                      { if yes, then retry }
-                      excep^.ExceptionRecord^.ExceptionCode := 0;
-                      res:=EXCEPTION_CONTINUE_EXECUTION;
-                    end
-                  else
-                    res := SysHandleErrorFrame(216, frame, true);
-
-                STATUS_CONTROL_C_EXIT:
-                        res := SysHandleErrorFrame(217, frame, true);
-                STATUS_PRIVILEGED_INSTRUCTION:
-                  res := SysHandleErrorFrame(218, frame, false);
-                else
-                  begin
-                    if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
-                      res  :=  SysHandleErrorFrame(217, frame, true)
-                    else
-                      res := SysHandleErrorFrame(255, frame, true);
-                  end;
+          err := 216;
+      STATUS_ACCESS_VIOLATION:
+        { Athlon prefetch bug? }
+        if is_prefetch(pointer(excep^.ContextRecord^.Eip)) then
+          begin
+            { if yes, then retry }
+            excep^.ExceptionRecord^.ExceptionCode := 0;
+            res:=EXCEPTION_CONTINUE_EXECUTION;
+          end
+        else
+          err := 216;
+
+      STATUS_CONTROL_C_EXIT:
+        err := 217;
+      STATUS_PRIVILEGED_INSTRUCTION:
+        begin
+          err := 218;
+          must_reset_fpu := false;
         end;
         end;
-        syswin32_i386_exception_handler := res;
-end;
+      else
+        begin
+          if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
+            err := 217
+          else
+            err := 255;
+        end;
+    end;
 
 
+    if (err <> 0) and (exceptLevel < MaxExceptionLevel) then begin
+      exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
+      exceptError[exceptLevel] := err;
+      resetFPU[exceptLevel] := must_reset_fpu;
+      inc(exceptLevel);
+
+      excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
+      excep^.ExceptionRecord^.ExceptionCode := 0;
+
+      res := EXCEPTION_CONTINUE_EXECUTION;
+    {$ifdef SYSTEMEXCEPTIONDEBUG}
+      if IsConsole then begin
+        writeln(stderr,'Exception Continue Exception set at ',
+                hexstr(exceptEip[exceptLevel],8));
+        writeln(stderr,'Eip changed to ',
+                hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
+      end;
+    {$endif SYSTEMEXCEPTIONDEBUG}
+    end;
+  end;
+  syswin32_i386_exception_handler := res;
+end;
 
 
 procedure install_exception_handlers;
 procedure install_exception_handlers;
 {$ifdef SYSTEMEXCEPTIONDEBUG}
 {$ifdef SYSTEMEXCEPTIONDEBUG}
@@ -911,14 +985,52 @@ end;
 
 
 {$endif Set_i386_Exception_handler}
 {$endif Set_i386_Exception_handler}
 
 
+{ because of the brain dead sse detection on x86, this test is post poned }
+procedure fpc_cpucodeinit;
+  begin
+  end;
+
+
+
 
 
-{$ifdef HASWIDESTRING}
 {****************************************************************************
 {****************************************************************************
                       OS dependend widestrings
                       OS dependend widestrings
 ****************************************************************************}
 ****************************************************************************}
 
 
-function CharUpperBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD; stdcall; external 'user32' name 'CharUpperBuffW';
-function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD; stdcall; external 'user32' name 'CharLowerBuffW';
+const
+  { MultiByteToWideChar  }
+     MB_PRECOMPOSED = 1;
+     CP_ACP = 0;
+
+function MultiByteToWideChar(CodePage:UINT; dwFlags:DWORD; lpMultiByteStr:PChar; cchMultiByte:longint; lpWideCharStr:PWideChar;cchWideChar:longint):longint;
+    stdcall; external 'kernel32' name 'MultiByteToWideChar';
+function WideCharToMultiByte(CodePage:UINT; dwFlags:DWORD; lpWideCharStr:PWideChar; cchWideChar:longint; lpMultiByteStr:PChar;cchMultiByte:longint; lpDefaultChar:PChar; lpUsedDefaultChar:pointer):longint;
+    stdcall; external 'kernel32' name 'WideCharToMultiByte';
+function CharUpperBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+    stdcall; external 'user32' name 'CharUpperBuffW';
+function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+    stdcall; external 'user32' name 'CharLowerBuffW';
+
+
+procedure Win32Wide2AnsiMove(source:pwidechar;var dest:ansistring;len:SizeInt);
+  var
+    destlen: SizeInt;
+  begin
+    // retrieve length including trailing #0
+    destlen:=WideCharToMultiByte(CP_ACP, 0, source, len+1, nil, 0, nil, nil);
+    setlength(dest, destlen-1);
+    WideCharToMultiByte(CP_ACP, 0, source, len+1, @dest[1], destlen, nil, nil);
+  end;
+
+procedure Win32Ansi2WideMove(source:pchar;var dest:widestring;len:SizeInt);
+  var
+    destlen: SizeInt;
+  begin
+    // retrieve length including trailing #0
+    destlen:=MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, source, len+1, nil, 0);
+    setlength(dest, destlen-1);
+    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, source, len+1, @dest[1], destlen);
+  end;
 
 
 
 
 function Win32WideUpper(const s : WideString) : WideString;
 function Win32WideUpper(const s : WideString) : WideString;
@@ -943,11 +1055,12 @@ function Win32WideLower(const s : WideString) : WideString;
   are only relevant for the sysutils units }
   are only relevant for the sysutils units }
 procedure InitWin32Widestrings;
 procedure InitWin32Widestrings;
   begin
   begin
+    widestringmanager.Wide2AnsiMoveProc:=@Win32Wide2AnsiMove;
+    widestringmanager.Ansi2WideMoveProc:=@Win32Ansi2WideMove;
     widestringmanager.UpperWideStringProc:=@Win32WideUpper;
     widestringmanager.UpperWideStringProc:=@Win32WideUpper;
     widestringmanager.LowerWideStringProc:=@Win32WideLower;
     widestringmanager.LowerWideStringProc:=@Win32WideLower;
   end;
   end;
 
 
-{$endif HASWIDESTRING}
 
 
 
 
 {****************************************************************************
 {****************************************************************************
@@ -1035,7 +1148,7 @@ end;
 procedure SysInitStdIO;
 procedure SysInitStdIO;
 begin
 begin
   { Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
   { Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
-    displayed in and messagebox }
+    displayed in a messagebox }
   StdInputHandle:=longint(GetStdHandle(cardinal(STD_INPUT_HANDLE)));
   StdInputHandle:=longint(GetStdHandle(cardinal(STD_INPUT_HANDLE)));
   StdOutputHandle:=longint(GetStdHandle(cardinal(STD_OUTPUT_HANDLE)));
   StdOutputHandle:=longint(GetStdHandle(cardinal(STD_OUTPUT_HANDLE)));
   StdErrorHandle:=longint(GetStdHandle(cardinal(STD_ERROR_HANDLE)));
   StdErrorHandle:=longint(GetStdHandle(cardinal(STD_ERROR_HANDLE)));
@@ -1072,24 +1185,28 @@ begin
   result := stklen;
   result := stklen;
 end;
 end;
 
 
+{
 const
 const
    Exe_entry_code : pointer = @Exe_entry;
    Exe_entry_code : pointer = @Exe_entry;
    Dll_entry_code : pointer = @Dll_entry;
    Dll_entry_code : pointer = @Dll_entry;
+}
 
 
 begin
 begin
   StackLength := CheckInitialStkLen(InitialStkLen);
   StackLength := CheckInitialStkLen(InitialStkLen);
-  StackBottom := Sptr - StackLength;
+  StackBottom := StackTop - StackLength;
   { get some helpful informations }
   { get some helpful informations }
   GetStartupInfo(@startupinfo);
   GetStartupInfo(@startupinfo);
   { some misc Win32 stuff }
   { some misc Win32 stuff }
   hprevinst:=0;
   hprevinst:=0;
   if not IsLibrary then
   if not IsLibrary then
-    HInstance:=getmodulehandle(GetCommandFile);
+    SysInstance:=getmodulehandle(GetCommandFile);
   MainInstance:=HInstance;
   MainInstance:=HInstance;
   cmdshow:=startupinfo.wshowwindow;
   cmdshow:=startupinfo.wshowwindow;
   { Setup heap }
   { Setup heap }
   InitHeap;
   InitHeap;
   SysInitExceptions;
   SysInitExceptions;
+  { setup fastmove stuff }
+  fpc_cpucodeinit;
   SysInitStdIO;
   SysInitStdIO;
   { Arguments }
   { Arguments }
   setup_arguments;
   setup_arguments;
@@ -1100,11 +1217,7 @@ begin
   InitSystemThreads;
   InitSystemThreads;
   { Reset internal error variable }
   { Reset internal error variable }
   errno:=0;
   errno:=0;
-{$ifdef HASVARIANT}
   initvariantmanager;
   initvariantmanager;
-{$endif HASVARIANT}
-{$ifdef HASWIDESTRING}
   initwidestringmanager;
   initwidestringmanager;
   InitWin32Widestrings
   InitWin32Widestrings
-{$endif HASWIDESTRING}
 end.
 end.