From 558f6207928b7586d0ea342c4ec05744e10f9c2a Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Thu, 23 Nov 2017 20:22:04 -0800 Subject: 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 --- src/pl/plperl/plperl.h | 8 ++++++++ src/tools/msvc/Mkvcbuild.pm | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h index d1fb089ebee..0067160ce23 100644 --- a/src/pl/plperl/plperl.h +++ b/src/pl/plperl/plperl.h @@ -44,6 +44,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 e85577c5909..17c2ebdf6f6 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -238,9 +238,10 @@ sub mkvcbuild } } $plperl->AddReference($postgres); + 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($solution->{options}->{perl} . '\lib\CORE\perl*.lib'); + grep { /perl\d+\.lib$|libperl\d+\.a$/ } glob($perl_path); if (@perl_libs == 1) { $plperl->AddLibrary($perl_libs[0]); -- cgit v1.2.3