diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c
index a07d0dfb9f..cea5ed3c22 100644
--- a/src/interfaces/ecpg/ecpglib/misc.c
+++ b/src/interfaces/ecpg/ecpglib/misc.c
@@ -451,7 +451,7 @@ ECPGis_noind_null(enum ECPGttype type, const void *ptr)
 	return false;
 }
 
-#ifdef WIN32
+#ifdef _MSC_VER
 #ifdef ENABLE_THREAD_SAFETY
 
 void
diff --git a/src/interfaces/ecpg/include/ecpg-pthread-win32.h b/src/interfaces/ecpg/include/ecpg-pthread-win32.h
index 33c897b633..3c7cee0593 100644
--- a/src/interfaces/ecpg/include/ecpg-pthread-win32.h
+++ b/src/interfaces/ecpg/include/ecpg-pthread-win32.h
@@ -7,7 +7,7 @@
 
 #ifdef ENABLE_THREAD_SAFETY
 
-#ifndef WIN32
+#ifndef _MSC_VER
 
 #include <pthread.h>
 #else
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 27c9bb46ee..3f49e363a0 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -56,7 +56,7 @@
 #endif
 
 #ifdef ENABLE_THREAD_SAFETY
-#ifdef WIN32
+#ifdef _MSC_VER
 #include "pthread-win32.h"
 #else
 #include <pthread.h>
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index d609a38bbe..bbfc962800 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -48,7 +48,7 @@
 #include <sys/stat.h>
 
 #ifdef ENABLE_THREAD_SAFETY
-#ifdef WIN32
+#ifdef _MSC_VER
 #include "pthread-win32.h"
 #else
 #include <pthread.h>
diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c
index 3311fd7a5b..c9a40fcbc9 100644
--- a/src/interfaces/libpq/fe-secure.c
+++ b/src/interfaces/libpq/fe-secure.c
@@ -44,7 +44,7 @@
 #include <sys/stat.h>
 
 #ifdef ENABLE_THREAD_SAFETY
-#ifdef WIN32
+#ifdef _MSC_VER
 #include "pthread-win32.h"
 #else
 #include <pthread.h>
diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h
index 1de91ae295..b0b5995f65 100644
--- a/src/interfaces/libpq/libpq-int.h
+++ b/src/interfaces/libpq/libpq-int.h
@@ -29,7 +29,7 @@
 #endif
 
 #ifdef ENABLE_THREAD_SAFETY
-#ifdef WIN32
+#ifdef _MSC_VER
 #include "pthread-win32.h"
 #else
 #include <pthread.h>
diff --git a/src/interfaces/libpq/pthread-win32.c b/src/interfaces/libpq/pthread-win32.c
index fd801c1a21..0c4ddd0a1c 100644
--- a/src/interfaces/libpq/pthread-win32.c
+++ b/src/interfaces/libpq/pthread-win32.c
@@ -10,10 +10,13 @@
 *-------------------------------------------------------------------------
 */
 
+#ifdef _MSC_VER
+
 #include "postgres_fe.h"
 
 #include "pthread-win32.h"
 
+
 DWORD
 pthread_self(void)
 {
@@ -58,3 +61,5 @@ pthread_mutex_unlock(pthread_mutex_t *mp)
 	LeaveCriticalSection(*mp);
 	return 0;
 }
+
+#endif						/* _MSC_VER */
