فهرست منبع

+ added unit dynlibs to the win16 rtl

git-svn-id: trunk@31901 -
nickysn 9 سال پیش
والد
کامیت
c9b3279e3c
5فایلهای تغییر یافته به همراه118 افزوده شده و 89 حذف شده
  1. 1 0
      .gitattributes
  2. 6 6
      rtl/inc/dynlibs.pas
  3. 84 82
      rtl/win16/Makefile
  4. 8 1
      rtl/win16/Makefile.fpc
  5. 19 0
      rtl/win16/dynlibs.inc

+ 1 - 0
.gitattributes

@@ -9706,6 +9706,7 @@ rtl/win/winres.inc svneol=native#text/plain
 rtl/win16/Makefile svneol=native#text/plain
 rtl/win16/Makefile.fpc svneol=native#text/plain
 rtl/win16/dos.pp svneol=native#text/plain
+rtl/win16/dynlibs.inc svneol=native#text/plain
 rtl/win16/glbheap.inc svneol=native#text/plain
 rtl/win16/glbheaph.inc svneol=native#text/plain
 rtl/win16/locheap.inc svneol=native#text/plain

+ 6 - 6
rtl/inc/dynlibs.pas

@@ -32,15 +32,15 @@ Function LoadLibrary(const Name : RawByteString) : TLibHandle; inline;
 Function SafeLoadLibrary(const Name : UnicodeString) : TLibHandle; inline;
 Function LoadLibrary(const Name : UnicodeString) : TLibHandle; inline;
 
-Function GetProcedureAddress(Lib : TlibHandle; const ProcName : AnsiString) : Pointer; inline;
-Function GetProcedureAddress(Lib : TLibHandle; Ordinal: TOrdinalEntry) : Pointer; inline;
+Function GetProcedureAddress(Lib : TlibHandle; const ProcName : AnsiString) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif}; inline;
+Function GetProcedureAddress(Lib : TLibHandle; Ordinal: TOrdinalEntry) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif}; inline;
 Function UnloadLibrary(Lib : TLibHandle) : Boolean; inline;
 Function GetLoadErrorStr: string; inline;
 
 // Kylix/Delphi compability
 
 Function FreeLibrary(Lib : TLibHandle) : Boolean; inline;
-Function GetProcAddress(Lib : TlibHandle; const ProcName : AnsiString) : Pointer; inline;
+Function GetProcAddress(Lib : TlibHandle; const ProcName : AnsiString) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif}; inline;
 
 Type
   HModule = TLibHandle; 
@@ -73,12 +73,12 @@ begin
 end;
 
 
-Function GetProcedureAddress(Lib : TLibHandle; const ProcName: AnsiString) : Pointer;
+Function GetProcedureAddress(Lib : TLibHandle; const ProcName: AnsiString) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif};
 begin
   Result:=System.GetProcedureAddress(Lib, ProcName);
 end;
 
-Function GetProcedureAddress(Lib : TLibHandle; Ordinal : TOrdinalEntry) : Pointer;
+Function GetProcedureAddress(Lib : TLibHandle; Ordinal : TOrdinalEntry) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif};
 begin
   Result:=System.GetProcedureAddress(Lib, Ordinal);
 end;
@@ -99,7 +99,7 @@ begin
   Result:=System.FreeLibrary(lib);
 end;
 
-Function GetProcAddress(Lib : TlibHandle; const ProcName : AnsiString) : Pointer;
+Function GetProcAddress(Lib : TlibHandle; const ProcName : AnsiString) : {$ifdef cpui8086}FarPointer{$else}Pointer{$endif};
 
 begin
   Result:=System.GetProcedureAddress(Lib,Procname);

+ 84 - 82
rtl/win16/Makefile

@@ -349,250 +349,250 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-aros)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-iphonesim)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-aros)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),x86_64-dragonfly)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),mipsel-embedded)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i8086-win16)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),aarch64-linux)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),aarch64-darwin)
-override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31
+override TARGET_UNITS+=system uuchar objpas strings dos wintypes winprocs win31 dynlibs
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=prt0s prt0m prt0c prt0l prt0h
@@ -2591,6 +2591,8 @@ winprocs$(PPUEXT) : wintypes$(PPUEXT) winprocs.pp winprocsh.inc winprocs.inc
 win31$(PPUEXT) : wintypes$(PPUEXT) win31.pp
 	$(COMPILER) win31.pp
 	$(EXECPPAS)
+dynlibs$(PPUEXT) : $(INC)/dynlibs.pas dynlibs.inc objpas$(PPUEXT)
+	$(COMPILER) $(INC)/dynlibs.pas
 dos$(PPUEXT) : dos.pp registers.inc \
 	       $(INC)/dosh.inc $(INC)/dos.inc $(INC)/fexpand.inc \
 	       strings$(PPUEXT) wintypes$(PPUEXT) winprocs$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)

+ 8 - 1
rtl/win16/Makefile.fpc

@@ -6,7 +6,7 @@ main=rtl
 [target]
 loaders=prt0s prt0m prt0c prt0l prt0h 
 units=system uuchar objpas strings dos \
-      wintypes winprocs win31
+      wintypes winprocs win31 dynlibs
 
 
 [require]
@@ -104,6 +104,13 @@ win31$(PPUEXT) : wintypes$(PPUEXT) win31.pp
 	$(COMPILER) win31.pp
 	$(EXECPPAS)
 
+#
+# $(SYSTEMUNIT) Dependent Units
+#
+
+dynlibs$(PPUEXT) : $(INC)/dynlibs.pas dynlibs.inc objpas$(PPUEXT)
+	$(COMPILER) $(INC)/dynlibs.pas
+
 #
 # TP7 Compatible RTL Units
 #

+ 19 - 0
rtl/win16/dynlibs.inc

@@ -0,0 +1,19 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by the Free Pascal development team
+
+    Implements OS dependent part for loading of dynamic libraries.
+
+    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.
+
+ **********************************************************************}
+
+procedure InitDynLibs; inline;
+begin
+  { nothing to do here since Windows DynLibs is done in System }
+end;