aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/perl5/GNUmakefile
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/perl5/GNUmakefile')
-rw-r--r--src/interfaces/perl5/GNUmakefile104
1 files changed, 66 insertions, 38 deletions
diff --git a/src/interfaces/perl5/GNUmakefile b/src/interfaces/perl5/GNUmakefile
index c82ae59f083..6920742c593 100644
--- a/src/interfaces/perl5/GNUmakefile
+++ b/src/interfaces/perl5/GNUmakefile
@@ -4,64 +4,92 @@
# Makefile according to its own ideas and then invoke the rules from
# that file.
#
-# $Header: /cvsroot/pgsql/src/interfaces/perl5/Attic/GNUmakefile,v 1.5 2000/11/17 00:08:57 tgl Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/perl5/Attic/GNUmakefile,v 1.6 2001/08/26 22:28:04 petere Exp $
subdir = src/interfaces/perl5
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
+.NOTPARALLEL:
+
+# This would allow a non-root install of the Perl module, but it's not
+# quite implemented yet.
+ifeq ($(mysterious_feature),yes)
+perl_installsitearch = $(pkglibdir)
+perl_installsitelib = $(pkglibdir)
+perl_installman3dir = $(mandir)/man3
+endif
+
all: Makefile libpq-all
- $(MAKE) -f $< all
+ $(MAKE) -f $< all VPATH=$(VPATH)
-Makefile: Makefile.PL
- $(PERL) $<
+# We need to run Makefile.PL in the source directory because it scans
+# the directory for files to build with. If we ran it in the build
+# dir it would miss all the files and not build half the stuff!
+Makefile: Makefile.PL Pg.pm
+ abs_builddir=`pwd`; \
+ abs_libpq_builddir=`cd $(libpq_builddir) && pwd`; \
+ cd $(srcdir) && \
+ SRCDIR=$(srcdir) \
+ PGLIBDIR=$(libdir) \
+ $(PERL) $< \
+ INC='-I$(srcdir) -I$(libpq_srcdir) $(filter -I%, $(CPPFLAGS))' \
+ LIBS="-L$$abs_libpq_builddir -lpq" \
+ INSTALLSITEARCH='$$(DESTDIR)$(perl_installsitearch)' \
+ INSTALLSITELIB='$$(DESTDIR)$(perl_installsitelib)' \
+ INSTALLMAN3DIR='$$(DESTDIR)$(perl_installman3dir)' \
+ MAKEFILE="$$abs_builddir/Makefile"
.PHONY: libpq-all
libpq-all:
$(MAKE) -C $(libpq_builddir) all
-test: Makefile
- $(MAKE) -f $< test
-# The klugery here is to ensure that the perl5 shared library gets
-# built with the correct path to the installed location of libpq
-# during `make install', but is built against the local tree during
-# ordinary building and testing.
-#
-# During install, we must also guard against the likelihood that we
-# don't have permissions to install into the Perl module library. The
-# purer alternative would naturally be the ability to select the
-# installation directory somewhere.
-
-install: Makefile
- $(MAKE) -f Makefile clean
- POSTGRES_LIB="$(libdir)" \
- POSTGRES_INCLUDE="$(includedir)" \
- $(PERL) $(srcdir)/Makefile.PL
- $(MAKE) -f Makefile all
- -@if [ -w "`$(MAKE) --quiet -f Makefile echo-installdir`" ]; then \
- $(MAKE) -f Makefile install; \
- $(MAKE) clean; \
+# During install, we must guard against the likelihood that we don't
+# have permissions to install into the Perl module library. It's not
+# exactly fun to have to scan the build output, but...
+
+install-warning-msg := { \
+echo ""; \
+echo "*** Skipping the installation of the Perl module for lack"; \
+echo "*** of permissions. To install it, change to the directory"; \
+echo "*** `pwd`,"; \
+echo "*** become the appropriate user, and enter '$(MAKE) install'."; \
+echo ""; }
+
+# We need to massage the packlist after installation to get the
+# DESTDIR out of there.
+install: all installdirs
+ @if test -w $(DESTDIR)$(perl_installsitearch); then \
+ $(MAKE) -f Makefile pure_install DESTDIR=$(DESTDIR) && \
+ mv $(DESTDIR)$(perl_installsitearch)/auto/Pg/.packlist fake-packlist && \
+ sed 's,^$(DESTDIR),,' fake-packlist >$(DESTDIR)$(perl_installsitearch)/auto/Pg/.packlist && \
+ rm fake-packlist; \
else \
- echo "*****" ;\
- echo "* Skipping the installation of the Perl module for lack of permissions."; \
- echo "* To install it, change to the directory "`pwd`","; \
- echo "* become the appropriate user, and do \`$(MAKE) install'."; \
- echo "*****"; \
+ $(install-warning-msg); \
fi
+# Try to make the directories ourselves, otherwise the writability
+# test above may fail because of mere non-existence.
+installdirs:
+ -$(mkinstalldirs) $(DESTDIR)$(perl_installsitearch)/auto/Pg \
+ $(DESTDIR)$(perl_installsitelib) \
+ $(DESTDIR)$(perl_installman3dir)
uninstall:
- @echo "*****"; \
- echo "* The Perl module cannot be uninstalled automatically. You can"; \
- echo "* change into the directory "`pwd`" and do"; \
- echo "*"; \
- echo "* $(MAKE) -f Makefile realclean"; \
- echo "*"; \
- echo "* to delete built and installed files."; \
- echo "*****"
+ for file in `cat $(DESTDIR)$(perl_installsitearch)/auto/Pg/.packlist`; do \
+ rm -f $(DESTDIR)$$file || exit; \
+ done
+ rm -f $(DESTDIR)$(perl_installsitearch)/auto/Pg/.packlist
+ -rmdir $(DESTDIR)$(perl_installsitearch)/auto/Pg
+
clean distclean maintainer-clean:
-[ -f Makefile ] && $(MAKE) -f Makefile clean
rm -f Makefile Makefile.old
+ @rm -f fake-packlist
+
+
+installcheck test: Makefile
+ $(MAKE) -f $< test