diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index e0e31ecfbf..1e800a344c 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -36,6 +36,27 @@ DATA = plperl.control plperl--1.0.sql plperl--unpackaged--1.0.sql \ PERLCHUNKS = plc_perlboot.pl plc_trusted.pl +# Perl on win32 ships with import libraries only for Microsoft Visual C++, +# which are not compatible with mingw gcc. Therefore we need to build a +# new import library to link with. +ifeq ($(PORTNAME), win32) + +perlwithver := $(subst -l,,$(filter -l%, $(perl_embed_ldflags))) +PERLDLL := $(dir $(subst ',,$(PERL)))$(perlwithver).dll +# we no longer want to include the original -l spec in SHLIB_LINK +override perl_embed_ldflags := + +OBJS += lib$(perlwithver).a + +lib$(perlwithver).a: $(perlwithver).def + dlltool --dllname $(perlwithver).dll --def $(perlwithver).def --output-lib lib$(perlwithver).a + +$(perlwithver).def: $(PERLDLL) + pexports $^ > $@ + +endif # win32 + + SHLIB_LINK = $(perl_embed_ldflags) REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=plperl --load-extension=plperlu @@ -105,6 +126,9 @@ submake: clean distclean maintainer-clean: clean-lib rm -f SPI.c Util.c $(OBJS) perlchunks.h plperl_opmask.h rm -rf $(pg_regress_clean_files) +ifeq ($(PORTNAME), win32) + rm -f $(perlwithver).def +endif else # can't build