diff --git a/configure b/configure
index b3c92764be..57d634d501 100755
--- a/configure
+++ b/configure
@@ -649,6 +649,7 @@ MSGFMT
 PG_CRC32C_OBJS
 CFLAGS_ARMV8_CRC32C
 CFLAGS_SSE42
+msys_version
 have_win32_dbghelp
 LIBOBJS
 UUID_LIBS
@@ -16082,7 +16083,9 @@ esac
 fi
 
 # Win32 (really MinGW) support
+msys_version=0
 if test "$PORTNAME" = "win32"; then
+  msys_version=`uname -r | sed 's/..*//'`
   for ac_func in _configthreadlocale
 do :
   ac_fn_c_check_func "$LINENO" "_configthreadlocale" "ac_cv_func__configthreadlocale"
@@ -16185,6 +16188,7 @@ else
 
 fi
 
+
 # Cygwin needs only a bit of that
 if test "$PORTNAME" = "cygwin"; then
   case " $LIBOBJS " in
diff --git a/configure.in b/configure.in
index 0d16c1a971..692ea2fabf 100644
--- a/configure.in
+++ b/configure.in
@@ -1768,7 +1768,9 @@ if test "$PORTNAME" = "win32"; then
 fi
 
 # Win32 (really MinGW) support
+msys_version=0
 if test "$PORTNAME" = "win32"; then
+  msys_version=`uname -r | sed 's/[.].*//'`
   AC_CHECK_FUNCS(_configthreadlocale)
   AC_REPLACE_FUNCS(gettimeofday)
   AC_LIBOBJ(dirmod)
@@ -1792,6 +1794,7 @@ if test x"$pgac_minidump_type" = x"yes" ; then
 else
   AC_SUBST(have_win32_dbghelp,no)
 fi
+AC_SUBST(msys_version)
 
 # Cygwin needs only a bit of that
 if test "$PORTNAME" = "cygwin"; then
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 2d21068183..2c68ffe1da 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -350,6 +350,12 @@ XGETTEXT = @XGETTEXT@
 GZIP	= gzip
 BZIP2	= bzip2
 
+msys_version = @msys_version@ # 0 = not msys
+ifeq ($(msys_version),1)
+	PEXPORTS = pexports
+else
+	PEXPORTS = "gendef -"
+endif
 
 # Tree-wide build support
 
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index 9b1c514101..04ba95b5ea 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -48,7 +48,7 @@ lib$(perlwithver).a: $(perlwithver).def
 	dlltool --dllname $(perlwithver).dll --def $(perlwithver).def --output-lib lib$(perlwithver).a
 
 $(perlwithver).def: $(PERLDLL)
-	pexports $^ > $@
+	$(PEXPORTS) $^ > $@
 
 endif # win32
 
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
index 667a74469e..e919d17fc8 100644
--- a/src/pl/plpython/Makefile
+++ b/src/pl/plpython/Makefile
@@ -69,7 +69,7 @@ libpython${pytverstr}.a: python${pytverstr}.def
 	dlltool --dllname python${pytverstr}.dll --def python${pytverstr}.def --output-lib libpython${pytverstr}.a
 
 python${pytverstr}.def:
-	pexports $(PYTHONDLL) > $@
+	$(PEXPORTS) $(PYTHONDLL) > $@
 
 endif # win32
 
diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile
index 8ee4c3ff15..52dd938182 100644
--- a/src/pl/tcl/Makefile
+++ b/src/pl/tcl/Makefile
@@ -44,7 +44,7 @@ lib$(tclwithver).a: $(tclwithver).def
 	dlltool --dllname $(tclwithver).dll --def $(tclwithver).def --output-lib lib$(tclwithver).a
 
 $(tclwithver).def: $(TCLDLL)
-	pexports $^ > $@
+	$(PEXPORTS) $^ > $@
 
 endif # win32
 
