Browse Source

+ sharemem unit

git-svn-id: trunk@4409 -
florian 19 years ago
parent
commit
3e054f46c3

+ 4 - 0
.gitattributes

@@ -4938,10 +4938,12 @@ rtl/watcom/watcom.pp svneol=native#text/plain
 rtl/win/crt.pp svneol=native#text/plain
 rtl/win/crt.pp svneol=native#text/plain
 rtl/win/dos.pp svneol=native#text/plain
 rtl/win/dos.pp svneol=native#text/plain
 rtl/win/dynlibs.inc svneol=native#text/plain
 rtl/win/dynlibs.inc svneol=native#text/plain
+rtl/win/fpcmemdll.pp svneol=native#text/plain
 rtl/win/keyboard.pp svneol=native#text/plain
 rtl/win/keyboard.pp svneol=native#text/plain
 rtl/win/messages.pp svneol=native#text/plain
 rtl/win/messages.pp svneol=native#text/plain
 rtl/win/mouse.pp svneol=native#text/plain
 rtl/win/mouse.pp svneol=native#text/plain
 rtl/win/printer.pp svneol=native#text/plain
 rtl/win/printer.pp svneol=native#text/plain
+rtl/win/sharemem.pp svneol=native#text/plain
 rtl/win/sockets.pp svneol=native#text/plain
 rtl/win/sockets.pp svneol=native#text/plain
 rtl/win/sysdir.inc svneol=native#text/plain
 rtl/win/sysdir.inc svneol=native#text/plain
 rtl/win/sysfile.inc svneol=native#text/plain
 rtl/win/sysfile.inc svneol=native#text/plain
@@ -6213,6 +6215,8 @@ tests/test/units/math/ttrig1.pp svneol=native#text/plain
 tests/test/units/objects/testobj.pp svneol=native#text/plain
 tests/test/units/objects/testobj.pp svneol=native#text/plain
 tests/test/units/objects/testobj1.pp svneol=native#text/plain
 tests/test/units/objects/testobj1.pp svneol=native#text/plain
 tests/test/units/objects/testobj2.pp svneol=native#text/plain
 tests/test/units/objects/testobj2.pp svneol=native#text/plain
+tests/test/units/sharemem/libtest.pp svneol=native#text/plain
+tests/test/units/sharemem/test1.pp svneol=native#text/plain
 tests/test/units/softfpu/sfttst.pp svneol=native#text/plain
 tests/test/units/softfpu/sfttst.pp svneol=native#text/plain
 tests/test/units/strings/tstrcopy.pp svneol=native#text/plain
 tests/test/units/strings/tstrcopy.pp svneol=native#text/plain
 tests/test/units/strings/tstrings1.pp svneol=native#text/plain
 tests/test/units/strings/tstrings1.pp svneol=native#text/plain

+ 77 - 0
rtl/win/fpcmemdll.pp

@@ -0,0 +1,77 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2006 by the Free Pascal development team.
+
+    Shared memory manager
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+{$mode objfpc}
+library fpcmemdll;
+
+    Function  SysGetmem(Size:ptrint):Pointer;
+      begin
+        Result:=System.SysGetmem(Size);
+      end;
+
+
+    Function  SysFreemem(p:pointer):ptrint;
+      begin
+        Result:=System.SysFreemem(p);
+      end;
+
+
+    Function  SysFreememSize(p:pointer;Size:ptrint):ptrint;
+      begin
+        Result:=System.SysFreememSize(p,Size);
+      end;
+
+
+    Function  SysAllocMem(size:ptrint):Pointer;
+      begin
+        Result:=System.SysAllocMem(Size);
+      end;
+
+
+    Function  SysReAllocMem(var p:pointer;size:ptrint):Pointer;
+      begin
+        Result:=System.SysReallocMem(p,Size);
+      end;
+
+
+    Function  SysMemSize(p:pointer):ptrint;
+      begin
+        Result:=System.SysMemSize(p);
+      end;
+
+
+    function  SysGetHeapStatus:THeapStatus;
+      begin
+        Result:=System.SysGetHeapStatus;
+      end;
+
+
+    function  SysGetFPCHeapStatus:TFPCHeapStatus;
+      begin
+        Result:=System.SysGetFPCHeapStatus;
+      end;
+
+
+    exports
+      SysGetmem,
+      SysFreemem,
+      SysFreememSize,
+      SysAllocMem,
+      SysReAllocMem,
+      SysMemSize,
+      SysGetHeapStatus,
+      SysGetFPCHeapStatus;
+
+begin
+end.

+ 60 - 0
rtl/win/sharemem.pp

@@ -0,0 +1,60 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2006 by the Free Pascal development team.
+
+    Shared memory manager
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+unit sharemem;
+
+  interface
+
+  implementation
+
+    const
+      fpcmemdll = 'fpcmemdll.dll';
+
+    function  SysGetmem(Size:ptrint):Pointer;external fpcmemdll;
+    function  SysFreemem(p:pointer):ptrint;external fpcmemdll;
+    function  SysFreememSize(p:pointer;Size:ptrint):ptrint;external fpcmemdll;
+    function  SysAllocMem(size:ptrint):Pointer;external fpcmemdll;
+    function  SysReAllocMem(var p:pointer;size:ptrint):Pointer;external fpcmemdll;
+    function  SysMemSize(p:pointer):ptrint;external fpcmemdll;
+    function  SysGetHeapStatus:THeapStatus;external fpcmemdll;
+    function  SysGetFPCHeapStatus:TFPCHeapStatus;external fpcmemdll;
+
+    var
+      MemoryManager: TMemoryManager = (
+      NeedLock: true;
+      GetMem: nil;
+      FreeMem: nil;
+      FreeMemSize: nil;
+      AllocMem: nil;
+      ReAllocMem: nil;
+      MemSize: nil;
+      GetHeapStatus: nil;
+      GetFPCHeapStatus: nil;
+    );
+
+begin
+  with MemoryManager do
+    begin
+      GetMem:=@SysGetmem;
+      FreeMem:=@SysFreeMem;
+      FreeMemSize:=@SysFreeMemSize;
+      AllocMem:=@SysAllocMem;
+      ReAllocMem:=@SysReAllocMem;
+      MemSize:=@SysMemSize;
+      GetHeapStatus:=@SysGetHeapStatus;
+      GetFPCHeapStatus:=@SysGetFPCHeapStatus;
+    end;
+  SetMemoryManager(MemoryManager);
+end.

+ 187 - 42
rtl/win32/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/02]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/11]
 #
 #
 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-amiga 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 arm-gba 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-amiga 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 arm-gba powerpc64-linux
@@ -242,132 +242,258 @@ WINDIR=../win
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
 ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
 LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
 LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
+DLLS=
+else
+DLLS=fpcmemdll
 endif
 endif
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
 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)))
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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
+override TARGET_PROGRAMS+=$(DLLS)
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 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 sharemem fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=$(LOADERS)
 override TARGET_LOADERS+=$(LOADERS)
@@ -1783,6 +1909,23 @@ override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 endif
 endif
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+.PHONY: fpc_exes
+ifndef CROSSINSTALL
+ifneq ($(TARGET_PROGRAMS),)
+override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
+override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
+ifeq ($(OS_TARGET),os2)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+ifeq ($(OS_TARGET),emx)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+endif
+endif
+fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
 ifdef TARGET_RSTS
 ifdef TARGET_RSTS
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override CLEANRSTFILES+=$(RSTFILES)
 override CLEANRSTFILES+=$(RSTFILES)
@@ -2211,3 +2354,5 @@ winevent$(PPUEXT) : $(WINDIR)/winevent.pp windows$(PPUEXT)
 video$(PPUEXT) : $(WINDIR)/video.pp windows$(PPUEXT) dos$(PPUEXT)
 video$(PPUEXT) : $(WINDIR)/video.pp windows$(PPUEXT) dos$(PPUEXT)
 mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+fpcmemdll.exe : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)

+ 11 - 1
rtl/win32/Makefile.fpc

@@ -16,7 +16,10 @@ units=system ctypes objpas macpas strings \
       cpu mmx charset ucomplex getopts \
       cpu mmx charset ucomplex getopts \
       winevent sockets printer \
       winevent sockets printer \
       video mouse keyboard \
       video mouse keyboard \
-      winsysut fpmkunit
+      winsysut sharemem fpmkunit
+
+# fake dll
+programs=$(DLLS)
 
 
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 
 
@@ -47,6 +50,9 @@ UNITPREFIX=rtl
 
 
 ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
 ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
 LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
 LOADERS=wprt0 wdllprt0 gprt0 wcygprt0
+DLLS=
+else
+DLLS=fpcmemdll
 endif
 endif
 
 
 # Paths
 # Paths
@@ -235,3 +241,7 @@ video$(PPUEXT) : $(WINDIR)/video.pp windows$(PPUEXT) dos$(PPUEXT)
 mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 
 
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT)
+
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+
+fpcmemdll.exe : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)

+ 184 - 42
rtl/win64/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/02]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/11]
 #
 #
 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-amiga 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 arm-gba 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-amiga 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 arm-gba powerpc64-linux
@@ -246,127 +246,250 @@ endif
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
 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+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpmkunit
+override TARGET_PROGRAMS+=fpcmemdll.dll
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock winsock2 cmem rtlconsts sysconst sysutils math types strutils convutils dateutils varutils variants typinfo classes getopts sockets printer charset ucomplex winevent video mouse keyboard dynlibs crt messages fpcmemdll sharemem fpmkunit
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=$(LOADERS)
 override TARGET_LOADERS+=$(LOADERS)
@@ -1782,6 +1905,23 @@ override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 endif
 endif
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+.PHONY: fpc_exes
+ifndef CROSSINSTALL
+ifneq ($(TARGET_PROGRAMS),)
+override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
+override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
+ifeq ($(OS_TARGET),os2)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+ifeq ($(OS_TARGET),emx)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+endif
+endif
+fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
 ifdef TARGET_RSTS
 ifdef TARGET_RSTS
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override CLEANRSTFILES+=$(RSTFILES)
 override CLEANRSTFILES+=$(RSTFILES)
@@ -2210,3 +2350,5 @@ mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUE
 	$(COMPILER) $(WINDIR)/mouse.pp
 	$(COMPILER) $(WINDIR)/mouse.pp
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT) system$(PPUEXT)
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT) system$(PPUEXT)
 	$(COMPILER) $(WINDIR)/keyboard.pp
 	$(COMPILER) $(WINDIR)/keyboard.pp
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)

+ 8 - 1
rtl/win64/Makefile.fpc

@@ -17,7 +17,7 @@ units=system ctypes objpas macpas strings \
       sockets printer charset ucomplex \
       sockets printer charset ucomplex \
       winevent video mouse keyboard \
       winevent video mouse keyboard \
       dynlibs crt messages \
       dynlibs crt messages \
-      fpmkunit
+      fpcmemdll sharemem fpmkunit
 #     winsysut signals
 #     winsysut signals
 #     cpu mmx
 #     cpu mmx
 #     no cygwin so far
 #     no cygwin so far
@@ -25,6 +25,9 @@ units=system ctypes objpas macpas strings \
 
 
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 
 
+# fake dll
+programs=fpcmemdll
+
 [require]
 [require]
 nortl=y
 nortl=y
 
 
@@ -241,3 +244,7 @@ mouse$(PPUEXT) : $(WINDIR)/mouse.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUE
 
 
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT) system$(PPUEXT)
 keyboard$(PPUEXT) : $(WINDIR)/keyboard.pp windows$(PPUEXT) dos$(PPUEXT) winevent$(PPUEXT) system$(PPUEXT)
         $(COMPILER) $(WINDIR)/keyboard.pp
         $(COMPILER) $(WINDIR)/keyboard.pp
+
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)

+ 184 - 42
rtl/wince/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/02]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/11]
 #
 #
 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-amiga 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 arm-gba 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-amiga 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 arm-gba powerpc64-linux
@@ -249,127 +249,250 @@ GRAPHDIR=$(INC)/graph
 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)))
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem
+override TARGET_PROGRAMS+=fpcmemdll.dll
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
 endif
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
@@ -1512,6 +1635,23 @@ override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
 endif
 endif
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
 fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+.PHONY: fpc_exes
+ifndef CROSSINSTALL
+ifneq ($(TARGET_PROGRAMS),)
+override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
+override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
+ifeq ($(OS_TARGET),os2)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+ifeq ($(OS_TARGET),emx)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+endif
+endif
+fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
 ifdef TARGET_RSTS
 ifdef TARGET_RSTS
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override CLEANRSTFILES+=$(RSTFILES)
 override CLEANRSTFILES+=$(RSTFILES)
@@ -1916,3 +2056,5 @@ charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
 cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
 cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
 ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
 ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)

+ 9 - 1
rtl/wince/Makefile.fpc

@@ -16,7 +16,7 @@ units=$(SYSTEMUNIT) ctypes objpas macpas strings \
       varutils variants \
       varutils variants \
       matrix ucomplex \
       matrix ucomplex \
       charset getopts winsock winsock2 sockets \
       charset getopts winsock winsock2 sockets \
-      cmem
+      cmem sharemem
 #    initc  signals \
 #    initc  signals \
 #    crt graph \
 #    crt graph \
 #    wincrt winmouse winevent  printer \
 #    wincrt winmouse winevent  printer \
@@ -25,6 +25,9 @@ units=$(SYSTEMUNIT) ctypes objpas macpas strings \
 
 
 # rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 # rsts=math varutils typinfo variants classes dateutils sysconst fpmkunit
 
 
+# fake dll
+programs=fpcmemdll
+
 [require]
 [require]
 nortl=y
 nortl=y
 
 
@@ -226,3 +229,8 @@ ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 #
 #
 
 
 ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
 ctypes$(PPUEXT) :  $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
+
+sharemem$(PPUEXT) : $(WINDIR)/sharemem.pp system$(PPUEXT)
+
+fpcmemdll.dll : $(WINDIR)/fpcmemdll.pp system$(PPUEXT)
+

+ 9 - 4
tests/Makefile

@@ -1,8 +1,8 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/04/23]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/08/11]
 #
 #
 default: allexectests
 default: allexectests
-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-amiga 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 arm-gba powerpc64-linux
 BSDs = freebsd netbsd openbsd darwin
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx
 UNIXs = linux $(BSDs) solaris qnx
 LIMIT83fs = go32v2 os2 emx watcom
 LIMIT83fs = go32v2 os2 emx watcom
@@ -552,6 +552,11 @@ EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 SHORTSUFFIX=dwn
 SHORTSUFFIX=dwn
 endif
 endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
 else
 else
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
 PPUEXT=.pp1
@@ -620,7 +625,7 @@ endif
 ifeq ($(OS_TARGET),amiga)
 ifeq ($(OS_TARGET),amiga)
 EXEEXT=
 EXEEXT=
 PPUEXT=.ppu
 PPUEXT=.ppu
-ASMEXT=.asm
+ASMEXT=.s
 OEXT=.o
 OEXT=.o
 SMARTEXT=.sl
 SMARTEXT=.sl
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -1372,7 +1377,7 @@ endif
 ifndef LOG
 ifndef LOG
 export LOG:=$(TEST_OUTPUTDIR)/log
 export LOG:=$(TEST_OUTPUTDIR)/log
 endif
 endif
-TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects units/strings units/sysutils units/math
+TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem
 TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
 TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
 ifneq ($(findstring $(TEST_OS_TARGET),$(UNIXs)),)
 ifneq ($(findstring $(TEST_OS_TARGET),$(UNIXs)),)
 INUNIX=1
 INUNIX=1

+ 1 - 1
tests/Makefile.fpc

@@ -104,7 +104,7 @@ endif
 
 
 
 
 # Subdirs available in the test subdir
 # Subdirs available in the test subdir
-TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects units/strings units/sysutils units/math
+TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects units/strings units/sysutils units/math units/sharemem
 
 
 # All full dirnames in the test/ dir including the subdir self
 # All full dirnames in the test/ dir including the subdir self
 TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
 TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))

+ 15 - 0
tests/test/units/sharemem/libtest.pp

@@ -0,0 +1,15 @@
+{ %target=win32,win64,wince}
+library LibTest;
+
+uses
+  sharemem;
+
+function LibFunction : pointer; stdcall;
+begin
+  getmem(result,10000);
+end;
+
+
+exports
+  LibFunction;
+end.

+ 39 - 0
tests/test/units/sharemem/test1.pp

@@ -0,0 +1,39 @@
+{ %target=win32,win64,wince}
+program TestFreeLib;
+
+uses
+{$IFDEF MSWINDOWS}
+  sharemem,
+  Windows;
+{$ELSE}
+  DynLibs;
+{$ENDIF}
+
+const
+{$IFDEF MSWINDOWS}
+  DllName = 'libtest.dll';
+{$ELSE}
+ {$IFDEF DARWIN}
+  DllName = 'liblibtest.dylib';
+ {$ELSE}
+  DllName = 'liblibtest.so';
+ {$ENDIF}
+{$ENDIF}
+
+var
+{$IFDEF MSWINDOWS}
+  DllHandle : THandle;
+{$ELSE}
+  DllHandle : TLibHandle;
+{$ENDIF}
+
+var
+  InStr : string;
+  status : TFPCHeapstatus;
+  f : function : pointer;stdcall;
+begin
+  DllHandle := LoadLibrary(DllName);
+  pointer(f):=getprocaddress(Dllhandle,'LibFunction');
+  freemem(f());
+  FreeLibrary(DllHandle);
+end.