-# $Header: /cvsroot/pgsql/src/pl/plperl/GNUmakefile,v 1.6 2000/11/02 18:40:13 petere Exp $
+# $Header: /cvsroot/pgsql/src/pl/plperl/GNUmakefile,v 1.7 2001/08/26 23:54:41 petere Exp $
subdir = src/pl/plperl
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-plperl_installdir = $(DESTDIR)$(libdir)
+ifeq ($(allow_nonpic_in_shlib),yes)
+makefile_pl_flags = --force
+endif
all: Makefile
- $(MAKE) -f $< all
+ $(MAKE) -f $< all VPATH=$(VPATH)
Makefile: Makefile.PL
- plperl_installdir='$(plperl_installdir)' \
- EXTRA_INCLUDES='$(filter -I%, $(CPPFLAGS))' \
- $(PERL) $<
+ plperl_installdir='$$(DESTDIR)$(libdir)' \
+ $(PERL) $< $(makefile_pl_flags) INC='-I$(srcdir) $(filter -I%, $(CPPFLAGS))'
install: all installdirs
- $(MAKE) -f Makefile install
+ $(MAKE) -f Makefile install DESTDIR='$(DESTDIR)'
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(plperl_installdir)
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
uninstall:
rm -f $(DESTDIR)$(libdir)/plperl$(DLSUFFIX)
use DynaLoader;
use Config;
-#
-# Can't build a shared plperl unless libperl is shared too.
-# (Actually, it would be enough if code in libperl.a is compiled
-# to be position-independent, but that is hard to check for and
-# seems pretty unlikely anyway.)
-#
-if ($Config{'useshrplib'} ne 'true') {
+# On some platforms you can't build plperl unless libperl is a shared
+# library. (Actually, it would be enough if code in libperl.a is
+# compiled to be position-independent, but that is hard to check for
+# and seems pretty unlikely anyway.) On some platforms it doesn't
+# matter and they can pass in the --force flag to build anyway.
+# (Having a shared libperl is still a lot better for efficiency,
+# though.)
+
+if ($Config{'useshrplib'} ne 'true' && $ARGV[0] ne '--force') {
open(OUT, ">Makefile") or die "Can't write Makefile: $!\n";
print OUT <<'EndOfMakefile';
# Dummy Makefile for use when we can't build plperl
-all install:
- @echo "*****"; \
- echo "* Cannot build PL/Perl because libperl is not a shared library." ; \
- echo "* Skipped."; \
- echo "*****"
+all:
+ @echo ""; \
+ echo "*** Cannot build PL/Perl because libperl is not a shared library." ; \
+ echo "*** You might have to rebuild your Perl installation. Refer to"; \
+ echo "*** the documentation for details."; \
+ echo ""
+install:
clean realclean:
rm -f Makefile
WriteMakefile( 'NAME' => 'plperl',
dynamic_lib => { 'OTHERLDFLAGS' => $ldopts } ,
- INC => "$ENV{EXTRA_INCLUDES}",
XS => { 'SPI.xs' => 'SPI.c' },
OBJECT => 'plperl.o eloglvl.o SPI.o',
);
];
}
+
+
+sub MY::xs_o {
+ '';
+}
+
+sub MY::makefile {
+ '';
+}
+
+# VPATH-aware version of this rule
+sub MY::xs_c {
+ my($self) = shift;
+ return '' unless $self->needs_linking();
+ '
+.xs.c:
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $< > $@
+';
+}
+
+# somebody doesn't know how to write make rules...
+sub MY::c_o {
+ package MY; # so that "SUPER" works right
+ my $inherited = shift->SUPER::c_o(@_);
+ $inherited =~ s/\$\*\.\S+/\$\</g;
+ $inherited;
+}