diff options
Diffstat (limited to 'src/pl/plperl/GNUmakefile')
-rw-r--r-- | src/pl/plperl/GNUmakefile | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile new file mode 100644 index 0000000..a0bec05 --- /dev/null +++ b/src/pl/plperl/GNUmakefile @@ -0,0 +1,135 @@ +# Makefile for PL/Perl +# src/pl/plperl/GNUmakefile + +subdir = src/pl/plperl +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +ifeq ($(PORTNAME), win32) +override CPPFLAGS += -DPLPERL_HAVE_UID_GID +# Perl on win32 contains /* within comment all over the header file, +# so disable this warning. +override CPPFLAGS += -Wno-comment +endif + +# Note: we need to include the perl_includespec directory last, +# probably because it sometimes contains some header files with names +# that clash with some of ours, or with some that we include, notably on +# Windows. +override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) $(perl_embed_ccflags) $(perl_includespec) + +# this is often, but not always, the same directory named by perl_includespec +rpathdir = $(perl_archlibexp)/CORE + +PGFILEDESC = "PL/Perl - procedural language" + +NAME = plperl + +OBJS = plperl.o SPI.o Util.o $(WIN32RES) + +DATA = plperl.control plperl--1.0.sql \ + plperlu.control plperlu--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) + gendef - $^ > $@ + +endif # win32 + + +SHLIB_LINK = $(perl_embed_ldflags) + +# see https://www.postgresql.org/message-id/flat/8c4fcb72-2574-ff7c-4c25-1f032d4a2a57%40enterprisedb.com +ifeq ($(PORTNAME), cygwin) +SHLIB_LINK += -Wl,--export-all-symbols +endif + +REGRESS_OPTS = --dbname=$(PL_TESTDB) +REGRESS = plperl_setup plperl plperl_lc plperl_trigger plperl_shared \ + plperl_elog plperl_util plperl_init plperlu plperl_array \ + plperl_call plperl_transaction +# if Perl can support two interpreters in one backend, +# test plperl-and-plperlu cases +ifneq ($(PERL),) +ifeq ($(shell $(PERL) -V:usemultiplicity), usemultiplicity='define';) + REGRESS += plperl_plperlu +endif +endif + +# where to find xsubpp for building XS. +XSUBPPDIR = $(shell $(PERL) -e 'use List::Util qw(first); print first { -r "$$_/ExtUtils/xsubpp" } @INC') + +include $(top_srcdir)/src/Makefile.shlib + +plperl.o: perlchunks.h plperl_opmask.h + +plperl_opmask.h: plperl_opmask.pl + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi + $(PERL) $< $@ + +perlchunks.h: $(PERLCHUNKS) + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi + $(PERL) $(srcdir)/text2macro.pl --strip='^(\#.*|\s*)$$' $^ > $@ + +all: all-lib + +%.c: %.xs + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi +# xsubpp -output option is required for coverage+vpath, but requires Perl 5.9.3 +ifeq ($(enable_coverage)$(vpath_build),yesyes) + $(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap -output $@ $< +else + $(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ +endif + + +install: all install-lib install-data + +installdirs: installdirs-lib + $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' '$(DESTDIR)$(includedir_server)' + +uninstall: uninstall-lib uninstall-data + +install-data: installdirs + $(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/' + $(INSTALL_DATA) $(srcdir)/plperl.h $(srcdir)/plperl_system.h $(srcdir)/ppport.h '$(DESTDIR)$(includedir_server)' + +uninstall-data: + rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA))) + rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, plperl.h plperl_system.h ppport.h) + +.PHONY: install-data uninstall-data + + +check: submake + $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) + +installcheck: submake + $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) + +.PHONY: submake +submake: + $(MAKE) -C $(top_builddir)/src/test/regress pg_regress$(X) + +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 |