Browse Source

* fixed linking against cgywin on win32

git-svn-id: trunk@5194 -
florian 19 years ago
parent
commit
a8928cf22e
5 changed files with 136 additions and 47 deletions
  1. 1 1
      compiler/systems/t_linux.pas
  2. 13 4
      compiler/systems/t_win.pas
  3. 41 41
      rtl/win32/Makefile
  4. 1 1
      rtl/win32/Makefile.fpc
  5. 80 0
      rtl/win32/sysinitcyg.pp

+ 1 - 1
compiler/systems/t_linux.pas

@@ -322,7 +322,7 @@ begin
   hp:=tmodule(loaded_units.first);
   hp:=tmodule(loaded_units.first);
   while assigned(hp) do
   while assigned(hp) do
    begin
    begin
-     linklibc := hp.linkunitsharedlibs.find('c');
+     linklibc := hp.linkothersharedlibs.find('c');
      if linklibc then break;
      if linklibc then break;
      hp:=tmodule(hp.next);
      hp:=tmodule(hp.next);
    end;
    end;

+ 13 - 4
compiler/systems/t_win.pas

@@ -114,13 +114,24 @@ implementation
 
 
 
 
   Procedure GlobalInitSysInitUnitName(Linker : TLinker);
   Procedure GlobalInitSysInitUnitName(Linker : TLinker);
+    var
+      hp           : tmodule;
+      linkcygwin : boolean;
     begin
     begin
+      hp:=tmodule(loaded_units.first);
+      while assigned(hp) do
+       begin
+         linkcygwin := hp.linkothersharedlibs.find('cygwin') or hp.linkotherstaticlibs.find('cygwin');
+         if linkcygwin then
+           break;
+         hp:=tmodule(hp.next);
+       end;
       if cs_profile in current_settings.moduleswitches then
       if cs_profile in current_settings.moduleswitches then
         linker.sysinitunit:='sysinitgprof'
         linker.sysinitunit:='sysinitgprof'
-      else if (Linker.SharedLibFiles.Find('cygwin')<>nil) then
+      else if linkcygwin or (Linker.SharedLibFiles.Find('cygwin')<>nil) or (Linker.StaticLibFiles.Find('cygwin')<>nil) then
         linker.sysinitunit:='sysinitcyg'
         linker.sysinitunit:='sysinitcyg'
       else
       else
-        linker.sysinitunit:='sysinitpas'
+        linker.sysinitunit:='sysinitpas';
     end;
     end;
 
 
 
 
@@ -1051,10 +1062,8 @@ implementation
         HPath   : TStringListItem;
         HPath   : TStringListItem;
         s,s2    : string;
         s,s2    : string;
         i       : integer;
         i       : integer;
-        linklibcygwin : boolean;
       begin
       begin
         WriteResponseFile:=False;
         WriteResponseFile:=False;
-        linklibcygwin:=(SharedLibFiles.Find('cygwin')<>nil);
 
 
         if (cs_profile in current_settings.moduleswitches) then
         if (cs_profile in current_settings.moduleswitches) then
           begin
           begin

+ 41 - 41
rtl/win32/Makefile

@@ -250,127 +250,127 @@ 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 sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system sysinitpas ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
+override TARGET_UNITS+=system sysinitpas sysinitcyg ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock winsock2 initc cmem dynlibs signals dos crt objects messages rtlconsts sysconst sysutils math types strutils dateutils varutils variants typinfo classes convutils stdconvs cpu mmx charset ucomplex getopts winevent sockets printer video mouse keyboard fmtbcd winsysut sharemem
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=$(LOADERS)
 override TARGET_LOADERS+=$(LOADERS)

+ 1 - 1
rtl/win32/Makefile.fpc

@@ -7,7 +7,7 @@ main=rtl
 
 
 [target]
 [target]
 loaders=$(LOADERS)
 loaders=$(LOADERS)
-units=system sysinitpas \
+units=system sysinitpas sysinitcyg \
       ctypes objpas macpas strings \
       ctypes objpas macpas strings \
       lineinfo heaptrc matrix \
       lineinfo heaptrc matrix \
       windows winsock winsock2 initc cmem dynlibs signals \
       windows winsock winsock2 initc cmem dynlibs signals \

+ 80 - 0
rtl/win32/sysinitcyg.pp

@@ -19,4 +19,84 @@ unit sysinitcyg;
 
 
   implementation
   implementation
 
 
+    var
+      SysInstance : Longint;external name '_FPC_SysInstance';
+
+    procedure EXE_Entry; external name '_FPC_EXE_Entry';
+    function DLL_Entry : longbool; external name '_FPC_DLL_Entry';
+
+    procedure Cygwin_crt0(p : pointer);cdecl;external name 'cygwin_crt0';
+    procedure __main;cdecl;external name '__main';
+
+    procedure CMainEXE;cdecl;
+      begin
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        __main;
+        EXE_Entry;
+      end;
+
+
+    procedure CMainDLL;cdecl;
+      begin
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        __main;
+        DLL_Entry;
+      end;
+
+
+    procedure _FPC_mainCRTStartup;stdcall;public name '_mainCRTStartup';
+      begin
+        IsConsole:=true;
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        Cygwin_crt0(@CMainEXE);
+      end;
+
+
+    procedure _FPC_WinMainCRTStartup;stdcall;public name '_WinMainCRTStartup';
+      begin
+        IsConsole:=false;
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        Cygwin_crt0(@CMainEXE);
+      end;
+
+
+    procedure _FPC_DLLMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLMainCRTStartup';
+      begin
+        IsConsole:=true;
+        sysinstance:=_hinstance;
+        dllreason:=_dllreason;
+        dllparam:=_dllparam;
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        Cygwin_crt0(@CMainDLL);
+      end;
+
+
+    procedure _FPC_DLLWinMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLWinMainCRTStartup';
+      begin
+        IsConsole:=false;
+        sysinstance:=_hinstance;
+        dllreason:=_dllreason;
+        dllparam:=_dllparam;
+        asm
+          subl   $0x8,%esp
+          andl   $0xfffffff0,%esp
+        end;
+        Cygwin_crt0(@CMainDLL);
+      end;
+
 end.
 end.