We rely on pexports to extract exported symbols from DLL files (e.g. for linking in PLs) when building with mingw. However, this program isn't present in msys2. Instead the approved way is apparently to call "gendef" from the appropriate toolset (e.g. /mingw64/bin). I have worked around this on my new test machine but adding a script liker this in /usr/bin/pexports:
#!/bin/sh gendef - "$@" However, requiring that is a bit ugly. Instead I think we should do something like the attached. I would not be surprised if we need to test the msys version elsewhere as time goes on, so this would stand us in good stead if we do. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
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