Browse Source

* Dotted filenames for package rtl-extra

Michaël Van Canneyt 2 years ago
parent
commit
db83f9ea44
49 changed files with 444 additions and 145 deletions
  1. 3 0
      packages/rtl-extra/namespaced/System.Matrix.pp
  2. 3 0
      packages/rtl-extra/namespaced/System.Net.Sockets.pp
  3. 3 0
      packages/rtl-extra/namespaced/System.Objects.pp
  4. 3 0
      packages/rtl-extra/namespaced/System.Printer.pp
  5. 3 0
      packages/rtl-extra/namespaced/System.Real48utils.pp
  6. 3 0
      packages/rtl-extra/namespaced/System.Serial.pp
  7. 3 0
      packages/rtl-extra/namespaced/System.Sockets.pp
  8. 3 0
      packages/rtl-extra/namespaced/System.Sortalgs.pp
  9. 3 0
      packages/rtl-extra/namespaced/System.Ucomplex.pp
  10. 3 0
      packages/rtl-extra/namespaced/UnixApi.Clocale.pp
  11. 3 0
      packages/rtl-extra/namespaced/UnixApi.Gpm.pp
  12. 3 0
      packages/rtl-extra/namespaced/UnixApi.Ipc.pp
  13. 3 0
      packages/rtl-extra/namespaced/UnixApi.Serial.pp
  14. 3 0
      packages/rtl-extra/namespaced/UnixApi.Sockets.pp
  15. 3 0
      packages/rtl-extra/namespaced/WinApi.Winsock.pp
  16. 3 0
      packages/rtl-extra/namespaced/WinApi.Winsock2.pp
  17. 62 0
      packages/rtl-extra/namespaces.lst
  18. 2 0
      packages/rtl-extra/src/amiga/printer.pp
  19. 7 0
      packages/rtl-extra/src/amiga/sockets.pp
  20. 7 0
      packages/rtl-extra/src/android/clocale.pp
  21. 7 0
      packages/rtl-extra/src/aros/sockets.pp
  22. 2 0
      packages/rtl-extra/src/atari/printer.pp
  23. 2 0
      packages/rtl-extra/src/go32v2/printer.pp
  24. 2 0
      packages/rtl-extra/src/inc/matrix.pp
  25. 2 0
      packages/rtl-extra/src/inc/objects.pp
  26. 2 0
      packages/rtl-extra/src/inc/real48utils.pp
  27. 7 0
      packages/rtl-extra/src/inc/sortalgs.pp
  28. 6 0
      packages/rtl-extra/src/inc/ucomplex.pp
  29. 2 0
      packages/rtl-extra/src/msdos/printer.pp
  30. 7 0
      packages/rtl-extra/src/netware/sockets.pp
  31. 2 0
      packages/rtl-extra/src/netwcomn/winsock.pp
  32. 7 0
      packages/rtl-extra/src/netwlibc/sockets.pp
  33. 2 0
      packages/rtl-extra/src/os2/printer.pp
  34. 12 0
      packages/rtl-extra/src/os2commn/sockets.pp
  35. 7 0
      packages/rtl-extra/src/unix/clocale.pp
  36. 11 0
      packages/rtl-extra/src/unix/gpm.pp
  37. 20 1
      packages/rtl-extra/src/unix/ipc.pp
  38. 6 0
      packages/rtl-extra/src/unix/printer.pp
  39. 6 0
      packages/rtl-extra/src/unix/serial.pp
  40. 17 3
      packages/rtl-extra/src/unix/sockets.pp
  41. 7 0
      packages/rtl-extra/src/unix/unixsockets.pp
  42. 118 118
      packages/rtl-extra/src/win/fpwinsockh.inc
  43. 2 0
      packages/rtl-extra/src/win/printer.pp
  44. 9 3
      packages/rtl-extra/src/win/serial.pp
  45. 27 20
      packages/rtl-extra/src/win/sockets.pp
  46. 7 0
      packages/rtl-extra/src/win/winsock.pp
  47. 6 0
      packages/rtl-extra/src/win/winsock2.pp
  48. 7 0
      packages/rtl-extra/src/wince/winsock.pp
  49. 6 0
      packages/rtl-extra/src/wince/winsock2.pp

+ 3 - 0
packages/rtl-extra/namespaced/System.Matrix.pp

@@ -0,0 +1,3 @@
+unit System.Matrix;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i matrix.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Net.Sockets.pp

@@ -0,0 +1,3 @@
+unit System.Net.Sockets;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i sockets.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Objects.pp

@@ -0,0 +1,3 @@
+unit System.Objects;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i objects.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Printer.pp

@@ -0,0 +1,3 @@
+unit System.Printer;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i printer.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Real48utils.pp

@@ -0,0 +1,3 @@
+unit System.Real48utils;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i real48utils.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Serial.pp

@@ -0,0 +1,3 @@
+unit System.Serial;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i serial.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Sockets.pp

@@ -0,0 +1,3 @@
+unit System.Sockets;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i sockets.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Sortalgs.pp

@@ -0,0 +1,3 @@
+unit System.Sortalgs;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i sortalgs.pp}

+ 3 - 0
packages/rtl-extra/namespaced/System.Ucomplex.pp

@@ -0,0 +1,3 @@
+unit System.Ucomplex;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i ucomplex.pp}

+ 3 - 0
packages/rtl-extra/namespaced/UnixApi.Clocale.pp

@@ -0,0 +1,3 @@
+unit UnixApi.Clocale;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i clocale.pp}

+ 3 - 0
packages/rtl-extra/namespaced/UnixApi.Gpm.pp

@@ -0,0 +1,3 @@
+unit UnixApi.Gpm;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i gpm.pp}

+ 3 - 0
packages/rtl-extra/namespaced/UnixApi.Ipc.pp

@@ -0,0 +1,3 @@
+unit UnixApi.Ipc;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i ipc.pp}

+ 3 - 0
packages/rtl-extra/namespaced/UnixApi.Serial.pp

@@ -0,0 +1,3 @@
+unit UnixApi.Serial;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i serial.pp}

+ 3 - 0
packages/rtl-extra/namespaced/UnixApi.Sockets.pp

@@ -0,0 +1,3 @@
+unit UnixApi.Sockets;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i unixsockets.pp}

+ 3 - 0
packages/rtl-extra/namespaced/WinApi.Winsock.pp

@@ -0,0 +1,3 @@
+unit WinApi.Winsock;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i winsock.pp}

+ 3 - 0
packages/rtl-extra/namespaced/WinApi.Winsock2.pp

@@ -0,0 +1,3 @@
+unit WinApi.Winsock2;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i winsock2.pp}

+ 62 - 0
packages/rtl-extra/namespaces.lst

@@ -0,0 +1,62 @@
+src/atari/printer.pp=namespaced/System.Printer.pp
+{s*:src/atari/}=namespaced/
+{i+:src/atari/}
+src/go32v2/printer.pp=namespaced/System.Printer.pp
+{s*:src/go32v2/}=namespaced/
+{i+:src/go32v2/}
+src/os2commn/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/os2commn/}=namespaced/
+{i+:src/os2commn/}
+src/os2commn/winsock.pp=namespaced/System.Net.Winsock.pp
+src/inc/ucomplex.pp=namespaced/System.Ucomplex.pp
+{s*:src/inc/}=namespaced/
+{i+:src/inc/}
+src/inc/objects.pp=namespaced/System.Objects.pp
+src/inc/sortalgs.pp=namespaced/System.Sortalgs.pp
+src/inc/matrix.pp=namespaced/System.Matrix.pp
+src/inc/real48utils.pp=namespaced/System.Real48utils.pp
+src/win/winsock2.pp=namespaced/WinApi.Winsock2.pp
+{s*:src/win/}=namespaced/
+{i+:src/win/}
+src/win/sockets.pp=namespaced/System.Net.Sockets.pp
+src/win/serial.pp=namespaced/System.Serial.pp
+src/win/winsock.pp=namespaced/WinApi.Winsock.pp
+src/win/printer.pp=namespaced/System.Printer.pp
+src/netwlibc/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/netwlibc/}=namespaced/
+{i+:src/netwlibc/}
+src/amiga/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/amiga/}=namespaced/
+{i+:src/amiga/}
+src/amiga/printer.pp=namespaced/System.Printer.pp
+src/netware/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/netware/}=namespaced/
+{i+:src/netware/}
+src/msdos/printer.pp=namespaced/System.Printer.pp
+{s*:src/msdos/}=namespaced/
+{i+:src/msdos/}
+src/unix/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/unix/}=namespaced/
+{i+:src/unix/}
+src/unix/gpm.pp=namespaced/UnixApi.Gpm.pp
+src/unix/serial.pp=namespaced/UnixApi.Serial.pp
+src/unix/clocale.pp=namespaced/UnixApi.Clocale.pp
+src/unix/ipc.pp=namespaced/UnixApi.Ipc.pp
+src/unix/printer.pp=namespaced/System.Printer.pp
+src/unix/unixsockets.pp=namespaced/UnixApi.Sockets.pp
+src/os2/printer.pp=namespaced/System.Printer.pp
+{s*:src/os2/}=namespaced/
+{i+:src/os2/}
+src/aros/sockets.pp=namespaced/System.Net.Sockets.pp
+{s*:src/aros/}=namespaced/
+{i+:src/aros/}
+src/android/clocale.pp=namespaced/UnixApi.Clocale.pp
+{s*:src/android/}=namespaced/
+{i+:src/android/}
+src/wince/winsock2.pp=namespaced/WinApi.Winsock2.pp
+{s*:src/wince/}=namespaced/
+{i+:src/wince/}
+src/wince/winsock.pp=namespaced/WinApi.Winsock.pp
+src/netwcomn/winsock.pp=namespaced/WinApi.Winsock.pp
+{s*:src/netwcomn/}=namespaced/
+{i+:src/netwcomn/}

+ 2 - 0
packages/rtl-extra/src/amiga/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 interface
 
 {$I printerh.inc}

+ 7 - 0
packages/rtl-extra/src/amiga/sockets.pp

@@ -14,12 +14,19 @@
 {.$DEFINE SOCKETS_DEBUG}
 {$ModeSwitch out}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.CTypes,Amiga.Core.Exec;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   ctypes,exec;
+{$ENDIF FPC_DOTTEDUNITS}
 
 type
     size_t   = cuint32;         { as definied in the C standard}

+ 7 - 0
packages/rtl-extra/src/android/clocale.pp

@@ -12,14 +12,21 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  **********************************************************************}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit clocale;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$mode objfpc}
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  UnixApi.CWString, System.SysUtils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   cwstring, SysUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 procedure GetAndroidFormatSettings(var ASettings: TFormatSettings; ALocale: utf8string = '');
 

+ 7 - 0
packages/rtl-extra/src/aros/sockets.pp

@@ -14,11 +14,18 @@
 {.$DEFINE SOCKETS_DEBUG}
 {$ModeSwitch out}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 Interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.CTypes,Amiga.Core.Exec;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   ctypes,exec;
+{$ENDIF FPC_DOTTEDUNITS}
 
 type
     size_t   = cuint32;         { as definied in the C standard}

+ 2 - 0
packages/rtl-extra/src/atari/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 interface
 
 {$I printerh.inc}

+ 2 - 0
packages/rtl-extra/src/go32v2/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 
 interface
 

+ 2 - 0
packages/rtl-extra/src/inc/matrix.pp

@@ -1,4 +1,6 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit matrix;
+{$ENDIF FPC_DOTTEDUNITS}
 {
     This file is part of the Free Pascal run time library.
     Copyright (c) 2004 by Daniel Mantione

+ 2 - 0
packages/rtl-extra/src/inc/objects.pp

@@ -33,7 +33,9 @@
 {    Free Vision project coordinator Balazs Scheidler      }
 {    [email protected]                                     }
 {                                                          }
+{$IFNDEF FPC_DOTTEDUNITS}
 UNIT Objects;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$ifdef cpullvm}
 {$define TYPED_LOCAL_CALLBACKS}

+ 2 - 0
packages/rtl-extra/src/inc/real48utils.pp

@@ -1,4 +1,6 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Real48Utils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$mode objfpc}{$H+}
 

+ 7 - 0
packages/rtl-extra/src/inc/sortalgs.pp

@@ -15,14 +15,21 @@
 
  **********************************************************************}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit SortAlgs;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$MODE objfpc}
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SortBase;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   SortBase;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {
                        HeapSort

+ 6 - 0
packages/rtl-extra/src/inc/ucomplex.pp

@@ -11,7 +11,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 Unit UComplex;
+{$ENDIF FPC_DOTTEDUNITS}
 {$INLINE ON}
 {$define TEST_INLINE}
 
@@ -23,7 +25,11 @@ Unit UComplex;
   interface
 
 {$ifndef FPUNONE}
+{$IFDEF FPC_DOTTEDUNITS}
+    uses System.Math;
+{$ELSE FPC_DOTTEDUNITS}
     uses math;
+{$ENDIF FPC_DOTTEDUNITS}
 
     type complex = record
                      re : real;

+ 2 - 0
packages/rtl-extra/src/msdos/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 
 interface
 

+ 7 - 0
packages/rtl-extra/src/netware/sockets.pp

@@ -14,7 +14,9 @@
 {$mode objfpc}
 {$ModeSwitch out}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Interface
 
@@ -23,8 +25,13 @@ Interface
 
 {$R-}
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses
+  WinApi.Winsock;
+{$ELSE FPC_DOTTEDUNITS}
 Uses
   winsock;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Type
   cushort=word;

+ 2 - 0
packages/rtl-extra/src/netwcomn/winsock.pp

@@ -20,7 +20,9 @@
 {$PACKRECORDS 1}
 {$R-}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit winsock;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$mode objfpc}
 

+ 7 - 0
packages/rtl-extra/src/netwlibc/sockets.pp

@@ -14,7 +14,9 @@
 {$mode objfpc}
 {$ModeSwitch out}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Interface
 
@@ -23,8 +25,13 @@ Interface
 
 {$R-}
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses
+  WinApi.Winsock;
+{$ELSE FPC_DOTTEDUNITS}
 Uses
   winsock;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Type
   cushort=word;

+ 2 - 0
packages/rtl-extra/src/os2/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 interface
 
 {$I printerh.inc}

+ 12 - 0
packages/rtl-extra/src/os2commn/sockets.pp

@@ -18,12 +18,19 @@
 { $DEFINE notUnix}      // To make ssockets.pp compile
 {$ModeSwitch out}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  OS2Api.so32dll, System.CTypes;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   so32dll, ctypes;
+{$ENDIF FPC_DOTTEDUNITS}
 
 const
   AF_UNSPEC      = so32dll.AF_UNSPEC;      // unspecified
@@ -587,8 +594,13 @@ function NativeSocket (AEMXSocket: cInt): cInt;
 
 Implementation
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  OS2Api.doscalls;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   DosCalls;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {******************************************************************************
                           Basic Socket Functions

+ 7 - 0
packages/rtl-extra/src/unix/clocale.pp

@@ -14,7 +14,9 @@
 
 { Initial implementation by petr kristan }
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit clocale;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$ifdef android}
   {$error This unit is not intended for Android. Something wrong with the make file. }
@@ -43,8 +45,13 @@ implementation
 
 {$linklib c}
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses
+  System.SysUtils, UnixApi.Types, System.InitC;
+{$ELSE FPC_DOTTEDUNITS}
 Uses
   SysUtils, unixtype, initc;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Const
 {$if defined(BSD) or defined(SUNOS) or defined(aix)}

+ 11 - 0
packages/rtl-extra/src/unix/gpm.pp

@@ -12,7 +12,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit gpm;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {Note: Libgpm is *the* interface for Linux text-mode programs.
        Unfortunately it isn't suitable for anything else besides a blocky
@@ -26,8 +28,13 @@ unit gpm;
                                     interface
 {*****************************************************************************}
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  UnixApi.Base;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   baseUnix;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$ifdef use_external}
 {$linklib gpm}
@@ -207,7 +214,11 @@ function gpm_getsnapshot(var eptr:Tgpmevent):longint;inline;
 {*****************************************************************************}
 
 {$ifndef use_external}
+{$IFDEF FPC_DOTTEDUNITS}
+uses  UnixApi.TermIO,System.Net.Sockets,System.Strings,UnixApi.Unix;
+{$ELSE FPC_DOTTEDUNITS}
 uses  termio,sockets,strings,unix;
+{$ENDIF FPC_DOTTEDUNITS}
 
 type  Pgpm_stst=^Tgpm_stst;
       Tgpm_stst=record

+ 20 - 1
packages/rtl-extra/src/unix/ipc.pp

@@ -12,16 +12,25 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
-
+{$IFNDEF FPC_DOTTEDUNITS}
 unit ipc;
+{$ENDIF}
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses
+{$ifdef FPC_USE_LIBC}
+  System.InitC,
+{$endif}
+  UnixApi.Base,UnixApi.Types;
+{$ELSE FPC_DOTTEDUNITS}
 Uses
 {$ifdef FPC_USE_LIBC}
   initc,
 {$endif}
   BaseUnix,UnixType;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$i osdefs.inc}       { Compile time defines }
 
@@ -882,10 +891,20 @@ Function semtimedop(semid:cint; sops: psembuf; nsops: size_t; timeOut: ptimespec
 
 implementation
 
+{$IFDEF FPC_DOTTEDUNITS}
+
+{$ifndef FPC_USE_LIBC}
+uses UnixApi.SysCall;
+{$endif ndef FPC_USE_LIBC}
+
+{$ELSE}
+
 {$ifndef FPC_USE_LIBC}
 uses Syscall;
 {$endif ndef FPC_USE_LIBC}
 
+{$ENDIF}
+
 {$ifndef FPC_USE_LIBC}
  {$if defined(Linux)}
   {$if defined(cpux86_64) or defined(cpuaarch64) or defined(cpuriscv32) or defined(cpuriscv64) or defined(cpuxtensa) or defined(cpuloongarch64) or defined(NO_SYSCALL_IPC)}

+ 6 - 0
packages/rtl-extra/src/unix/printer.pp

@@ -29,7 +29,9 @@
 
   ---------------------------------------------------------------------}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 Unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Interface
 
@@ -56,7 +58,11 @@ Procedure AssignLst ( Var F : text; ToFile : string);
 }
 
 Implementation
+{$IFDEF FPC_DOTTEDUNITS}
+Uses UnixApi.Unix,UnixApi.Base,System.Strings;
+{$ELSE FPC_DOTTEDUNITS}
 Uses Unix,BaseUnix,Strings;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$I printer.inc}
 

+ 6 - 0
packages/rtl-extra/src/unix/serial.pp

@@ -2,7 +2,9 @@
   (c) 2000 Sebastian Guenther, [email protected]; modified MarkMLl 2012.
 }
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Serial;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$MODE objfpc}
 {$H+}
@@ -10,7 +12,11 @@ unit Serial;
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses UnixApi.Base,UnixApi.TermIO,UnixApi.Unix;
+{$ELSE FPC_DOTTEDUNITS}
 uses BaseUnix,termio,unix;
+{$ENDIF FPC_DOTTEDUNITS}
 
 type
 

+ 17 - 3
packages/rtl-extra/src/unix/sockets.pp

@@ -10,14 +10,23 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 Interface
 {$ModeSwitch out}
 
 {$ifdef Unix}
+
+{$IFDEF FPC_DOTTEDUNITS}
+Uses UnixApi.Base,UnixApi.Types;
+{$ELSE}
 Uses baseunix,UnixType;
+{$ENDIF}
+
 {$endif}
 
+
 {$i osdefs.inc}       { Compile time defines }
 
 {$if 
@@ -29,7 +38,7 @@ Uses baseunix,UnixType;
 {$endif}
 
 Type 
- TSockLen = BaseUnix.TSocklen;
+ TSockLen = {$IFDEF FPC_DOTTEDUNITS}UnixApi.Base{$ELSE}BaseUnix{$ENDIF}.TSocklen;
 
 {$i unxsockh.inc}
 {$i socketsh.inc}
@@ -76,8 +85,13 @@ Function Accept(Sock:longint;var addr:ansistring;var SockIn,SockOut:File):Boolea
 
 Implementation
 
-Uses {$ifndef FPC_USE_LIBC}SysCall{$else}initc{$endif};
-
+{$IFDEF FPC_DOTTEDUNITS}
+Uses 
+  {$ifndef FPC_USE_LIBC}UnixApi.SysCall{$else}System.InitC{$endif};
+{$ELSE}
+Uses 
+  {$ifndef FPC_USE_LIBC}SysCall{$else}initc{$endif};
+{$ENDIF}
 threadvar internal_socketerror : cint;
 
 {******************************************************************************

+ 7 - 0
packages/rtl-extra/src/unix/unixsockets.pp

@@ -1,4 +1,6 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit unixsockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$mode objfpc}{$H+}
 
@@ -6,8 +8,13 @@ unit unixsockets;
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.CTypes, UnixApi.Base;
+{$ELSE FPC_DOTTEDUNITS}
 uses
   cTypes, BaseUnix;
+{$ENDIF FPC_DOTTEDUNITS}
   
 {$unixsocketsh.inc}
 

+ 118 - 118
packages/rtl-extra/src/win/fpwinsockh.inc

@@ -4,33 +4,33 @@
 
 const
 { Address families. }
-  AF_UNSPEC       = winsock2.AF_UNSPEC;               { unspecified }
-  AF_UNIX         = winsock2.AF_UNIX;               { local to host (pipes, portals) }
-  AF_INET         = winsock2.AF_INET;               { internetwork: UDP, TCP, etc. }
-  AF_IMPLINK      = winsock2.AF_IMPLINK;               { arpanet imp addresses }
-  AF_PUP          = winsock2.AF_PUP;               { pup protocols: e.g. BSP }
-  AF_CHAOS        = winsock2.AF_CHAOS;               { mit CHAOS protocols }
-  AF_IPX          = winsock2.AF_IPX;               { IPX and SPX }
-  AF_NS           = winsock2.AF_NS;               { XEROX NS protocols }
-  AF_ISO          = winsock2.AF_ISO;               { ISO protocols }
-  AF_OSI          = winsock2.AF_OSI;          { OSI is ISO }
-  AF_ECMA         = winsock2.AF_ECMA;               { european computer manufacturers }
-  AF_DATAKIT      = winsock2.AF_DATAKIT;               { datakit protocols }
-  AF_CCITT        = winsock2.AF_CCITT;              { CCITT protocols, X.25 etc }
-  AF_SNA          = winsock2.AF_SNA;              { IBM SNA }
-  AF_DECnet       = winsock2.AF_DECnet;              { DECnet }
-  AF_DLI          = winsock2.AF_DLI;              { Direct data link interface }
-  AF_LAT          = winsock2.AF_LAT;              { LAT }
-  AF_HYLINK       = winsock2.AF_HYLINK;              { NSC Hyperchannel }
-  AF_APPLETALK    = winsock2.AF_APPLETALK;              { AppleTalk }
-  AF_NETBIOS      = winsock2.AF_NETBIOS;              { NetBios-style addresses }
-  AF_VOICEVIEW    = winsock2.AF_VOICEVIEW;              { VoiceView }
-  AF_FIREFOX      = winsock2.AF_FIREFOX;              { FireFox }
-  AF_UNKNOWN1     = winsock2.AF_UNKNOWN1;              { Somebody is using this! }
-  AF_BAN          = winsock2.AF_BAN;              { Banyan }
-  AF_ATM          = winsock2.AF_ATM; // Native ATM Services
-  AF_INET6        = winsock2.AF_INET6; // Internetwork Version 6
-  AF_MAX          = winsock2.AF_MAX;
+  AF_UNSPEC       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_UNSPEC;               { unspecified }
+  AF_UNIX         = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_UNIX;               { local to host (pipes, portals) }
+  AF_INET         = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_INET;               { internetwork: UDP, TCP, etc. }
+  AF_IMPLINK      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_IMPLINK;               { arpanet imp addresses }
+  AF_PUP          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_PUP;               { pup protocols: e.g. BSP }
+  AF_CHAOS        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_CHAOS;               { mit CHAOS protocols }
+  AF_IPX          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_IPX;               { IPX and SPX }
+  AF_NS           = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_NS;               { XEROX NS protocols }
+  AF_ISO          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_ISO;               { ISO protocols }
+  AF_OSI          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_OSI;          { OSI is ISO }
+  AF_ECMA         = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_ECMA;               { european computer manufacturers }
+  AF_DATAKIT      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_DATAKIT;               { datakit protocols }
+  AF_CCITT        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_CCITT;              { CCITT protocols, X.25 etc }
+  AF_SNA          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_SNA;              { IBM SNA }
+  AF_DECnet       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_DECnet;              { DECnet }
+  AF_DLI          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_DLI;              { Direct data link interface }
+  AF_LAT          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_LAT;              { LAT }
+  AF_HYLINK       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_HYLINK;              { NSC Hyperchannel }
+  AF_APPLETALK    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_APPLETALK;              { AppleTalk }
+  AF_NETBIOS      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_NETBIOS;              { NetBios-style addresses }
+  AF_VOICEVIEW    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_VOICEVIEW;              { VoiceView }
+  AF_FIREFOX      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_FIREFOX;              { FireFox }
+  AF_UNKNOWN1     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_UNKNOWN1;              { Somebody is using this! }
+  AF_BAN          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_BAN;              { Banyan }
+  AF_ATM          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_ATM; // Native ATM Services
+  AF_INET6        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_INET6; // Internetwork Version 6
+  AF_MAX          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.AF_MAX;
 
   PF_UNSPEC       = AF_UNSPEC;
   PF_UNIX         = AF_UNIX;
@@ -61,71 +61,71 @@ const
   PF_MAX          = AF_MAX;
 
 { Protocols }
-  IPPROTO_IP     =  winsock2.IPPROTO_IP;
-  IPPROTO_ICMP   =  winsock2.IPPROTO_ICMP;
-  IPPROTO_IGMP   =  winsock2.IPPROTO_IGMP;
-  IPPROTO_GGP    =  winsock2.IPPROTO_GGP;
-  IPPROTO_TCP    =  winsock2.IPPROTO_TCP;
-  IPPROTO_PUP    =  winsock2.IPPROTO_PUP;
-  IPPROTO_UDP    =  winsock2.IPPROTO_UDP;
-  IPPROTO_IDP    =  winsock2.IPPROTO_IDP;
-  IPPROTO_ND     =  winsock2.IPPROTO_ND;
-
-  IPPROTO_RAW    =  winsock2.IPPROTO_RAW;
-  IPPROTO_MAX    =  winsock2.IPPROTO_MAX;
+  IPPROTO_IP     =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_IP;
+  IPPROTO_ICMP   =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_ICMP;
+  IPPROTO_IGMP   =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_IGMP;
+  IPPROTO_GGP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_GGP;
+  IPPROTO_TCP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_TCP;
+  IPPROTO_PUP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_PUP;
+  IPPROTO_UDP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_UDP;
+  IPPROTO_IDP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_IDP;
+  IPPROTO_ND     =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_ND;
+
+  IPPROTO_RAW    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_RAW;
+  IPPROTO_MAX    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPROTO_MAX;
 
 { Port/socket numbers: network standard functions}
 
-  IPPORT_ECHO    =  winsock2.IPPORT_ECHO;
-  IPPORT_DISCARD =  winsock2.IPPORT_DISCARD;
-  IPPORT_SYSTAT  =  winsock2.IPPORT_SYSTAT;
-  IPPORT_DAYTIME =  winsock2.IPPORT_DAYTIME;
-  IPPORT_NETSTAT =  winsock2.IPPORT_NETSTAT;
-  IPPORT_FTP     =  winsock2.IPPORT_FTP;
-  IPPORT_TELNET  =  winsock2.IPPORT_TELNET;
-  IPPORT_SMTP    =  winsock2.IPPORT_SMTP;
-  IPPORT_TIMESERVER  =  winsock2.IPPORT_TIMESERVER;
-  IPPORT_NAMESERVER  =  winsock2.IPPORT_NAMESERVER;
-  IPPORT_WHOIS       =  winsock2.IPPORT_WHOIS;
-  IPPORT_MTP         =  winsock2.IPPORT_MTP;
+  IPPORT_ECHO    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_ECHO;
+  IPPORT_DISCARD =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_DISCARD;
+  IPPORT_SYSTAT  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_SYSTAT;
+  IPPORT_DAYTIME =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_DAYTIME;
+  IPPORT_NETSTAT =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_NETSTAT;
+  IPPORT_FTP     =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_FTP;
+  IPPORT_TELNET  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_TELNET;
+  IPPORT_SMTP    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_SMTP;
+  IPPORT_TIMESERVER  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_TIMESERVER;
+  IPPORT_NAMESERVER  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_NAMESERVER;
+  IPPORT_WHOIS       =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_WHOIS;
+  IPPORT_MTP         =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_MTP;
 
 { Port/socket numbers: host specific functions }
 
-  IPPORT_TFTP        =  winsock2.IPPORT_TFTP;
-  IPPORT_RJE         =  winsock2.IPPORT_RJE;
-  IPPORT_FINGER      =  winsock2.IPPORT_FINGER;
-  IPPORT_TTYLINK     =  winsock2.IPPORT_TTYLINK;
-  IPPORT_SUPDUP      =  winsock2.IPPORT_SUPDUP;
+  IPPORT_TFTP        =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_TFTP;
+  IPPORT_RJE         =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_RJE;
+  IPPORT_FINGER      =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_FINGER;
+  IPPORT_TTYLINK     =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_TTYLINK;
+  IPPORT_SUPDUP      =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_SUPDUP;
 
 { UNIX TCP sockets }
 
-  IPPORT_EXECSERVER  =  winsock2.IPPORT_EXECSERVER;
-  IPPORT_LOGINSERVER =  winsock2.IPPORT_LOGINSERVER;
-  IPPORT_CMDSERVER   =  winsock2.IPPORT_CMDSERVER;
-  IPPORT_EFSSERVER   =  winsock2.IPPORT_EFSSERVER;
+  IPPORT_EXECSERVER  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_EXECSERVER;
+  IPPORT_LOGINSERVER =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_LOGINSERVER;
+  IPPORT_CMDSERVER   =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_CMDSERVER;
+  IPPORT_EFSSERVER   =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_EFSSERVER;
 
 { UNIX UDP sockets }
 
-  IPPORT_BIFFUDP     =  winsock2.IPPORT_BIFFUDP;
-  IPPORT_WHOSERVER   =  winsock2.IPPORT_WHOSERVER;
-  IPPORT_ROUTESERVER =  winsock2.IPPORT_ROUTESERVER;
+  IPPORT_BIFFUDP     =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_BIFFUDP;
+  IPPORT_WHOSERVER   =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_WHOSERVER;
+  IPPORT_ROUTESERVER =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_ROUTESERVER;
 
 { Ports < IPPORT_RESERVED are reserved for
   privileged processes (e.g. root). }
 
-  IPPORT_RESERVED    =  winsock2.IPPORT_RESERVED;
+  IPPORT_RESERVED    =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IPPORT_RESERVED;
 
 { Options for use with [gs]etsockopt at the IP level. }
 
-  IP_OPTIONS          = winsock2.IP_OPTIONS;
-  IP_MULTICAST_IF     = winsock2.IP_MULTICAST_IF;
-  IP_MULTICAST_TTL    = winsock2.IP_MULTICAST_TTL;
-  IP_MULTICAST_LOOP   = winsock2.IP_MULTICAST_LOOP;
-  IP_ADD_MEMBERSHIP   = winsock2.IP_ADD_MEMBERSHIP;
-  IP_DROP_MEMBERSHIP  = winsock2.IP_DROP_MEMBERSHIP;
-  IP_TTL              = winsock2.IP_TTL;
-  IP_TOS              = winsock2.IP_TOS;
-  IP_DONTFRAGMENT     = winsock2.IP_DONTFRAGMENT;
+  IP_OPTIONS          = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_OPTIONS;
+  IP_MULTICAST_IF     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_MULTICAST_IF;
+  IP_MULTICAST_TTL    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_MULTICAST_TTL;
+  IP_MULTICAST_LOOP   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_MULTICAST_LOOP;
+  IP_ADD_MEMBERSHIP   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_ADD_MEMBERSHIP;
+  IP_DROP_MEMBERSHIP  = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_DROP_MEMBERSHIP;
+  IP_TTL              = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_TTL;
+  IP_TOS              = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_TOS;
+  IP_DONTFRAGMENT     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.IP_DONTFRAGMENT;
 
 { This is used instead of -1, since the
   TSocket type is unsigned.}
@@ -133,75 +133,75 @@ const
   Tsocket might be unsigned, but the sockets unit uses
   signed types. So, we cannot use these constants, signed
   ones are defined in socketh.inc.
-  INVALID_SOCKET                = winsock2.INVALID_SOCKET;
-  SOCKET_ERROR                  = winsock2.SOCKET_ERROR;
+  INVALID_SOCKET                = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.INVALID_SOCKET;
+  SOCKET_ERROR                  = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SOCKET_ERROR;
 }
 
 { Option flags per-socket. }
 
-  SO_DEBUG        = winsock2.SO_DEBUG;
-  SO_ACCEPTCONN   = winsock2.SO_ACCEPTCONN;
-  SO_REUSEADDR    = winsock2.SO_REUSEADDR;
-  SO_KEEPALIVE    = winsock2.SO_KEEPALIVE;
-  SO_DONTROUTE    = winsock2.SO_DONTROUTE;
-  SO_BROADCAST    = winsock2.SO_BROADCAST;
-  SO_USELOOPBACK  = winsock2.SO_USELOOPBACK;
-  SO_LINGER       = winsock2.SO_LINGER;
-  SO_OOBINLINE    = winsock2.SO_OOBINLINE;
+  SO_DEBUG        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DEBUG;
+  SO_ACCEPTCONN   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_ACCEPTCONN;
+  SO_REUSEADDR    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_REUSEADDR;
+  SO_KEEPALIVE    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_KEEPALIVE;
+  SO_DONTROUTE    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DONTROUTE;
+  SO_BROADCAST    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_BROADCAST;
+  SO_USELOOPBACK  = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_USELOOPBACK;
+  SO_LINGER       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_LINGER;
+  SO_OOBINLINE    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_OOBINLINE;
 
-  SO_DONTLINGER  =  winsock2.SO_DONTLINGER;
+  SO_DONTLINGER  =  {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DONTLINGER;
 
 { Additional options. }
 
-  SO_SNDBUF       = winsock2.SO_SNDBUF;
-  SO_RCVBUF       = winsock2.SO_RCVBUF;
-  SO_SNDLOWAT     = winsock2.SO_SNDLOWAT;
-  SO_RCVLOWAT     = winsock2.SO_RCVLOWAT;
-  SO_SNDTIMEO     = winsock2.SO_SNDTIMEO;
-  SO_RCVTIMEO     = winsock2.SO_RCVTIMEO;
-  SO_ERROR        = winsock2.SO_ERROR;
-  SO_TYPE         = winsock2.SO_TYPE;
+  SO_SNDBUF       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_SNDBUF;
+  SO_RCVBUF       = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_RCVBUF;
+  SO_SNDLOWAT     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_SNDLOWAT;
+  SO_RCVLOWAT     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_RCVLOWAT;
+  SO_SNDTIMEO     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_SNDTIMEO;
+  SO_RCVTIMEO     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_RCVTIMEO;
+  SO_ERROR        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_ERROR;
+  SO_TYPE         = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_TYPE;
 
 { Options for connect and disconnect data and options.  Used only by
   non-TCP/IP transports such as DECNet, OSI TP4, etc. }
 
-  SO_CONNDATA     = winsock2.SO_CONNDATA;
-  SO_CONNOPT      = winsock2.SO_CONNOPT;
-  SO_DISCDATA     = winsock2.SO_DISCDATA;
-  SO_DISCOPT      = winsock2.SO_DISCOPT;
-  SO_CONNDATALEN  = winsock2.SO_CONNDATALEN;
-  SO_CONNOPTLEN   = winsock2.SO_CONNOPTLEN;
-  SO_DISCDATALEN  = winsock2.SO_DISCDATALEN;
-  SO_DISCOPTLEN   = winsock2.SO_DISCOPTLEN;
+  SO_CONNDATA     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_CONNDATA;
+  SO_CONNOPT      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_CONNOPT;
+  SO_DISCDATA     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DISCDATA;
+  SO_DISCOPT      = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DISCOPT;
+  SO_CONNDATALEN  = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_CONNDATALEN;
+  SO_CONNOPTLEN   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_CONNOPTLEN;
+  SO_DISCDATALEN  = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DISCDATALEN;
+  SO_DISCOPTLEN   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_DISCOPTLEN;
 
 { Option for opening sockets for synchronous access. }
-  SO_OPENTYPE     = winsock2.SO_OPENTYPE;
-  SO_SYNCHRONOUS_ALERT    = winsock2.SO_SYNCHRONOUS_ALERT;
-  SO_SYNCHRONOUS_NONALERT = winsock2.SO_SYNCHRONOUS_NONALERT;
+  SO_OPENTYPE     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_OPENTYPE;
+  SO_SYNCHRONOUS_ALERT    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_SYNCHRONOUS_ALERT;
+  SO_SYNCHRONOUS_NONALERT = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_SYNCHRONOUS_NONALERT;
 
 { Other NT-specific options. }
-  SO_MAXDG        = winsock2.SO_MAXDG;
-  SO_MAXPATHDG    = winsock2.SO_MAXPATHDG;
-  SO_UPDATE_ACCEPT_CONTEXT     = winsock2.SO_UPDATE_ACCEPT_CONTEXT;
-  SO_CONNECT_TIME = winsock2.SO_CONNECT_TIME;
+  SO_MAXDG        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_MAXDG;
+  SO_MAXPATHDG    = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_MAXPATHDG;
+  SO_UPDATE_ACCEPT_CONTEXT     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_UPDATE_ACCEPT_CONTEXT;
+  SO_CONNECT_TIME = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SO_CONNECT_TIME;
 
 { TCP options. }
-  TCP_NODELAY     = winsock2.TCP_NODELAY;
-  TCP_BSDURGENT   = winsock2.TCP_BSDURGENT;
+  TCP_NODELAY     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.TCP_NODELAY;
+  TCP_BSDURGENT   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.TCP_BSDURGENT;
 
-  MSG_OOB         = winsock2.MSG_OOB;
-  MSG_PEEK        = winsock2.MSG_PEEK;
-  MSG_DONTROUTE   = winsock2.MSG_DONTROUTE;
+  MSG_OOB         = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_OOB;
+  MSG_PEEK        = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_PEEK;
+  MSG_DONTROUTE   = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_DONTROUTE;
 
 { WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and WSARecvFrom() }
-  MSG_INTERRUPT = winsock2.MSG_INTERRUPT;
-  MSG_MAXIOVLEN = winsock2.MSG_MAXIOVLEN;
+  MSG_INTERRUPT = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_INTERRUPT;
+  MSG_MAXIOVLEN = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_MAXIOVLEN;
 
-  MSG_PARTIAL     = winsock2.MSG_PARTIAL;
+  MSG_PARTIAL     = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.MSG_PARTIAL;
 
   { options for socket level  }
   SOL_SOCKET = $ffff;
   
-  INVALID_SOCKET = winsock2.INVALID_SOCKET;
-  SOCKET_ERROR = winsock2.SOCKET_ERROR;
+  INVALID_SOCKET = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.INVALID_SOCKET;
+  SOCKET_ERROR = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SOCKET_ERROR;
 

+ 2 - 0
packages/rtl-extra/src/win/printer.pp

@@ -13,7 +13,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit printer;
+{$ENDIF FPC_DOTTEDUNITS}
 interface
 
 {$I printerh.inc}

+ 9 - 3
packages/rtl-extra/src/win/serial.pp

@@ -3,14 +3,20 @@
   Windows variant written with reference to Dejan Crnila's TComPort v1.01.
 }
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Serial;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$MODE objfpc}
 {$H+}
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
 uses Windows;
+{$ENDIF FPC_DOTTEDUNITS}
 
 type
 
@@ -148,10 +154,10 @@ begin
   DCB.BaudRate := BitsPerSec;
   DCB.ByteSize := ByteSize;
   case Parity of
-    OddParity:  DCB.Parity := Windows.ODDPARITY;
-    EvenParity: DCB.Parity := Windows.EVENPARITY
+    OddParity:  DCB.Parity := {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.ODDPARITY;
+    EvenParity: DCB.Parity := {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.EVENPARITY
   else
-    DCB.Parity := Windows.NOPARITY
+    DCB.Parity := {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.NOPARITY
   end;
   if StopBits > 1 then
     DCB.StopBits := TWOSTOPBITS

+ 27 - 20
packages/rtl-extra/src/win/sockets.pp

@@ -12,15 +12,22 @@
  **********************************************************************}
 {$mode objfpc}
 {$ModeSwitch out}
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Sockets;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Interface
 
 {$macro on}
 {$define maybelibc:=}
 
+{$IFDEF FPC_DOTTEDUNITS}
+  Uses
+     WinApi.Winsock2,System.CTypes;
+{$ELSE FPC_DOTTEDUNITS}
   Uses
      winsock2,ctypes;
+{$ENDIF FPC_DOTTEDUNITS}
 
 Type
   // the common socket functions are defined as size_t.
@@ -77,40 +84,40 @@ end;
 
 function fpsocket       (domain:cint; xtype:cint; protocol: cint):cint;
 begin
-  fpSocket:=WinSock2.Socket(Domain,xtype,ProtoCol);
+  fpSocket:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Socket(Domain,xtype,ProtoCol);
 end;
 
 function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
 begin
-  fpSend:=WinSock2.Send(S,msg,len,flags);
+  fpSend:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Send(S,msg,len,flags);
 end;
 
 function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
 begin
   // Dubious construct, this should be checked. (IPV6 fails ?)
-  fpSendTo:=WinSock2.SendTo(S,msg,Len,Flags,Winsock2.PSockAddr(tox),toLen);
+  fpSendTo:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SendTo(S,msg,Len,Flags,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.PSockAddr(tox),toLen);
 end;
 
 function fprecv         (s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
 begin
-  fpRecv:=WinSock2.Recv(S,Buf,Len,Flags);
+  fpRecv:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Recv(S,Buf,Len,Flags);
 end;
 
 function fprecvfrom    (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
 
 begin
-  fpRecvFrom:=WinSock2.RecvFrom(S,Buf,Len,Flags,WinSock2.PSockAddr(From),FromLen);
+  fpRecvFrom:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.RecvFrom(S,Buf,Len,Flags,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.PSockAddr(From),FromLen);
 end;
 
 function fpconnect     (s:cint; name  : psockaddr; namelen : tsocklen):cint;
 
 begin
-  fpConnect:=Winsock2.Connect(S,WinSock2.PSockAddr(name),nameLen);
+  fpConnect:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Connect(S,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.PSockAddr(name),nameLen);
 end;
 
 function fpshutdown     (s:cint; how:cint):cint;
 begin
-  fpShutDown:=Winsock2.ShutDown(S,How);
+  fpShutDown:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.ShutDown(S,How);
 end;
 
 Function socket(Domain,SocketType,Protocol:Longint):Longint;
@@ -142,37 +149,37 @@ end;
 
 function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
 begin
-  fpbind:=Winsock2.Bind(S,Winsock2.PSockAddr(Addrx),AddrLen);
+  fpbind:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Bind(S,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.PSockAddr(Addrx),AddrLen);
 end;
 
 function fplisten      (s:cint; backlog : cint):cint;
 begin
-  fplisten:=Winsock2.Listen(S,backlog);
+  fplisten:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Listen(S,backlog);
 end;
 
 function fpaccept      (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
 begin
-  fpAccept:=Winsock2.Accept(S,Winsock2.PSockAddr(Addrx), AddrLen);
+  fpAccept:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.Accept(S,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.PSockAddr(Addrx), AddrLen);
 end;
 
 function fpgetsockname (s:cint; name  : psockaddr; namelen : psocklen):cint;
 begin
-  fpGetSockName:=Winsock2.GetSockName(S,Winsock2.TSockAddr(name^),nameLen^);
+  fpGetSockName:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.GetSockName(S,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.TSockAddr(name^),nameLen^);
 end;
 
 function fpgetpeername (s:cint; name  : psockaddr; namelen : psocklen):cint;
 begin
-  fpGetPeerName:=Winsock2.GetPeerName(S,Winsock2.TSockAddr(name^),NameLen^);
+  fpGetPeerName:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.GetPeerName(S,{$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.TSockAddr(name^),NameLen^);
 end;
 
 function fpgetsockopt  (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
 begin
-  fpGetSockOpt:=Winsock2.GetSockOpt(S,Level,OptName,OptVal,OptLen^);
+  fpGetSockOpt:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.GetSockOpt(S,Level,OptName,OptVal,OptLen^);
 end;
 
 function fpsetsockopt  (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
 begin
-  fpSetSockOpt:=Winsock2.SetSockOpt(S,Level,OptName,OptVal,OptLen);
+  fpSetSockOpt:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SetSockOpt(S,Level,OptName,OptVal,OptLen);
 end;
 
 function fpsocketpair  (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
@@ -183,7 +190,7 @@ end;
 
 Function CloseSocket(Sock:Longint):Longint;
 begin
-  result := Winsock2.CloseSocket (Sock);
+  result := {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.CloseSocket (Sock);
 end;
 
 Function Bind(Sock:Longint;Const Addr;AddrLen:Longint):Boolean;
@@ -244,8 +251,8 @@ end;
 
 function fpWrite(handle : longint;Const bufptr;size : dword) : dword;
 begin
-  fpWrite := dword(Winsock2.send(handle, bufptr, size, 0));
-  if fpWrite = dword(winsock2.SOCKET_ERROR) then
+  fpWrite := dword({$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.send(handle, bufptr, size, 0));
+  if fpWrite = dword({$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SOCKET_ERROR) then
     fpWrite := 0;
 end;
 
@@ -254,7 +261,7 @@ function fpRead(handle : longint;var bufptr;size : dword) : dword;
      d : dword;
 
   begin
-     if ioctlsocket(handle,FIONREAD,@d) = winsock2.SOCKET_ERROR then
+     if ioctlsocket(handle,FIONREAD,@d) = {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SOCKET_ERROR then
        begin
          fpRead:=0;
          exit;
@@ -263,8 +270,8 @@ function fpRead(handle : longint;var bufptr;size : dword) : dword;
        begin
          if size>d then
            size:=d;
-         fpRead := dword(Winsock2.recv(handle, bufptr, size, 0));
-         if fpRead = dword(winsock2.SOCKET_ERROR) then
+         fpRead := dword({$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.recv(handle, bufptr, size, 0));
+         if fpRead = dword({$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Winsock2.SOCKET_ERROR) then
            fpRead := 0;
        end;
   end;

+ 7 - 0
packages/rtl-extra/src/win/winsock.pp

@@ -19,12 +19,19 @@
 {$endif}
 {$mode fpc}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit WinSock;
+{$ENDIF FPC_DOTTEDUNITS}
 
   interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+    uses
+       WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
     uses
        windows;
+{$ENDIF FPC_DOTTEDUNITS}
 
     const
        WINSOCK_VERSION = $0101;

+ 6 - 0
packages/rtl-extra/src/win/winsock2.pp

@@ -8,7 +8,9 @@
 // converted by Alex Konshin, mailto:[email protected]
 // added FreePascal stuff: [email protected]
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit WinSock2;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$ifndef NO_SMART_LINK}
 {$smartlink on}
@@ -20,7 +22,11 @@ unit WinSock2;
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
 Uses Windows;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {       Define the current Winsock version. To build an earlier Winsock version
         application redefine this value prior to including Winsock2.h. }

+ 7 - 0
packages/rtl-extra/src/wince/winsock.pp

@@ -14,7 +14,9 @@
 
  **********************************************************************}
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit winsock;
+{$ENDIF FPC_DOTTEDUNITS}
 
 { convention is cdecl for WinCE API}
 {$calling cdecl}
@@ -72,8 +74,13 @@ unit winsock;
 
   interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+    uses
+       WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
     uses
        windows;
+{$ENDIF FPC_DOTTEDUNITS}
 
 //begin common win32 & wince
 

+ 6 - 0
packages/rtl-extra/src/wince/winsock2.pp

@@ -10,7 +10,9 @@
 // updated for wince : [email protected]
 // based on svn3257 rtl/win/winsock2.pas
 
+{$IFNDEF FPC_DOTTEDUNITS}
 unit WinSock2;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {$ifndef NO_SMART_LINK}
 {$smartlink on}
@@ -24,7 +26,11 @@ unit WinSock2;
 
 interface
 
+{$IFDEF FPC_DOTTEDUNITS}
+Uses WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
 Uses Windows;
+{$ENDIF FPC_DOTTEDUNITS}
 
 {       Define the current Winsock version. To build an earlier Winsock version
         application redefine this value prior to including Winsock2.h. }