From: Bruce Momjian <bruce@momjian.us>
Date: Fri, 20 Aug 2004 20:13:10 +0000 (+0000)
Subject: > Please find enclose a submission to fix these problems.
X-Git-Tag: REL8_0_0BETA2~81
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ee85595d467ef6fad3afb0554b27e6ee9f061318;p=postgresql

> Please find enclose a submission to fix these problems.
>
> The patch adds missing the "libpgport.a" file to the installation under
> "install-all-headers". It is needed by some contribs. I install the
> library in "pkglibdir", but I was wondering whether it should be "libdir"?
> I was wondering also whether it would make sense to have a "libpgport.so"?
>
> It fixes various macros which are used by contrib makefiles, especially
> libpq_*dir and LDFLAGS when used under PGXS. It seems to me that they are
> needed to
>
> It adds the ability to test and use PGXS with contribs, with "make
> USE_PGXS=1". Without the macro, this is exactly as before, there should be
> no difference, esp. wrt the vpath feature that seemed broken by previous
> submission. So it should not harm anybody, and it is useful at least to me.
>
> It fixes some inconsistencies in various contrib makefiles
> (useless override, ":=" instead of "=").

Fabien COELHO
---

diff --git a/contrib/btree_gist/Makefile b/contrib/btree_gist/Makefile
index 88cc3491ae..11fa902bc6 100644
--- a/contrib/btree_gist/Makefile
+++ b/contrib/btree_gist/Makefile
@@ -1,8 +1,4 @@
 
-subdir = contrib/btree_gist
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 MODULE_big  = btree_gist
 
 OBJS        = btree_gist.o btree_utils_num.o btree_utils_var.o btree_int2.o btree_int4.o btree_int8.o \
@@ -16,4 +12,12 @@ DOCS        = README.btree_gist
 REGRESS     = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz time timetz \
               date interval macaddr inet cidr text varchar char bytea bit varbit numeric
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/btree_gist
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/chkpass/Makefile b/contrib/chkpass/Makefile
index 94651d97b5..214cbad25d 100644
--- a/contrib/chkpass/Makefile
+++ b/contrib/chkpass/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/chkpass/Makefile,v 1.5 2003/11/29 19:51:19 pgsql Exp $
-
-subdir = contrib/chkpass
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/chkpass/Makefile,v 1.6 2004/08/20 20:13:02 momjian Exp $
 
 MODULE_big = chkpass
 OBJS = chkpass.o
@@ -10,4 +6,12 @@ SHLIB_LINK = $(filter -lcrypt, $(LIBS))
 DATA_built = chkpass.sql
 DOCS = README.chkpass
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/chkpass
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index 28ba3aaf1c..f4b0d0b501 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/cube/Makefile,v 1.11 2003/11/29 19:51:21 pgsql Exp $
-
-subdir = contrib/cube
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/cube/Makefile,v 1.12 2004/08/20 20:13:02 momjian Exp $
 
 MODULE_big = cube
 OBJS= cube.o cubeparse.o
@@ -11,6 +7,19 @@ DATA_built = cube.sql
 DOCS = README.cube
 REGRESS = cube
 
+EXTRA_CLEAN = cubeparse.c cubeparse.h cubescan.c y.tab.c y.tab.h
+
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/cube
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
 
 # cubescan is compiled as part of cubeparse
 cubeparse.o: cubescan.c
@@ -32,8 +41,3 @@ ifdef FLEX
 else
 	@$(missing) flex $< $@
 endif
-
-EXTRA_CLEAN = cubeparse.c cubeparse.h cubescan.c y.tab.c y.tab.h
-
-
-include $(top_srcdir)/contrib/contrib-global.mk
diff --git a/contrib/dbase/Makefile b/contrib/dbase/Makefile
index ddf03ecd38..a39b5a8a57 100644
--- a/contrib/dbase/Makefile
+++ b/contrib/dbase/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/dbase/Makefile,v 1.5 2003/11/29 19:51:22 pgsql Exp $
-
-subdir = contrib/dbase
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/dbase/Makefile,v 1.6 2004/08/20 20:13:02 momjian Exp $
 
 PROGRAM = dbf2pg
 OBJS	= dbf.o dbf2pg.o endian.o
@@ -18,4 +14,13 @@ PG_LIBS = $(libpq)
 DOCS = README.dbf2pg
 MAN = dbf2pg.1			# XXX not implemented
 
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/dbase
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile
index 2ced028849..1719f5ea35 100644
--- a/contrib/dblink/Makefile
+++ b/contrib/dblink/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/dblink/Makefile,v 1.8 2003/11/29 19:51:34 pgsql Exp $
-
-subdir = contrib/dblink
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/dblink/Makefile,v 1.9 2004/08/20 20:13:03 momjian Exp $
 
 MODULE_big = dblink
 PG_CPPFLAGS = -I$(libpq_srcdir)
@@ -13,4 +9,13 @@ DATA_built = dblink.sql
 DOCS = README.dblink
 REGRESS = dblink
 
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/dblink
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/dbmirror/Makefile b/contrib/dbmirror/Makefile
index a304739b03..b0f538f8b5 100644
--- a/contrib/dbmirror/Makefile
+++ b/contrib/dbmirror/Makefile
@@ -1,10 +1,14 @@
-# $PostgreSQL: pgsql/contrib/dbmirror/Makefile,v 1.2 2003/11/29 19:51:34 pgsql Exp $
-
-subdir = contrib/dbmirror
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/dbmirror/Makefile,v 1.3 2004/08/20 20:13:03 momjian Exp $
 
 MODULES = pending
 DOCS = README.dbmirror
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/dbmirror
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/dbsize/Makefile b/contrib/dbsize/Makefile
index ad72a12be2..7beb6ba564 100644
--- a/contrib/dbsize/Makefile
+++ b/contrib/dbsize/Makefile
@@ -1,9 +1,13 @@
-subdir = contrib/dbsize
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 MODULES = dbsize
 DATA_built = dbsize.sql
 DOCS = README.dbsize
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/dbsize
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/earthdistance/Makefile b/contrib/earthdistance/Makefile
index 3dd17e1e97..35ad6d6104 100644
--- a/contrib/earthdistance/Makefile
+++ b/contrib/earthdistance/Makefile
@@ -1,12 +1,16 @@
-# $PostgreSQL: pgsql/contrib/earthdistance/Makefile,v 1.13 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/earthdistance
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/earthdistance/Makefile,v 1.14 2004/08/20 20:13:03 momjian Exp $
 
 MODULES = earthdistance
 DATA_built = earthdistance.sql
 DOCS = README.earthdistance
 REGRESS = earthdistance
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/earthdistance
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/findoidjoins/Makefile b/contrib/findoidjoins/Makefile
index 2f2f4063a7..9a0a1de89f 100644
--- a/contrib/findoidjoins/Makefile
+++ b/contrib/findoidjoins/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/findoidjoins/Makefile,v 1.15 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/findoidjoins
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/findoidjoins/Makefile,v 1.16 2004/08/20 20:13:03 momjian Exp $
 
 PROGRAM = findoidjoins
 OBJS	= findoidjoins.o
@@ -13,4 +9,12 @@ PG_LIBS = $(libpq)
 SCRIPTS = make_oidjoins_check
 DOCS = README.findoidjoins
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/findoidjoins
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/fulltextindex/Makefile b/contrib/fulltextindex/Makefile
index a0671fc830..8debfccc1f 100644
--- a/contrib/fulltextindex/Makefile
+++ b/contrib/fulltextindex/Makefile
@@ -1,12 +1,16 @@
-# $PostgreSQL: pgsql/contrib/fulltextindex/Makefile,v 1.12 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/fulltextindex
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/fulltextindex/Makefile,v 1.13 2004/08/20 20:13:04 momjian Exp $
 
 MODULES = fti
 DATA_built = fti.sql
 DOCS = README.fti
 SCRIPTS = fti.pl
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/fulltextindex
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/fuzzystrmatch/Makefile b/contrib/fuzzystrmatch/Makefile
index ee0c02f2bc..51e6c7b899 100644
--- a/contrib/fuzzystrmatch/Makefile
+++ b/contrib/fuzzystrmatch/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/fuzzystrmatch/Makefile,v 1.4 2004/07/01 03:25:48 joe Exp $
-
-subdir = contrib/fuzzystrmatch
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/fuzzystrmatch/Makefile,v 1.5 2004/08/20 20:13:04 momjian Exp $
 
 MODULE_big = fuzzystrmatch
 SRCS += fuzzystrmatch.c dmetaphone.c
@@ -10,4 +6,12 @@ OBJS = $(SRCS:.c=.o)
 DATA_built = fuzzystrmatch.sql
 DOCS = README.fuzzystrmatch README.soundex
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/fuzzystrmatch
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/intagg/Makefile b/contrib/intagg/Makefile
index 304e1af88b..c3b22d93b9 100644
--- a/contrib/intagg/Makefile
+++ b/contrib/intagg/Makefile
@@ -2,14 +2,18 @@
 # Makefile for integer aggregator
 # Copyright (C) 2001 Digital Music Network.
 # by Mark L. Woodward
-# $PostgreSQL: pgsql/contrib/intagg/Makefile,v 1.4 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/intagg
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/intagg/Makefile,v 1.5 2004/08/20 20:13:04 momjian Exp $
 
 MODULES = int_aggregate
 DATA_built = int_aggregate.sql
 DOCS = README.int_aggregate
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/intagg
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/intarray/Makefile b/contrib/intarray/Makefile
index 1f8a54c842..e5a310a146 100644
--- a/contrib/intarray/Makefile
+++ b/contrib/intarray/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/intarray/Makefile,v 1.10 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/intarray
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/intarray/Makefile,v 1.11 2004/08/20 20:13:04 momjian Exp $
 
 MODULE_big = _int
 OBJS = _int_bool.o _int_gist.o _int_op.o _int_tool.o _intbig_gist.o 
@@ -10,4 +6,12 @@ DATA_built = _int.sql
 DOCS = README.intarray
 REGRESS = _int
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/intarray
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/isbn_issn/Makefile b/contrib/isbn_issn/Makefile
index 80a8123804..f82df97dd6 100644
--- a/contrib/isbn_issn/Makefile
+++ b/contrib/isbn_issn/Makefile
@@ -1,11 +1,15 @@
-# $PostgreSQL: pgsql/contrib/isbn_issn/Makefile,v 1.12 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/isbn_issn
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/isbn_issn/Makefile,v 1.13 2004/08/20 20:13:04 momjian Exp $
 
 MODULES = isbn_issn
 DATA_built = isbn_issn.sql
 DOCS = README.isbn_issn
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/isbn_issn
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/lo/Makefile b/contrib/lo/Makefile
index 963ded047b..17ac5008e1 100644
--- a/contrib/lo/Makefile
+++ b/contrib/lo/Makefile
@@ -1,12 +1,16 @@
-# $PostgreSQL: pgsql/contrib/lo/Makefile,v 1.12 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/lo
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/lo/Makefile,v 1.13 2004/08/20 20:13:05 momjian Exp $
 
 MODULES = lo
 DATA_built = lo.sql
 DATA = lo_drop.sql lo_test.sql
 DOCS = README.lo
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/lo
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/ltree/Makefile b/contrib/ltree/Makefile
index 0e10be39d7..bc64e009b6 100644
--- a/contrib/ltree/Makefile
+++ b/contrib/ltree/Makefile
@@ -1,7 +1,3 @@
-subdir = contrib/ltree
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 PG_CPPFLAGS = -DLOWER_NODE
 MODULE_big = ltree
 OBJS = 	ltree_io.o ltree_op.o lquery_op.o _ltree_op.o crc32.o \
@@ -10,4 +6,12 @@ DATA_built = ltree.sql
 DOCS = README.ltree
 REGRESS = ltree
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/ltree
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/mSQL-interface/Makefile b/contrib/mSQL-interface/Makefile
index cc80053cdf..2c26156ec6 100644
--- a/contrib/mSQL-interface/Makefile
+++ b/contrib/mSQL-interface/Makefile
@@ -1,19 +1,23 @@
 #
-# $PostgreSQL: pgsql/contrib/mSQL-interface/Makefile,v 1.8 2003/11/29 19:51:35 pgsql Exp $
+# $PostgreSQL: pgsql/contrib/mSQL-interface/Makefile,v 1.9 2004/08/20 20:13:05 momjian Exp $
 #
 
+NAME	= mpgsql
+SO_MAJOR_VERSION = 0
+SO_MINOR_VERSION = 0
+OBJS	= mpgsql.o
+
+PG_CPPFLAGS = -I$(libpq_srcdir)
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
 subdir = contrib/mSQL-interface
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
-
-NAME	:= mpgsql
-SO_MAJOR_VERSION := 0
-SO_MINOR_VERSION := 0
-OBJS	:= mpgsql.o
-
-override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
-
-include $(top_srcdir)/src/Makefile.shlib
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
 
 all: all-lib
 
diff --git a/contrib/miscutil/Makefile b/contrib/miscutil/Makefile
index ca7977c21d..001139f5e9 100644
--- a/contrib/miscutil/Makefile
+++ b/contrib/miscutil/Makefile
@@ -1,11 +1,15 @@
-# $PostgreSQL: pgsql/contrib/miscutil/Makefile,v 1.17 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/miscutil
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/miscutil/Makefile,v 1.18 2004/08/20 20:13:05 momjian Exp $
 
 MODULES = misc_utils
 DATA_built = misc_utils.sql
 DOCS = README.misc_utils
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/miscutil
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/noupdate/Makefile b/contrib/noupdate/Makefile
index 5781c35f70..5409a3c24f 100644
--- a/contrib/noupdate/Makefile
+++ b/contrib/noupdate/Makefile
@@ -1,11 +1,15 @@
-# $PostgreSQL: pgsql/contrib/noupdate/Makefile,v 1.10 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/noupdate
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/noupdate/Makefile,v 1.11 2004/08/20 20:13:05 momjian Exp $
 
 MODULES = noup
 DATA_built = noup.sql
 DOCS = README.noup
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/noupdate
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile
index 5bceb89ba2..191e9362f2 100644
--- a/contrib/oid2name/Makefile
+++ b/contrib/oid2name/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/oid2name/Makefile,v 1.5 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/oid2name
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/oid2name/Makefile,v 1.6 2004/08/20 20:13:05 momjian Exp $
 
 PROGRAM = oid2name
 OBJS	= oid2name.o
@@ -12,4 +8,12 @@ PG_LIBS = $(libpq)
 
 DOCS = README.oid2name
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/oid2name
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/pg_autovacuum/Makefile b/contrib/pg_autovacuum/Makefile
index a6c0835af2..1479db64ef 100644
--- a/contrib/pg_autovacuum/Makefile
+++ b/contrib/pg_autovacuum/Makefile
@@ -1,8 +1,3 @@
-
-subdir = contrib/pg_autovacuum
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 PROGRAM = pg_autovacuum
 OBJS	= pg_autovacuum.o
 
@@ -11,4 +6,12 @@ PG_LIBS = $(libpq)
 
 DOCS = README.pg_autovacuum
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pg_autovacuum
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/pg_dumplo/Makefile b/contrib/pg_dumplo/Makefile
index 3abc73aefa..f3e43f0985 100644
--- a/contrib/pg_dumplo/Makefile
+++ b/contrib/pg_dumplo/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/pg_dumplo/Makefile,v 1.12 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/pg_dumplo
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/pg_dumplo/Makefile,v 1.13 2004/08/20 20:13:05 momjian Exp $
 
 PROGRAM = pg_dumplo
 OBJS	= main.o lo_export.o lo_import.o utils.o
@@ -12,4 +8,12 @@ PG_LIBS = $(libpq)
 
 DOCS = README.pg_dumplo
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pg_dumplo
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/pg_logger/Makefile b/contrib/pg_logger/Makefile
index cfe7a97973..c3d99bf746 100644
--- a/contrib/pg_logger/Makefile
+++ b/contrib/pg_logger/Makefile
@@ -1,12 +1,16 @@
-# $PostgreSQL: pgsql/contrib/pg_logger/Makefile,v 1.3 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/pg_logger
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/pg_logger/Makefile,v 1.4 2004/08/20 20:13:06 momjian Exp $
 
 PROGRAM = pg_logger
 OBJS	= pg_logger.o
 
 DOCS = README.pg_logger
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pg_logger
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/pg_trgm/Makefile b/contrib/pg_trgm/Makefile
index a2df4ddc8a..0ef3c3ed17 100644
--- a/contrib/pg_trgm/Makefile
+++ b/contrib/pg_trgm/Makefile
@@ -1,9 +1,5 @@
-subdir = contrib/pg_trgm
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
 
-
-override CPPFLAGS := -I. $(CPPFLAGS)
+PG_CPPFLAGS = -I.
 
 MODULE_big = pg_trgm
 OBJS = trgm_op.o trgm_gist.o 
@@ -12,6 +8,17 @@ DATA_built = pg_trgm.sql
 DOCS = README.pg_trgm
 REGRESS = pg_trgm
 
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pg_trgm
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
+
 # DO NOT DELETE
 
diff --git a/contrib/pgbench/Makefile b/contrib/pgbench/Makefile
index b8504342b6..a2a743a7dc 100644
--- a/contrib/pgbench/Makefile
+++ b/contrib/pgbench/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/pgbench/Makefile,v 1.11 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/pgbench
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/pgbench/Makefile,v 1.12 2004/08/20 20:13:06 momjian Exp $
 
 PROGRAM = pgbench
 OBJS	= pgbench.o
@@ -12,4 +8,12 @@ PG_LIBS = $(libpq)
 
 DOCS = README.pgbench README.pgbench_jis
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pgbench
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/pgcrypto/Makefile b/contrib/pgcrypto/Makefile
index 8d787500a7..429c837925 100644
--- a/contrib/pgcrypto/Makefile
+++ b/contrib/pgcrypto/Makefile
@@ -1,11 +1,7 @@
 #
-# $PostgreSQL: pgsql/contrib/pgcrypto/Makefile,v 1.10 2003/11/29 19:51:35 pgsql Exp $
+# $PostgreSQL: pgsql/contrib/pgcrypto/Makefile,v 1.11 2004/08/20 20:13:06 momjian Exp $
 #
 
-subdir = contrib/pgcrypto
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 # either 'builtin', 'mhash', 'openssl'
 cryptolib = builtin
 
@@ -60,25 +56,35 @@ ifeq ($(random), silly)
 CRYPTO_CFLAGS += -DRAND_SILLY
 endif
 
-MODULE_big	:= pgcrypto
 SRCS		+= pgcrypto.c px.c px-hmac.c px-crypt.c misc.c \
 			crypt-gensalt.c random.c
-OBJS		:= $(SRCS:.c=.o)
-DOCS		:= README.pgcrypto
-DATA_built	:= pgcrypto.sql
-EXTRA_CLEAN	:= gen-rtab
 
-PG_CPPFLAGS	:= $(CRYPTO_CFLAGS) -I$(srcdir) 
-SHLIB_LINK 	:= $(CRYPTO_LDFLAGS)
+MODULE_big	= pgcrypto
+OBJS		= $(SRCS:.c=.o)
+DOCS		= README.pgcrypto
+DATA_built	= pgcrypto.sql
+EXTRA_CLEAN	= gen-rtab
 
-REGRESS := init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
+PG_CPPFLAGS	= $(CRYPTO_CFLAGS) -I$(srcdir) 
+SHLIB_LINK 	= $(CRYPTO_LDFLAGS)
+
+REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
 		crypt-des crypt-md5 crypt-blowfish crypt-xdes 
 
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/pgcrypto
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
 
 rijndael.o: rijndael.tbl
 
 rijndael.tbl:
 	$(CC) $(CPPFLAGS) $(CFLAGS) -DPRINT_TABS rijndael.c -o gen-rtab
 	./gen-rtab > rijndael.tbl
-
diff --git a/contrib/pgstattuple/Makefile b/contrib/pgstattuple/Makefile
index e1a94c0aa7..4f9b340393 100644
--- a/contrib/pgstattuple/Makefile
+++ b/contrib/pgstattuple/Makefile
@@ -2,21 +2,24 @@
 #
 # pgstattuple Makefile
 #
-# $PostgreSQL: pgsql/contrib/pgstattuple/Makefile,v 1.2 2003/11/29 22:39:29 pgsql Exp $
+# $PostgreSQL: pgsql/contrib/pgstattuple/Makefile,v 1.3 2004/08/20 20:13:07 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
+SRCS		= pgstattuple.c
+
+MODULE_big	= pgstattuple
+OBJS		= $(SRCS:.c=.o)
+DOCS		= README.pgstattuple README.pgstattuple.euc_jp
+DATA_built	= pgstattuple.sql
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
 subdir = contrib/pgstattuple
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
-
-MODULE_big	:= pgstattuple
-SRCS		+= pgstattuple.c
-OBJS		:= $(SRCS:.c=.o)
-DOCS		:= README.pgstattuple README.pgstattuple.euc_jp
-DATA_built	:= pgstattuple.sql
-
-PG_CPPFLAGS	:=
-SHLIB_LINK 	:=
-
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
diff --git a/contrib/rserv/Makefile b/contrib/rserv/Makefile
index 75bbf221df..a26c435628 100644
--- a/contrib/rserv/Makefile
+++ b/contrib/rserv/Makefile
@@ -1,10 +1,6 @@
 # Makefile for erServer demonstration implementation
 # (c) 2000 Vadim Mikheev, PostgreSQL Inc.
 
-subdir = contrib/rserv
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 NAME	= rserv
 MODULES	= rserv
 DATA	= RServ.pm
@@ -18,6 +14,17 @@ SCRIPTS_built	+= PrepareSnapshot ApplySnapshot
 SCRIPTS_built	+= InitRservTest
 
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/rserv
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
+
 $(SQLS): %.sql: %.sql.in
 	sed 's,@MODULE_FILENAME@,$$libdir/$(NAME),g' $< >$@
 
@@ -27,5 +34,3 @@ $(SCRIPTS_built): %: %.in
 	    -e 's:@BINDIR@:$(bindir):g' \
 	    -e 's:@LIBDIR@:$(datadir)/contrib:g' $< >$@
 	chmod a+x $@
-
-include $(top_srcdir)/contrib/contrib-global.mk
diff --git a/contrib/rtree_gist/Makefile b/contrib/rtree_gist/Makefile
index 30c925a408..254501666c 100644
--- a/contrib/rtree_gist/Makefile
+++ b/contrib/rtree_gist/Makefile
@@ -1,12 +1,16 @@
-# $PostgreSQL: pgsql/contrib/rtree_gist/Makefile,v 1.4 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/rtree_gist
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/rtree_gist/Makefile,v 1.5 2004/08/20 20:13:07 momjian Exp $
 
 MODULES = rtree_gist
 DATA_built = rtree_gist.sql
 DOCS = README.rtree_gist
 REGRESS = rtree_gist
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/rtree_gist
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index 70ddb317ff..e48583d792 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/seg/Makefile,v 1.11 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/seg
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/seg/Makefile,v 1.12 2004/08/20 20:13:07 momjian Exp $
 
 MODULE_big = seg
 OBJS = seg.o segparse.o
@@ -10,6 +6,17 @@ DATA_built = seg.sql
 DOCS = README.seg
 REGRESS = seg
 
+EXTRA_CLEAN = segparse.c segparse.h segscan.c y.tab.c y.tab.h
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/seg
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
 
 # segscan is compiled as part of segparse
 segparse.o: segscan.c
@@ -31,8 +38,3 @@ ifdef FLEX
 else
 	@$(missing) flex $< $@
 endif
-
-EXTRA_CLEAN = segparse.c segparse.h segscan.c y.tab.c y.tab.h
-
-
-include $(top_srcdir)/contrib/contrib-global.mk
diff --git a/contrib/spi/Makefile b/contrib/spi/Makefile
index bed2e5af4f..7a337d9116 100644
--- a/contrib/spi/Makefile
+++ b/contrib/spi/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/spi/Makefile,v 1.23 2003/11/29 19:51:35 pgsql Exp $
-
-subdir = contrib/spi
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/spi/Makefile,v 1.24 2004/08/20 20:13:08 momjian Exp $
 
 MODULES = autoinc insert_username moddatetime refint timetravel
 DATA_built = $(addsuffix .sql, $(MODULES))
@@ -12,4 +8,12 @@ DOCS	= README.spi $(addsuffix .example, $(MODULES))
 # comment out if you want a quieter refint package for other uses
 PG_CPPFLAGS = -DREFINT_VERBOSE
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/spi
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/string/Makefile b/contrib/string/Makefile
index 549b159ba2..72e868ab5b 100644
--- a/contrib/string/Makefile
+++ b/contrib/string/Makefile
@@ -1,11 +1,15 @@
-# $PostgreSQL: pgsql/contrib/string/Makefile,v 1.17 2003/11/29 19:51:36 pgsql Exp $
-
-subdir = contrib/string
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/string/Makefile,v 1.18 2004/08/20 20:13:08 momjian Exp $
 
 MODULES = string_io
 DATA_built = string_io.sql
 DOCS = README.string_io
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/string
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/tablefunc/Makefile b/contrib/tablefunc/Makefile
index 9c7381743f..4b87fd95a5 100644
--- a/contrib/tablefunc/Makefile
+++ b/contrib/tablefunc/Makefile
@@ -1,10 +1,14 @@
-subdir = contrib/tablefunc
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
 MODULES = tablefunc
 DATA_built = tablefunc.sql
 DOCS = README.tablefunc
 REGRESS = tablefunc
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/tablefunc
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/tips/Makefile b/contrib/tips/Makefile
index 1bb6580c1f..2b925176e9 100644
--- a/contrib/tips/Makefile
+++ b/contrib/tips/Makefile
@@ -1,9 +1,13 @@
-# $PostgreSQL: pgsql/contrib/tips/Makefile,v 1.6 2003/11/29 19:51:36 pgsql Exp $
+# $PostgreSQL: pgsql/contrib/tips/Makefile,v 1.7 2004/08/20 20:13:08 momjian Exp $
 
+DOCS = README.apachelog
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
 subdir = contrib/tips
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
-
-DOCS = README.apachelog
-
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/tsearch/Makefile b/contrib/tsearch/Makefile
index 3cedb1d648..8e9a37000f 100644
--- a/contrib/tsearch/Makefile
+++ b/contrib/tsearch/Makefile
@@ -1,10 +1,6 @@
-# $PostgreSQL: pgsql/contrib/tsearch/Makefile,v 1.4 2003/11/29 19:51:36 pgsql Exp $
+# $PostgreSQL: pgsql/contrib/tsearch/Makefile,v 1.5 2004/08/20 20:13:08 momjian Exp $
 
-subdir = contrib/tsearch
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
-override CPPFLAGS := -I. $(CPPFLAGS)
+PG_CPPFLAGS = -I.
 
 MODULE_big = tsearch
 OBJS = crc32.o morph.o txtidx.o query.o gistidx.o rewrite.o
@@ -13,6 +9,19 @@ DATA_built = tsearch.sql
 DOCS = README.tsearch
 REGRESS = tsearch
 
+EXTRA_CLEAN = parser.c
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/tsearch
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
+
 # parser is compiled as part of query
 query.o: parser.c
 
@@ -23,7 +32,4 @@ else
 	@$(missing) flex $< $@
 endif
 
-EXTRA_CLEAN = parser.c
-
-include $(top_srcdir)/contrib/contrib-global.mk
 # DO NOT DELETE
diff --git a/contrib/tsearch2/Makefile b/contrib/tsearch2/Makefile
index 9d220a9fe0..928266daa5 100644
--- a/contrib/tsearch2/Makefile
+++ b/contrib/tsearch2/Makefile
@@ -1,9 +1,4 @@
-# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.6 2003/11/29 19:51:36 pgsql Exp $
-
-subdir = contrib/tsearch2
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
+# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.7 2004/08/20 20:13:09 momjian Exp $
 
 MODULE_big = tsearch2
 OBJS = dict_ex.o dict.o snmap.o stopword.o common.o prs_dcfg.o \
@@ -15,12 +10,7 @@ OBJS = dict_ex.o dict.o snmap.o stopword.o common.o prs_dcfg.o \
 SUBDIRS     := snowball ispell wordparser
 SUBDIROBJS  := $(SUBDIRS:%=%/SUBSYS.o)
 
-OBJS:= $(OBJS) $(SUBDIROBJS)
-
-$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
-
-$(SUBDIRS:%=%-recursive):
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
+OBJS	+= $(SUBDIROBJS)
 
 PG_CPPFLAGS = -I$(srcdir)/snowball -I$(srcdir)/ispell -I$(srcdir)/wordparser
 
@@ -31,6 +21,23 @@ REGRESS = tsearch2
 
 SHLIB_LINK := -lm
 
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/tsearch2
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
+
+
+$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
+
+$(SUBDIRS:%=%-recursive):
+	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
+
 tsearch2.sql: tsearch.sql.in
 	sed -e 's,MODULE_PATHNAME,$$libdir/$(MODULE_big),g' \
 	    -e 's,DATA_PATH,$(datadir)/contrib,g' $< >$@
@@ -43,5 +50,3 @@ clean: subclean
 
 subclean:
 	for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean || exit; done
- 
-include $(top_srcdir)/contrib/contrib-global.mk
diff --git a/contrib/userlock/Makefile b/contrib/userlock/Makefile
index 32fccc1bd9..bf033968d7 100644
--- a/contrib/userlock/Makefile
+++ b/contrib/userlock/Makefile
@@ -1,11 +1,15 @@
-# $PostgreSQL: pgsql/contrib/userlock/Makefile,v 1.17 2003/11/29 19:51:36 pgsql Exp $
-
-subdir = contrib/userlock
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/userlock/Makefile,v 1.18 2004/08/20 20:13:09 momjian Exp $
 
 MODULES = user_locks
 DATA_built = user_locks.sql
 DOCS = README.user_locks
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/userlock
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile
index d3165b3b57..7e21a064a8 100644
--- a/contrib/vacuumlo/Makefile
+++ b/contrib/vacuumlo/Makefile
@@ -1,8 +1,4 @@
-# $PostgreSQL: pgsql/contrib/vacuumlo/Makefile,v 1.12 2003/11/29 19:51:36 pgsql Exp $
-
-subdir = contrib/vacuumlo
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $PostgreSQL: pgsql/contrib/vacuumlo/Makefile,v 1.13 2004/08/20 20:13:10 momjian Exp $
 
 PROGRAM = vacuumlo
 OBJS	= vacuumlo.o
@@ -12,4 +8,12 @@ PG_LIBS = $(libpq)
 
 DOCS = README.vacuumlo
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/vacuumlo
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/xml/Makefile b/contrib/xml/Makefile
index ccfa2bfb75..0d8e48bac2 100644
--- a/contrib/xml/Makefile
+++ b/contrib/xml/Makefile
@@ -1,8 +1,4 @@
-# $Header: /cvsroot/pgsql/contrib/xml/Attic/Makefile,v 1.8 2004/03/14 03:19:13 momjian Exp $
-
-subdir = contrib/xml
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
+# $Header: /cvsroot/pgsql/contrib/xml/Attic/Makefile,v 1.9 2004/08/20 20:13:10 momjian Exp $
 
 MODULE_big = pgxml_dom
 OBJS = pgxml_dom.o
@@ -10,4 +6,12 @@ SHLIB_LINK = -lxml2
 DATA_built = pgxml_dom.sql
 DOCS = README.xml
 
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/xml
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/xml2/Makefile b/contrib/xml2/Makefile
index 9e19eab047..b2a4f2325e 100644
--- a/contrib/xml2/Makefile
+++ b/contrib/xml2/Makefile
@@ -1,7 +1,4 @@
 # This makefile will build the new XML and XSLT routines.
-subdir = contrib/xml2
-top_builddir = ../../
-include $(top_builddir)/src/Makefile.global
 
 MODULE_big = pgxml
 
@@ -14,5 +11,14 @@ SHLIB_LINK = -lxml2 -lxslt
 DATA_built = pgxml.sql
 DOCS = README.xml2
 
-include $(top_builddir)contrib/contrib-global.mk
+
+ifdef USE_PGXS
+PGXS = $(shell pg_config --pgxs)
+include $(PGXS)
+else
+subdir = contrib/xml2
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
 
diff --git a/src/Makefile b/src/Makefile
index 1221c332a3..8b40788e93 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/Makefile,v 1.33 2004/07/30 12:26:40 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile,v 1.34 2004/08/20 20:13:10 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -35,6 +35,7 @@ install-local: installdirs-local
 
 install-all-headers:
 	$(MAKE) -C include $@
+	$(MAKE) -C port $@
 
 installdirs: installdirs-local
 
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index c6fa0db8f4..6fa97a50b9 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
 # -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.192 2004/08/15 00:41:51 momjian Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.193 2004/08/20 20:13:10 momjian Exp $
 
 #------------------------------------------------------------------------------
 # All PostgreSQL makefiles include this file and use the variables it sets,
@@ -291,8 +291,15 @@ endif
 #
 # Some variables needed to find some client interfaces
 
+ifdef PGXS
+# some contribs assumes headers and libs are in the source tree...
+libpq_srcdir = $(includedir)
+libpq_builddir = $(libdir)
+else
 libpq_srcdir = $(top_srcdir)/src/interfaces/libpq
 libpq_builddir = $(top_builddir)/src/interfaces/libpq
+endif
+
 libpq = -L$(libpq_builddir) -lpq
 
 submake-libpq:
@@ -351,8 +358,13 @@ LIBOBJS = @LIBOBJS@ dirmod.o exec.o noblock.o path.o pipe.o pgsleep.o pgstrcasec
 
 ifneq (,$(LIBOBJS))
 LIBS := -lpgport $(LIBS)
+ifdef PGXS
+# where libpgport.a is installed
+LDFLAGS := -L$(pkglibdir) $(LDFLAGS)
+else
 LDFLAGS := -L$(top_builddir)/src/port $(LDFLAGS)
 endif
+endif
 
 # to make ws2_32.lib the last library
 ifeq ($(PORTNAME),win32)
diff --git a/src/port/Makefile b/src/port/Makefile
index dc2ddee3e6..886d177ed0 100644
--- a/src/port/Makefile
+++ b/src/port/Makefile
@@ -7,7 +7,7 @@
 # with broken/missing library files.
 
 # IDENTIFICATION
-#    $PostgreSQL: pgsql/src/port/Makefile,v 1.16 2004/08/01 06:56:39 momjian Exp $
+#    $PostgreSQL: pgsql/src/port/Makefile,v 1.17 2004/08/20 20:13:10 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -20,6 +20,13 @@ LIBS += $(PTHREAD_LIBS)
 
 all: libpgport.a
 
+# libpgport is needed by some contrib
+install-all-headers: 
+	$(INSTALL_STLIB) libpgport.a $(DESTDIR)$(pkglibdir)
+
+uninstall:
+	$(RM) $(DESTDIR)$(pkglibdir)/libpgport.a
+
 libpgport.a: $(LIBOBJS)
 	$(AR) $(AROPT) $@ $^