In mingw builds, make our own import library for libperl.
authorTom Lane <[email protected]>
Fri, 14 Feb 2014 16:51:02 +0000 (11:51 -0500)
committerTom Lane <[email protected]>
Fri, 14 Feb 2014 16:51:02 +0000 (11:51 -0500)
Borrow the method already used by plpython.  This is pretty ugly, but
it might fix the build failure exhibited by buildfarm member narwhal
since commit 846e91e0223cf9f2821c3ad4dfffffbb929cb027.

Hiroshi Inoue

src/pl/plperl/GNUmakefile

index e0e31ecfbf8ce980daea7b2eab2522762688599d..1e800a344c834a0fa24554305a70febb1204ad44 100644 (file)
@@ -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