diff --git a/ghc/lib/misc/Socket.lhs b/ghc/lib/misc/Socket.lhs
index b960b9059124acbcbd2ee6530e041d0991ae8f2d..549d450be0f518578ff75ce450ea7294d758ae38 100644
--- a/ghc/lib/misc/Socket.lhs
+++ b/ghc/lib/misc/Socket.lhs
@@ -61,7 +61,7 @@ signalling that the current hostname applies.
 data PortID = 
 	  Service String		-- Service Name eg "ftp"
 	| PortNumber PortNumber		-- User defined Port Number
-#ifndef _WIN32
+#if !defined(mingw32_TARGET_OS) && !defined(cygwin32_TARGET_OS)
 	| UnixSocket String		-- Unix family socket in file system
 #endif
 
@@ -93,7 +93,7 @@ connectTo hostname (PortNumber port) = do
     connect sock (SockAddrInet port (hostAddress he))
     socketToHandle sock ReadWriteMode
 
-#ifndef _WIN32
+#if !defined(mingw32_TARGET_OS) && !defined(cygwin32_TARGET_OS)
 connectTo _ (UnixSocket path) = do
     sock    <- socket AF_UNIX Datagram 0
     connect sock (SockAddrUnix path)
@@ -124,7 +124,7 @@ listenOn (PortNumber port) = do
     listen sock maxListenQueue
     return sock
 
-#ifndef _WIN32
+#if !defined(mingw32_TARGET_OS) && !defined(cygwin32_TARGET_OS)
 listenOn (UnixSocket path) = do
     sock <- socket AF_UNIX Datagram 0
     bindSocket sock (SockAddrUnix path)
@@ -195,7 +195,7 @@ socketPort s = do
    portID sa =
     case sa of
      SockAddrInet port _    -> PortNumber port
-#ifndef _WIN32
+#if !defined(mingw32_TARGET_OS) && !defined(cygwin32_TARGET_OS)
      SockAddrUnix path	    -> UnixSocket path
 #endif
 
diff --git a/ghc/lib/misc/SocketPrim.lhs b/ghc/lib/misc/SocketPrim.lhs
index b63f663e104b3b14ba9a7ed83e5de3493acb3f31..809cd859d2d5f009bbf5f0a5b16103beeda64cd6 100644
--- a/ghc/lib/misc/SocketPrim.lhs
+++ b/ghc/lib/misc/SocketPrim.lhs
@@ -958,7 +958,7 @@ packSocketType stype = 1 + (index (Stream, SeqPacket) stype)
 
 -- This is for a box running cygwin32 toolchain.
 
-#if defined(_WIN32)
+#if defined(mingw32_TARGET_OS) || defined(cygwin32_TARGET_OS)
 data SocketType = 
 	  Stream 
 	| Datagram