diff options
author | Noah Misch <noah@leadboat.com> | 2017-11-23 20:22:04 -0800 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2017-11-23 20:22:24 -0800 |
commit | f16a0958d0ebebf9b4c3fc2272c3e1aa4ae3a1d2 (patch) | |
tree | 6a5e568a1727ccc7c5714e3b52cf3f71ea7a308d /src | |
parent | c60b898453f9b4d7de94c8e88bf08e930d117958 (diff) | |
download | postgresql-f16a0958d0ebebf9b4c3fc2272c3e1aa4ae3a1d2.tar.gz postgresql-f16a0958d0ebebf9b4c3fc2272c3e1aa4ae3a1d2.zip |
Support linking with MinGW-built Perl.
This is necessary for ActivePerl 5.18 onwards and for Strawberry Perl.
It is not sufficient for 32-bit builds with newer Visual Studio; these
fail with error LINK2026. Back-patch to 9.3 (all supported versions).
Reported by Victor Wagner.
Discussion: https://postgr.es/m/20160326154321.7754ab8f@wagner.wagner.home
Diffstat (limited to 'src')
-rw-r--r-- | src/pl/plperl/plperl.h | 8 | ||||
-rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h index c4e06d089f4..aac95f8d2ce 100644 --- a/src/pl/plperl/plperl.h +++ b/src/pl/plperl/plperl.h @@ -42,6 +42,14 @@ #undef vsnprintf #endif +/* + * ActivePerl 5.18 and later are MinGW-built, and their headers use GCC's + * __inline__. Translate to something MSVC recognizes. + */ +#ifdef _MSC_VER +#define __inline__ inline +#endif + /* * Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 686c7369f68..4c2e12e2289 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -615,9 +615,10 @@ sub mkvcbuild } } $plperl->AddReference($postgres); - my $perl_path = $solution->{options}->{perl} . '\lib\CORE\perl*.lib'; + my $perl_path = $solution->{options}->{perl} . '\lib\CORE\*perl*'; + # ActivePerl 5.16 provided perl516.lib; 5.18 provided libperl518.a my @perl_libs = - grep { /perl\d+.lib$/ } glob($perl_path); + grep { /perl\d+\.lib$|libperl\d+\.a$/ } glob($perl_path); if (@perl_libs == 1) { $plperl->AddLibrary($perl_libs[0]); |