diff --git a/GNUmakefile.in b/GNUmakefile.in
index e3e26d483c6d26dd232863b81fb5d94ec3daea14..72943e6fd75f26384b7f1a445e0229237a65d21e 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -1,15 +1,12 @@
 #
 # PostgreSQL top level makefile
 #
-# $Header: /cvsroot/pgsql/GNUmakefile.in,v 1.5 2000/06/14 18:17:24 petere Exp $
+# $Header: /cvsroot/pgsql/GNUmakefile.in,v 1.6 2000/06/28 18:29:11 petere Exp $
 #
 
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-top_srcdir = @top_srcdir@
+subdir =
 top_builddir = .
-
+include src/Makefile.global
 
 all:
 	$(MAKE) -C src all
@@ -19,17 +16,17 @@ install:
 	$(MAKE) -C src install
 	@cat $(srcdir)/register.txt
 
+installdirs uninstall:
+	$(MAKE) -C src $@
+
 clean:
 	$(MAKE) -C src clean
 
-distclean:
-	-$(MAKE) -C src distclean
+distclean maintainer-clean:
+	-$(MAKE) -C src $@
 	-rm -f config.cache config.log config.status GNUmakefile
 
 
-.PHONY: all install clean distclean
-
-
 GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
 	CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
 
diff --git a/configure b/configure
index 27956da326c82fc4063ff6fbf47620c24c88129b..3b2eaea499cf5e550d2b981eb22655aefd9daaea 100755
--- a/configure
+++ b/configure
@@ -2363,7 +2363,7 @@ INSTALL_SHLIB="\${INSTALL} $INSTL_SHLIB_OPTS"
 
 
 
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -8883,16 +8883,6 @@ trap 'rm -fr `echo "GNUmakefile
 	src/bin/pgtclsh/mkMakefile.tcldefs.sh
 	src/bin/pgtclsh/mkMakefile.tkdefs.sh
 	src/include/version.h
-	src/interfaces/Makefile
-	src/interfaces/libpq/Makefile
-	src/interfaces/ecpg/lib/Makefile
-	src/interfaces/ecpg/preproc/Makefile
-	src/interfaces/perl5/GNUmakefile
-	src/interfaces/libpq++/Makefile
-	src/interfaces/libpgeasy/Makefile
-	src/interfaces/libpgtcl/Makefile
-	src/interfaces/odbc/GNUmakefile
-	src/interfaces/python/GNUmakefile
 	src/pl/tcl/mkMakefile.tcldefs.sh
 	src/test/regress/GNUmakefile
  src/include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
@@ -9067,16 +9057,6 @@ CONFIG_FILES=\${CONFIG_FILES-"GNUmakefile
 	src/bin/pgtclsh/mkMakefile.tcldefs.sh
 	src/bin/pgtclsh/mkMakefile.tkdefs.sh
 	src/include/version.h
-	src/interfaces/Makefile
-	src/interfaces/libpq/Makefile
-	src/interfaces/ecpg/lib/Makefile
-	src/interfaces/ecpg/preproc/Makefile
-	src/interfaces/perl5/GNUmakefile
-	src/interfaces/libpq++/Makefile
-	src/interfaces/libpgeasy/Makefile
-	src/interfaces/libpgtcl/Makefile
-	src/interfaces/odbc/GNUmakefile
-	src/interfaces/python/GNUmakefile
 	src/pl/tcl/mkMakefile.tcldefs.sh
 	src/test/regress/GNUmakefile
 "}
diff --git a/configure.in b/configure.in
index c443ca8fdc803b632c1f635067677a580f13b723..aff046a3d50258b8aee5459790d9e44a3210865b 100644
--- a/configure.in
+++ b/configure.in
@@ -1202,16 +1202,6 @@ AC_OUTPUT(
 	src/bin/pgtclsh/mkMakefile.tcldefs.sh
 	src/bin/pgtclsh/mkMakefile.tkdefs.sh
 	src/include/version.h
-	src/interfaces/Makefile
-	src/interfaces/libpq/Makefile
-	src/interfaces/ecpg/lib/Makefile
-	src/interfaces/ecpg/preproc/Makefile
-	src/interfaces/perl5/GNUmakefile
-	src/interfaces/libpq++/Makefile
-	src/interfaces/libpgeasy/Makefile
-	src/interfaces/libpgtcl/Makefile
-	src/interfaces/odbc/GNUmakefile
-	src/interfaces/python/GNUmakefile
 	src/pl/tcl/mkMakefile.tcldefs.sh
 	src/test/regress/GNUmakefile
 )
diff --git a/src/GNUmakefile.in b/src/GNUmakefile.in
index 24f115b3e9dd59dcfd932c873aaeb986f51e7c42..e3055bac2a8720c0ad53c03db8279bd63ac679a7 100644
--- a/src/GNUmakefile.in
+++ b/src/GNUmakefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.53 2000/06/27 00:30:48 petere Exp $
+#    $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.54 2000/06/28 18:29:13 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -56,7 +56,7 @@ distclean maintainer-clean:
 	rm -f backend/port/Makefile backend/catalog/genbki.sh \
 		backend/utils/Gen_fmgrtab.sh \
 		backend/port/tas.s backend/port/dynloader.c
-	-$(MAKE) -C interfaces distclean
+	-$(MAKE) -C interfaces $@
 	-$(MAKE) -C bin $@
 	-$(MAKE) -C pl $@
 	-$(MAKE) -C test clean
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 7d2209c9e7566215ca03e51d94981031bfe36d9e..6f662e7d2b28d36faea68423ec1932fb5c347c14 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.81 2000/06/27 00:30:48 petere Exp $
+#    $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.82 2000/06/28 18:29:13 petere Exp $
 #
 # NOTES
 #    Essentially all Postgres make files include this file and use the
@@ -86,6 +86,8 @@ localstatedir = @localstatedir@
 libdir = @libdir@
 includedir = @includedir@
 
+odbcinst_ini_dir = @odbcinst_ini_dir@
+
 # old variable names for installation directories
 
 POSTGRESDIR= $(prefix)
@@ -112,7 +114,14 @@ ENFORCE_ALIGNMENT= true
 #PROFILE= -p -non_shared
 
 
+with_CXX = @with_CXX@
 with_perl = @with_perl@
+enable_odbc = @enable_odbc@
+
+with_python = @with_python@
+PYTHON = @PYTHON@
+python_extmakefile = @python_extmakefile@
+python_moduledir = @python_moduledir@
 
 #
 # Please do not edit USE_TCL and USE_TK by hand.
@@ -172,6 +181,8 @@ LN_S= @LN_S@
 TAR= @tar@
 GZCAT= @GZCAT@
 PERL = @PERL@
+CXX=@CXX@
+CXXFLAGS=@CXXFLAGS@ @INCLUDES@
 
 
 ##############################################################################
@@ -260,10 +271,10 @@ endif
 
 
 # substitute implementations of the C library
+INET_ATON = @INET_ATON@
 STRERROR = @STRERROR@
 STRERROR2 = @STRERROR2@
 SNPRINTF = @SNPRINTF@
 STRDUP = @STRDUP@
 
-.DEFAULT: all
 .PHONY: all install installdirs uninstall dep depend clean distclean maintainer-clean
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index c12372da54d5c6d740968fba18418ab0a6271e86..1f06d19388e70bebf032c2f4daa56bd0aae0c1de 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,67 +6,72 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.20 2000/05/16 20:48:48 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.21 2000/06/28 18:29:13 petere Exp $
 #
 #-------------------------------------------------------------------------
 
-# This file should be included by any Postgres module Makefile that wants
-# to build a shared library (if possible for the current platform).
-# A static library is also built from the same object files.
-# RESTRICTION: only one library can be built per makefile...
-
-# Before including this file, the module Makefile must define these variables:
-# NAME				Name of library to build (no suffix nor "lib" prefix)
-# SO_MAJOR_VERSION	Major version number to use for shared library
-# SO_MINOR_VERSION	Minor version number to use for shared library
-# OBJS				List of object files to include in library
-# SHLIB_LINK		If shared library relies on other libraries, additional
-#					stuff to put in its link command
-# (If you want a patchlevel, include it in SO_MINOR_VERSION, eg, "6.2".)
+# This file should be included by any Postgres module Makefile that
+# wants to build a shared library (if possible for the current
+# platform). A static library is also built from the same object
+# files. Only one library can be built per makefile.
 #
-# The module Makefile must also include $(SRCDIR)/Makefile.global before
-# including this file (Makefile.global sets PORTNAME and other needed symbols).
+# Before including this file, the module Makefile must define these
+# variables:
 #
-# The first rule in this file is a rule for "all", which causes both the
-# static and shared libraries to be built (as well as all the object files).
-# If you have other files that need to be made before building object files
-# and libraries, put another rule for "all" before you include this file.
+# NAME                  Name of library to build (no suffix nor "lib" prefix)
+# SO_MAJOR_VERSION      Major version number to use for shared library
+# SO_MINOR_VERSION      Minor version number to use for shared library
+# OBJS                  List of object files to include in library
+# SHLIB_LINK            If shared library relies on other libraries,
+#                       additional stuff to put in its link command
+# (If you want a patchlevel, include it in SO_MINOR_VERSION, e.g., "6.2".)
 #
-# Your install rule should look like
+# The module Makefile must also include
+# $(top_builddir)/src/Makefile.global before including this file.
+# (Makefile.global sets PORTNAME and other needed symbols.)
 #
-#	install: install-headers install-lib $(install-shlib-dep)
+# This makefile provides the following (phony) targets:
 #
-# where install-headers is only needed if you have header files to install
-# (and, of course, it has to be provided by your makefile).  The rules
-# install-lib and install-shlib are provided by this makefile --- they
-# automatically install the plain and shared libraries into $(LIBDIR).
-# install-shlib-dep is a variable that expands to install-shlib if the
-# shared library needs to be installed, empty if not.
+# all-lib               build the static and shared (if applicable) libraries
+# install-lib           install the libraries into $(libdir)
+# uninstall-lib         remove the libraries from $(libdir)
+# clean-lib             delete the static and shared libraries from the build dir
 #
-# Got that?  Look at src/interfaces/libpq/Makefile.in for an example.
+# Since `all-lib' is the first rule in this file you probably want to
+# have the `all' target before including this file. In the most simple
+# case it would look like this:
+#
+#     all: all-lib
+#
+# Similarly, the install rule might look like
+#
+#     install: install-lib
+#
+# plus any additional things you want to install. Et cetera.
+#
+# Got that?  Look at src/interfaces/libpq/Makefile for an example.
 
 
-# shlib and install-shlib-dep default to empty, and stay that way if we're
-# on a platform where we don't know how to build a shared library.
+# shlib is empty by default. If we know how to build a shared library
+# it will contain the name of the file, otherwise it will remain
+# empty. Thus `ifdef shlib' could be used in the containing make file
+# to test whether shared libraries are available.
 shlib := 
-install-shlib-dep :=
 
-# For each platform we support shlibs on, set shlib and install-shlib-dep,
-# and update flags as needed to build a shared lib.  Note we depend on
-# Makefile.global (or really Makefile.port) to supply DLSUFFIX and other
-# symbols.
+# For each platform we support shared libraries on, set shlib and
+# update flags as needed to build a shared lib. Note we depend on
+# Makefile.global (or really Makefile.port) to supply DLSUFFIX and
+# other symbols.
 
 # Try to keep the sections in some kind of order, folks...
 
 ifeq ($(PORTNAME), aix)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX)
+  shlib			:= lib$(NAME)$(DLSUFFIX)
   SHLIB_LINK		+= -lc
 endif
 
 ifeq ($(PORTNAME), bsd)
   ifdef BSD_SHLIB
-    install-shlib-dep	:= install-shlib
     shlib		:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
     ifdef ELF_SYSTEM
       LDFLAGS_SL	:= -x -Bshareable -soname $(shlib)
@@ -80,13 +85,11 @@ endif
 ifeq ($(PORTNAME), bsdi)
   ifdef BSD_SHLIB
     ifeq ($(DLSUFFIX), .so)
-      install-shlib-dep := install-shlib
       shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
       LDFLAGS_SL                += -shared -soname $(shlib)
       CFLAGS			+= $(CFLAGS_SL)
     endif
     ifeq ($(DLSUFFIX), .o)
-      install-shlib-dep	:= install-shlib
       shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
       LD			:= shlicc
       LDFLAGS_SL	 	+= -O $(LDREL)
@@ -97,7 +100,6 @@ endif
 
 ifeq ($(PORTNAME), freebsd)
   ifdef BSD_SHLIB
-    install-shlib-dep	:= install-shlib
     ifdef ELF_SYSTEM
       shlib		:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
       LDFLAGS_SL	:= -x -shared -soname $(shlib)
@@ -111,14 +113,13 @@ endif
 
 ifeq ($(PORTNAME), netbsd)
   ifdef BSD_SHLIB
-    install-shlib-dep	:= install-shlib
     soname		:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
     shlib		:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
     ifdef ELF_SYSTEM
       LD		:= $(CC)
       LDFLAGS_SL	:= -shared -Wl,-soname -Wl,$(soname)
       ifneq ($(SHLIB_LINK),)
-        LDFLAGS_SL	+= -Wl,-R$(LIBDIR)
+        LDFLAGS_SL	+= -Wl,-R$(libdir)
       endif
     else
       LDFLAGS_SL	:= -x -Bshareable -Bforcearchive
@@ -128,63 +129,55 @@ ifeq ($(PORTNAME), netbsd)
 endif
 
 ifeq ($(PORTNAME), hpux)
-  install-shlib-dep	:= install-shlib
 # HPUX doesn't believe in version numbers for shlibs
-  shlib				:= lib$(NAME)$(DLSUFFIX)
+  shlib			:= lib$(NAME)$(DLSUFFIX)
   LDFLAGS_SL		:= -b
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), irix5)
-  install-shlib-dep := install-shlib
   shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-  LDFLAGS_SL := -shared -rpath $(LIBDIR) -set_version sgi$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL := -shared -rpath $(libdir) -set_version sgi$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   CFLAGS += $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), linux)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -Bdynamic -shared -soname $(shlib)
   LDFLAGS_ODBC		:= -Bsymbolic -lc -lm
   SHLIB_LINK		+= -lc
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), solaris_i386)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -G
   SHLIB_LINK		+= -ldl -lsocket -lresolv -lnsl -lm -lc
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), solaris_sparc)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -G
   SHLIB_LINK		+= -ldl -lsocket -lresolv -lnsl -lm -lc
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), alpha)
-  install-shlib-dep	:= install-shlib
   shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		+= -shared -expect_unresolved '*'
 endif
 
 ifeq ($(PORTNAME), svr4)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -G
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), univel)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -G -z text
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
   ifeq ($(CXX), CC)
     CXXFLAGS += -Xw
     COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
@@ -192,10 +185,9 @@ ifeq ($(PORTNAME), univel)
 endif
 
 ifeq ($(PORTNAME), unixware)
-  install-shlib-dep	:= install-shlib
-  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL		:= -G -z text
-  CFLAGS			+= $(CFLAGS_SL)
+  CFLAGS		+= $(CFLAGS_SL)
   ifeq ($(CXX), CC)
     CXXFLAGS += -Xw
     COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
@@ -203,13 +195,20 @@ ifeq ($(PORTNAME), unixware)
 endif
 
 ifeq ($(PORTNAME), win)
-  install-shlib-dep	:= install-shlib
-  shlib				:= $(NAME)$(DLSUFFIX)
+  shlib			:= $(NAME)$(DLSUFFIX)
 endif
 
-# Default target definition.  Note shlib is empty if not building a shlib.
 
-all: lib$(NAME).a $(shlib)
+# Note that in what follows, shlib is empty when not building a shared
+# library.
+
+
+##
+## BUILD
+##
+
+.PHONY: all-lib
+all-lib: lib$(NAME).a $(shlib)
 
 # Rules to build regular and shared libraries
 
@@ -223,74 +222,100 @@ else
 endif
 	$(RANLIB) $@
 
-endif
+endif # not win
 
-ifneq ($(shlib),)
+ifdef shlib
 ifneq ($(PORTNAME), win)
 ifneq ($(PORTNAME), aix)
 
 # Normal case
 $(shlib): $(OBJS)
 	$(LD) $(LDFLAGS_SL) -o $@ $(OBJS) $(SHLIB_LINK)
-	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
-		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
-		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
-	fi
-	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
-		rm -f lib$(NAME)$(DLSUFFIX); \
-		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
-	fi
+# If we're using major and minor versions, then make a symlink to major-version-only.
+ifneq ($(shlib), lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION))
+	rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
+	$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
+endif
+# Make sure we have a link to a name without any version numbers
+ifneq ($(shlib), lib$(NAME)$(DLSUFFIX))
+	rm -f lib$(NAME)$(DLSUFFIX)
+	$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX)
+endif
 
-else
+else # PORTNAME == aix
 
 # AIX case
 $(shlib): lib$(NAME).a
-	$(MKLDEXPORT) lib$(NAME).a $(LIBDIR) > lib$(NAME)$(EXPSUFF)
-	$(LD) -H512 -bM:SRE -bI:$(SRCDIR)/backend/$(POSTGRES_IMP) -bE:lib$(NAME)$(EXPSUFF) -o $@ $< $(LDFLAGS) $(SHLIB_LINK)
+	$(MKLDEXPORT) lib$(NAME).a $(libdir) > lib$(NAME)$(EXPSUFF)
+	$(LD) -H512 -bM:SRE -bI:$(top_builddir)/src/backend/$(POSTGRES_IMP) -bE:lib$(NAME)$(EXPSUFF) -o $@ $< $(LDFLAGS) $(SHLIB_LINK)
 
-endif
+endif # PORTNAME == aix
 
-else
+else # PORTNAME == win
 
 # WIN case
-$(shlib) lib$(NAME).a: $(OBJS) $(SRCDIR)/utils/dllinit.o
+$(shlib) lib$(NAME).a: $(OBJS) $(top_builddir)/src/utils/dllinit.o
 	$(DLLTOOL) --export-all --output-def $(NAME).def $(OBJS)
-	$(DLLWRAP) -o $(shlib) --dllname $(shlib) --def $(NAME).def $(OBJS) $(SRCDIR)/utils/dllinit.o $(DLLINIT) $(SHLIB_LINK)
+	$(DLLWRAP) -o $(shlib) --dllname $(shlib) --def $(NAME).def $(OBJS) $(top_builddir)/src/utils/dllinit.o $(DLLINIT) $(SHLIB_LINK)
 	$(DLLTOOL) --dllname $(shlib) --def $(NAME).def --output-lib lib$(NAME).a
 
-$(SRCDIR)/utils/dllinit.o: $(SRCDIR)/utils/dllinit.c
-	$(MAKE) -C $(SRCDIR)/utils dllinit.o
+$(top_builddir)/src/utils/dllinit.o: $(top_srcdir)/src/utils/dllinit.c
+	$(MAKE) -C $(top_builddir)/src/utils dllinit.o
+
+endif # PORTNAME == win
+endif # shlib
 
-endif
-endif
 
-# Rules to install regular and shared libraries
+##
+## INSTALL
+##
 
-.PHONY: all install-lib install-shlib
+.PHONY: install-lib install-lib-static install-lib-shared
+install-lib: install-lib-static install-lib-shared
 
-install-lib: lib$(NAME).a
-	$(INSTALL) $(INSTL_LIB_OPTS) lib$(NAME).a $(LIBDIR)/lib$(NAME).a
+install-lib-static: lib$(NAME).a
+	$(INSTALL_DATA) $< $(libdir)/lib$(NAME).a
 
-install-shlib: $(shlib)
-	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+ifdef shlib
+install-lib-shared: $(shlib)
+	$(INSTALL_SHLIB) $< $(libdir)/$(shlib)
 ifneq ($(PORTNAME), win)
-	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
-		cd $(LIBDIR); \
-		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
-		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
-	fi
-	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
-		cd $(LIBDIR); \
-		rm -f lib$(NAME)$(DLSUFFIX); \
-		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
-	fi
+ifneq ($(shlib), lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION))
+	cd $(libdir) && \
+	rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) && \
+	$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
 endif
+ifneq ($(shlib), lib$(NAME)$(DLSUFFIX))
+	cd $(libdir) && \
+	rm -f lib$(NAME)$(DLSUFFIX) && \
+	$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX)
+endif
+
+endif # not win
+endif # shlib
+
+
+##
+## UNINSTALL
+##
+
+.PHONY: uninstall-lib
+uninstall-lib:
+	rm -f $(libdir)/lib$(NAME).a
+ifdef shlib
+	rm -f $(libdir)/lib$(NAME)$(DLSUFFIX) \
+	  $(libdir)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) \
+	  $(libdir)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+endif # shlib
 
-# Rule to delete shared library during "make clean"
 
-.PHONY: clean-shlib
+##
+## CLEAN
+##
 
-clean-shlib:
+.PHONY: clean-lib
+clean-lib:
+	rm -f lib$(NAME).a
 	rm -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) lib$(NAME)$(DLSUFFIX)
 ifeq ($(PORTNAME), win)
 	rm -rf $(NAME).def
diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile
index cf621027cdde7652f7519f59ac5d38aa81ed4c72..76c97ad7d4003bb922c701732ee5824c21fa5749 100644
--- a/src/bin/pg_dump/Makefile
+++ b/src/bin/pg_dump/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/pg_dump/Makefile,v 1.15 2000/06/27 00:31:12 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/pg_dump/Makefile,v 1.16 2000/06/28 18:29:16 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -27,7 +27,7 @@ pg_dump$(X): $(OBJS) $(LIBPQDIR)/libpq.a
 
 .PHONY: submake
 submake:
-	$(MAKE) -C $(LIBPQDIR) libpq.a
+	$(MAKE) -C $(LIBPQDIR) all
 
 install: all installdirs
 	$(INSTALL_PROGRAM) pg_dump$(X) $(bindir)/pg_dump$(X)
diff --git a/src/bin/pg_encoding/Makefile b/src/bin/pg_encoding/Makefile
index 179a3f43da6c1cd6ca2d8f82b16182af90cce971..9dfb8b6283b931f534d9b355db4fae79b38540ee 100644
--- a/src/bin/pg_encoding/Makefile
+++ b/src/bin/pg_encoding/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1998, PostgreSQL Global Development Group
 #
-# $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/Makefile,v 1.8 2000/06/27 00:31:17 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/Makefile,v 1.9 2000/06/28 18:29:21 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -22,7 +22,7 @@ pg_encoding$(X): $(OBJS)
 .PHONY: submake
 
 submake:
-	$(MAKE) -C $(LIBPQDIR) libpq.a
+	$(MAKE) -C $(LIBPQDIR) all
 
 install: all installdirs
 	$(INSTALL_PROGRAM) pg_encoding$(X) $(bindir)/pg_encoding$(X)
diff --git a/src/bin/pgaccess/Makefile b/src/bin/pgaccess/Makefile
index 58b7f2b0530d35d23d6a3404e703691d53f081d8..e88cb765e88f3d0e4bac74989c77b2ed2cfd481f 100644
--- a/src/bin/pgaccess/Makefile
+++ b/src/bin/pgaccess/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/pgaccess/Attic/Makefile,v 1.9 2000/06/27 00:31:34 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/pgaccess/Attic/Makefile,v 1.10 2000/06/28 18:29:22 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -22,10 +22,10 @@ pgaccess: pgaccess.sh
 install: all installdirs
 	$(INSTALL_SCRIPT) pgaccess $(bindir)/pgaccess
 	$(INSTALL_SCRIPT) main.tcl $(pgaccessdir)
-	$(INSTALL_DATA) lib/*.tcl $(pgaccessdir)/lib
-	$(INSTALL_DATA) lib/help/*.hlp $(pgaccessdir)/lib/help
-	$(INSTALL_DATA) lib/languages/[a-z]* $(pgaccessdir)/lib/languages
-	$(INSTALL_DATA) images/*.gif $(pgaccessdir)/images
+	for i in lib/*.tcl; do $(INSTALL_DATA) $$i $(pgaccessdir)/lib || exit 1; done
+	for i in lib/help/*.hlp; do $(INSTALL_DATA) $$i $(pgaccessdir)/lib/help || exit 1; done
+	for i in lib/languages/[a-z]*; do $(INSTALL_DATA) $$i $(pgaccessdir)/lib/languages || exit 1; done
+	for i in images/*.gif; do $(INSTALL_DATA) $$i $(pgaccessdir)/images || exit 1; done
 
 installdirs:
 	$(mkinstalldirs) $(bindir) $(pgaccessdir)/lib/help $(pgaccessdir)/lib/languages $(pgaccessdir)/images
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index f318e10f2213e26751bb49e19beb54b1c88e2a98..be45136b847b449b7d6e338fb434c480e12d5945 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/psql/Makefile,v 1.21 2000/06/27 00:31:41 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/psql/Makefile,v 1.22 2000/06/28 18:29:31 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -63,7 +63,7 @@ endif
 .PHONY: submake
 
 submake:
-	$(MAKE) -C $(LIBPQDIR) libpq.a
+	$(MAKE) -C $(LIBPQDIR) all
 
 install: all installdirs
 	$(INSTALL_PROGRAM) psql$(X) $(bindir)/psql$(X)
diff --git a/src/interfaces/Makefile b/src/interfaces/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..d9fbf0abec1cf85de45ef6207ff91eec2bf5a502
--- /dev/null
+++ b/src/interfaces/Makefile
@@ -0,0 +1,47 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/interfaces
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.40 2000/06/28 18:29:35 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces
+top_builddir = ../..
+include ../Makefile.global
+
+DIRS := libpq ecpg libpgeasy
+
+ALLDIRS := $(DIRS) odbc libpq++ libpgtcl perl5 python
+
+ifeq ($(enable_odbc), yes)
+DIRS += odbc
+endif
+
+ifeq ($(with_CXX), yes)
+DIRS += libpq++
+endif
+
+ifeq ($(USE_TCL), true)
+DIRS += libpgtcl
+endif
+
+ifeq ($(with_perl), yes)
+DIRS += perl5
+endif
+
+ifeq ($(with_python), yes)
+DIRS += python
+endif
+
+
+all install installdirs uninstall dep depend:
+	@for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit 1; done
+
+clean:
+	@for dir in $(DIRS); do $(MAKE) -C $$dir $@; done
+
+distclean maintainer-clean: clean
+	@for dir in $(ALLDIRS); do $(MAKE) -C $$dir $@; done
diff --git a/src/interfaces/Makefile.in b/src/interfaces/Makefile.in
deleted file mode 100644
index 3752b4d51a14289302a722f9fcfb56ebb24cae04..0000000000000000000000000000000000000000
--- a/src/interfaces/Makefile.in
+++ /dev/null
@@ -1,64 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile for src/interfaces
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# $Header: /cvsroot/pgsql/src/interfaces/Attic/Makefile.in,v 1.4 2000/06/20 16:39:54 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-top_srcdir = @top_srcdir@
-top_builddir = ../..
-subdir = src/interfaces
-
-USE_TCL = @USE_TCL@
-enable_odbc = @enable_odbc@
-with_CXX = @with_CXX@
-with_perl = @with_perl@
-with_python = @with_python@
-
-all install clean dep depend:
-	$(MAKE) -C libpq $@
-	$(MAKE) -C ecpg $@
-ifeq ($(with_CXX), yes)
-	$(MAKE) -C libpq++ $@
-endif
-	$(MAKE) -C libpgeasy $@
-ifeq ($(USE_TCL), true)
-	$(MAKE) -C libpgtcl $@
-endif
-ifeq ($(with_perl), yes)
-	$(MAKE) -C perl5 $@
-endif
-ifeq ($(with_python), yes)
-	$(MAKE) -C python $@
-endif
-ifeq ($(enable_odbc), yes)
-	$(MAKE) -C odbc $@
-endif
-
-distclean maintainer-clean: clean
-	-$(MAKE) -C perl5 $@
-	-$(MAKE) -C python $@
-	-$(MAKE) -C odbc $@
-	rm -f Makefile \
-	  libpq/Makefile \
-	  ecpg/lib/Makefile \
-	  ecpg/preproc/Makefile \
-	  libpq++/Makefile \
-	  libpgeasy/Makefile \
-	  libpgtcl/Makefile
-
-
-.PHONY: all install dep depend clean distclean maintainer-clean
-
-
-Makefile: Makefile.in $(top_builddir)/config.status
-	cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-
-$(top_builddir)/config.status: $(top_srcdir)/configure
-	cd $(top_builddir) && ./config.status --recheck
diff --git a/src/interfaces/ecpg/Makefile b/src/interfaces/ecpg/Makefile
index 029b3baa62a9155477423dbde81bfc3e7fab1fd3..fb537e671bb2d339e23bd30ec6059a7de78ef4e2 100644
--- a/src/interfaces/ecpg/Makefile
+++ b/src/interfaces/ecpg/Makefile
@@ -1,4 +1,13 @@
-all install uninstall clean dep depend:
+subdir = src/interfaces/ecpg
+top_builddir = ../../..
+include ../../Makefile.global
+
+all install installdirs uninstall dep depend:
 	$(MAKE) -C include $@
 	$(MAKE) -C lib $@
 	$(MAKE) -C preproc $@
+
+clean distclean maintainer-clean:
+	-$(MAKE) -C include $@
+	-$(MAKE) -C lib $@
+	-$(MAKE) -C preproc $@
diff --git a/src/interfaces/ecpg/include/Makefile b/src/interfaces/ecpg/include/Makefile
index 6ab79fd856bb5d61a47a4620567311a22e28e3ac..3d36e878eb237eaf13c2a6d7530ef1f40f6b9d34 100644
--- a/src/interfaces/ecpg/include/Makefile
+++ b/src/interfaces/ecpg/include/Makefile
@@ -1,22 +1,16 @@
-# Generated automatically from Makefile.in by configure.
-SRCDIR= ../../..
-include $(SRCDIR)/Makefile.global
+subdir = src/interfaces/ecpg/include
+top_builddir = ../../../..
+include ../../../Makefile.global
 
-all clean::
-	@echo Nothing to be done.
+install: all installdirs install-headers
 
-install::
-	$(INSTALL) $(INSTLOPTS) ecpgerrno.h $(HEADERDIR)	
-	$(INSTALL) $(INSTLOPTS) ecpglib.h $(HEADERDIR)	
-	$(INSTALL) $(INSTLOPTS) ecpgtype.h $(HEADERDIR)	
-	$(INSTALL) $(INSTLOPTS) sqlca.h $(HEADERDIR)	
-	$(INSTALL) $(INSTLOPTS) sql3types.h $(HEADERDIR)	
+.PHONY: install-headers
+ecpg_headers = ecpgerrno.h ecpglib.h ecpgtype.h sqlca.h sql3types.h
+install-headers: $(ecpg_headers)
+	for i in $^; do $(INSTALL_DATA) $$i $(includedir); done
 
-uninstall::
-	rm -f $(HEADERDIR)/ecpgerrno.h
-	rm -f $(HEADERDIR)/ecpglib.h
-	rm -f $(HEADERDIR)/ecpgtype.h
-	rm -f $(HEADERDIR)/sqlca.h
-	rm -f $(HEADERDIR)/sql3types.h
+installdirs:
+	$(mkinstalldirs) $(includedir)
 
-dep depend:
+uninstall:
+	rm -f $(addprefix $(includedir)/, $(ecpg_headers))
diff --git a/src/interfaces/ecpg/lib/Makefile b/src/interfaces/ecpg/lib/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a21a3c854f574de9aae189fe64e2efbddb9c944c
--- /dev/null
+++ b/src/interfaces/ecpg/lib/Makefile
@@ -0,0 +1,47 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for ecpg library
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile,v 1.6 2000/06/28 18:29:39 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces/ecpg/lib
+top_builddir = ../../../..
+include ../../../Makefile.global
+
+NAME= ecpg
+SO_MAJOR_VERSION= 3
+SO_MINOR_VERSION= 1.1
+
+CFLAGS+= -I$(top_srcdir)/src/interfaces/ecpg/include -I$(LIBPQDIR)
+
+
+OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
+	connect.o misc.o
+
+SHLIB_LINK= $(LIBPQ)
+
+all: all-lib
+
+# Shared library stuff
+include $(top_srcdir)/src/Makefile.shlib
+
+install: all installdirs install-lib
+
+installdirs:
+	$(mkinstalldirs) $(libdir)
+
+uninstall: uninstall-lib
+
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS)
+
+depend dep:
+	$(CC) -MM $(CFLAGS) *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
deleted file mode 100644
index b0fbf2d9a91c97adcd2c0bc41507867ee9417be4..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ /dev/null
@@ -1,46 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile
-#    Makefile for ecpg library
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.68 2000/06/17 00:09:59 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-NAME= ecpg
-SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 1.1
-
-SRCDIR= ../../..
-include $(SRCDIR)/Makefile.global
-
-CFLAGS+= -I../include -I$(LIBPQDIR)
-
-
-OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
-	connect.o misc.o
-
-SHLIB_LINK= $(LIBPQ)
-
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
-
-
-.PHONY: install
-
-install: install-lib $(install-shlib-dep)
-
-.PHONY: clean
-
-clean: clean-shlib
-	rm -f lib$(NAME).a $(OBJS)
-
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9c23780ab4b608d261b6d578c2a53d2bb2bc8431
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -0,0 +1,66 @@
+subdir = src/interfaces/ecpg/preproc
+top_builddir = ../../../..
+include ../../../Makefile.global
+
+MAJOR_VERSION=2
+MINOR_VERSION=7
+PATCHLEVEL=1
+
+CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
+	-DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
+	-DINCLUDE_PATH=\"$(includedir)\" 
+
+OBJS=preproc.o pgc.o type.o ecpg.o ecpg_keywords.o output.o\
+    keywords.o c_keywords.o ../lib/typename.o descriptor.o variable.o
+
+all: ecpg
+
+ifdef SNPRINTF
+OBJS+=$(top_builddir)/src/backend/port/snprintf.o
+
+$(top_builddir)/src/backend/port/snprintf.o:
+	$(MAKE) -C $(top_builddir)/src/backend/port snprintf.o
+endif
+
+
+ecpg: $(OBJS)
+	$(CC) -o $@ $^ $(LDFLAGS)
+
+$(srcdir)/preproc.c $(srcdir)/preproc.h: preproc.y
+	$(YACC) -d $(YFLAGS) $<
+	mv y.tab.c $(srcdir)/preproc.c
+	mv y.tab.h $(srcdir)/preproc.h
+
+$(srcdir)/pgc.c: pgc.l
+	$(LEX) $(LFLAGS) $<
+	mv lex.yy.c $@
+
+install: all installdirs
+	$(INSTALL_PROGRAM) ecpg$(X) $(bindir)
+
+installdirs:
+	$(mkinstalldirs) $(bindir)
+
+uninstall:
+	rm -f $(bindir)/ecpg$(X)
+
+clean distclean:
+	rm -f *.o ecpg$(X)
+# garbage from partial builds
+	rm -f y.tab.c y.tab.h lex.yy.c
+# garbage from development
+	@rm -f core a.out *~ *.output *.tab.c
+
+# `make clean' does not remove preproc.c, preproc.h, or pgc.c since we
+# want to ship those files in the distribution for people with
+# inadequate tools.
+maintainer-clean: distclean
+	rm -f $(srcdir)/preproc.c $(srcdir)/preproc.h $(srcdir)/pgc.c
+
+
+depend dep: preproc.c pgc.c
+	$(CC) -MM $(CFLAGS) *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/ecpg/preproc/Makefile.in b/src/interfaces/ecpg/preproc/Makefile.in
deleted file mode 100644
index 9d5aea9b70025bbb4b7d9e8b42409b3aa94ab906..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/preproc/Makefile.in
+++ /dev/null
@@ -1,55 +0,0 @@
-SRCDIR= ../../..
-include $(SRCDIR)/Makefile.global
-
-MAJOR_VERSION=2
-MINOR_VERSION=7
-PATCHLEVEL=1
-
-CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
-	-DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
-	-DINCLUDE_PATH=\"$(HEADERDIR)\" 
-
-OBJS=preproc.o pgc.o type.o ecpg.o ecpg_keywords.o output.o\
-    keywords.o c_keywords.o ../lib/typename.o descriptor.o variable.o
-
-all:: ecpg
-
-ifneq (@SNPRINTF@,)
-OBJS+=$(SRCDIR)/backend/port/snprintf.o
-
-$(SRCDIR)/backend/port/snprintf.o:
-	$(MAKE) -C $(SRCDIR)/backend/port snprintf.o
-endif
-
-# Rule that really do something.
-ecpg: $(OBJS)
-	$(CC) -o ecpg $(OBJS) $(LEXLIB) $(LDFLAGS)
-
-preproc.c preproc.h: preproc.y
-	$(YACC) -d $(YFLAGS) $<
-	mv y.tab.c preproc.c
-	mv y.tab.h preproc.h
-
-pgc.c: pgc.l
-	$(LEX) $(LFLAGS) $<
-	mv lex.yy.c pgc.c
-
-clean:
-	rm -f *.o core a.out ecpg$(X) *~ *.output *.tab.c
-# And the garbage that might have been left behind by partial build:
-	rm -f y.tab.c y.tab.h lex.yy.c
-# make clean does not remove preproc.c, preproc.h, pgc.c since we want
-# to ship those files in the distribution, for people with inadequate tools.
-
-install: all
-	$(INSTALL) $(INSTL_EXE_OPTS) ecpg$(X) $(BINDIR)
-
-uninstall:
-	rm -f $(BINDIR)/ecpg
-
-depend dep: preproc.c pgc.c
-	$(CC) -MM $(CFLAGS) *.c >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index aa741fd5929c6f2e32769bedf57bc47019cc36e0..260a57cc21ecfb4592c6badebe20040850678360 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.59 2000/06/14 18:17:54 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.60 2000/06/28 18:29:40 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,6 +36,8 @@
 #undef yywrap
 #endif /* yywrap */
 
+#define YY_NO_UNPUT
+
 extern YYSTYPE yylval;
 
 /*
diff --git a/src/interfaces/libpgeasy/Makefile.in b/src/interfaces/libpgeasy/Makefile
similarity index 51%
rename from src/interfaces/libpgeasy/Makefile.in
rename to src/interfaces/libpgeasy/Makefile
index 6e49dc3626df16fb6ee5818af388dd581d943510..fdc64459746a80cc0c0452d416949957a4859fb1 100644
--- a/src/interfaces/libpgeasy/Makefile.in
+++ b/src/interfaces/libpgeasy/Makefile
@@ -1,20 +1,21 @@
 #-------------------------------------------------------------------------
 #
-# Makefile
-#    Makefile for pgeasy library
+# Makefile for src/interfaces/libpgeasy
 #
-# IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgeasy/Attic/Makefile.in,v 1.8 2000/06/17 00:10:00 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/libpgeasy/Attic/Makefile,v 1.1 2000/06/28 18:29:41 petere Exp $
 #
 #-------------------------------------------------------------------------
 
+subdir = src/interfaces/libpgeasy
+top_builddir = ../../..
+include ../../Makefile.global
+
+
+# shared library parameters
 NAME= pgeasy
 SO_MAJOR_VERSION= 2
 SO_MINOR_VERSION= 1
 
-SRCDIR= ../..
-include $(SRCDIR)/Makefile.global
-
 CFLAGS+= -I$(LIBPQDIR)
 
 OBJS= libpgeasy.o halt.o
@@ -26,22 +27,25 @@ SHLIB_LINK+= $(LIBPQ)
 # braindead; users of libpq should not need to know what it depends on.)
 SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))
 
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
+all: all-lib
 
+# Shared library stuff
+include $(top_srcdir)/src/Makefile.shlib
 
-.PHONY: install install-headers
-
-install: install-headers install-lib $(install-shlib-dep)
+install: all installdirs install-headers install-lib
 
+.PHONY: install-headers
 install-headers: libpgeasy.h
-	-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
-	$(INSTALL) $(INSTLOPTS) libpgeasy.h $(HEADERDIR)/libpgeasy.h
+	$(INSTALL_DATA) $< $(includedir)/libpgeasy.h
+
+installdirs:
+	$(mkinstalldirs) $(libdir) $(includedir)
 
-.PHONY: clean
+uninstall: uninstall-lib
+	rm -f $(includedir)/libpgeasy.h
 
-clean: clean-shlib
-	rm -f lib$(NAME).a $(OBJS)
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS)
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
diff --git a/src/interfaces/libpgtcl/Makefile b/src/interfaces/libpgtcl/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..72c53bc2bc0f4b2f12dc4ddeced4c6adaffeb683
--- /dev/null
+++ b/src/interfaces/libpgtcl/Makefile
@@ -0,0 +1,55 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for libpgtcl library
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+# $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile,v 1.19 2000/06/28 18:29:43 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces/libpgtcl
+top_builddir = ../../..
+include ../../Makefile.global
+
+NAME= pgtcl
+SO_MAJOR_VERSION= 2
+SO_MINOR_VERSION= 1
+
+CFLAGS+= -I$(LIBPQDIR)
+
+OBJS= pgtcl.o pgtclCmds.o pgtclId.o
+
+SHLIB_LINK+= $(LIBPQ)
+
+# If crypt is a separate library, rather than part of libc, it may need
+# to be referenced separately to keep (broken) linkers happy.  (This is
+# braindead; users of libpq should not need to know what it depends on.)
+SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))
+
+all: all-lib
+
+# Shared library stuff
+include $(top_srcdir)/src/Makefile.shlib
+
+install: all installdirs install-headers install-lib
+
+.PHONY: install-headers
+install-headers: libpgtcl.h
+	$(INSTALL_DATA) $< $(includedir)/libpgtcl.h
+
+installdirs:
+	$(mkinstalldirs) $(libdir) $(includedir)
+
+uninstall: uninstall-lib
+	rm -f $(includedir)/libpgtcl.h
+
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS)
+
+depend dep:
+	$(CC) -MM $(CFLAGS) *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/libpgtcl/Makefile.in b/src/interfaces/libpgtcl/Makefile.in
deleted file mode 100644
index 1a7bcf8e80d8b187758f13543409115b31d8f7ee..0000000000000000000000000000000000000000
--- a/src/interfaces/libpgtcl/Makefile.in
+++ /dev/null
@@ -1,60 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile
-#    Makefile for libpgtcl library
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile.in,v 1.44 2000/06/17 00:10:05 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-NAME= pgtcl
-SO_MAJOR_VERSION= 2
-SO_MINOR_VERSION= 1
-
-SRCDIR= ../..
-include $(SRCDIR)/Makefile.global
-
-CFLAGS+= -I$(LIBPQDIR)
-
-OBJS= pgtcl.o pgtclCmds.o pgtclId.o
-
-SHLIB_LINK+= $(LIBPQ)
-
-# If crypt is a separate library, rather than part of libc, it may need
-# to be referenced separately to keep (broken) linkers happy.  (This is
-# braindead; users of libpq should not need to know what it depends on.)
-SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))
-
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
-
-.PHONY: install beforeinstall-headers install-headers
-
-install: install-headers install-lib $(install-shlib-dep)
-
-install-headers: beforeinstall-headers libpgtcl.h
-	$(INSTALL) $(INSTLOPTS) libpgtcl.h $(HEADERDIR)/libpgtcl.h
-
-beforeinstall-headers:
-	-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
-
-Makefile.tcldefs: mkMakefile.tcldefs.sh
-	/bin/sh mkMakefile.tcldefs.sh
-
-Makefile.tkdefs: mkMakefile.tkdefs.sh
-	/bin/sh mkMakefile.tkdefs.sh
-
-.PHONY: clean
-
-clean: clean-shlib
-	rm -f lib$(NAME).a $(OBJS)
-
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/interfaces/libpq++/Makefile b/src/interfaces/libpq++/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..44c008fb7c20a9c733dc3dea9bd0e95a48a045fd
--- /dev/null
+++ b/src/interfaces/libpq++/Makefile
@@ -0,0 +1,80 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for libpq++ library
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+# $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.22 2000/06/28 18:29:48 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces/libpq++
+top_builddir = ../../..
+include ../../Makefile.global
+
+NAME= pq++
+SO_MAJOR_VERSION= 3
+SO_MINOR_VERSION= 1
+
+SRCHEADERDIR = $(top_srcdir)/src/include
+CXXFLAGS+= -I$(SRCHEADERDIR) -I$(LIBPQDIR)
+
+OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o 
+
+ifeq ($(PORTNAME), win)
+SHLIB_LINK+= --driver-name g++ $(LIBPQ)
+else
+SHLIB_LINK= $(LIBPQ)
+endif
+
+# For CC on IRIX, must use CC as linker/archiver of C++ libraries
+ifeq ($(PORTNAME), irix5)
+  ifeq ($(CXX), CC)
+    AR = CC
+    AROPT = -ar -o
+    LD = CC
+  endif
+endif
+
+all: all-lib
+
+# Shared library stuff
+include $(top_builddir)/src/Makefile.shlib
+
+# Pull shared-lib CFLAGS into CXXFLAGS
+CXXFLAGS+= $(CFLAGS_SL)
+
+
+.PHONY: examples
+examples:
+	$(MAKE) -C examples all
+
+install: all installdirs install-headers install-lib
+
+libpqxx_includedir = $(includedir)/libpq++
+MAINHEADER = libpq++.h
+LIBPGXXHEADERS = pgconnection.h pgdatabase.h pgtransdb.h pgcursordb.h pglobject.h
+
+.PHONY: install-headers
+install-headers: $(MAINHEADER) $(LIBPGXXHEADERS)
+	$(INSTALL_DATA) $< $(includedir)
+	for i in $(LIBPGXXHEADERS); do $(INSTALL_DATA) $(srcdir)/$$i $(libpqxx_includedir) || exit 1; done
+
+installdirs:
+	$(mkinstalldirs) $(libdir) $(includedir) $(libpqxx_includedir)
+
+uninstall: uninstall-lib
+	rm -f $(includedir)/$(MAINHEADER)
+	rm -rf $(libpqxx_includedir)
+
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS)
+	-$(MAKE) -C examples clean
+
+
+dep depend:
+	$(CXX) -MM $(CXXFLAGS) *.cc >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/libpq++/Makefile.in b/src/interfaces/libpq++/Makefile.in
deleted file mode 100644
index d7f0402504c39fc9350799dc9e8ff6cc77e32b42..0000000000000000000000000000000000000000
--- a/src/interfaces/libpq++/Makefile.in
+++ /dev/null
@@ -1,92 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile
-#    Makefile for libpq++ library
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.27 2000/06/17 00:10:17 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-NAME= pq++
-SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 1
-
-SRCDIR= ../..
-include $(SRCDIR)/Makefile.global
-
-CXX=@CXX@
-CXXFLAGS=@CXXFLAGS@ @INCLUDES@
-
-SRCHEADERDIR = $(SRCDIR)/include
-LIBPQHEADERDIR = $(SRCHEADERDIR)/libpq
-
-CXXFLAGS+= -I$(SRCHEADERDIR) -I$(LIBPQDIR)
-
-OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o 
-
-ifeq ($(PORTNAME), win)
-SHLIB_LINK+= --driver-name g++ $(LIBPQ)
-else
-SHLIB_LINK= $(LIBPQ)
-endif
-
-# For CC on IRIX, must use CC as linker/archiver of C++ libraries
-ifeq ($(PORTNAME), irix5)
-  ifeq ($(CXX), CC)
-    AR = CC
-    AROPT = -ar -o
-    LD = CC
-  endif
-endif
-
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
-
-
-# Pull shared-lib CFLAGS into CXXFLAGS
-CXXFLAGS+= $(CFLAGS_SL)
-
-
-.PHONY: examples
-examples:
-	$(MAKE) -C examples all
-
-.PHONY: install beforeinstall-headers install-headers 
-
-install: install-headers install-lib $(install-shlib-dep)
-
-LIBPGXXDIR = libpq++
-LIBPGXXHEADERDIR = $(HEADERDIR)/$(LIBPGXXDIR)
-MAINHEADER = libpq++.h
-LIBPGXXHEADERS = pgconnection.h \
-		 pgdatabase.h \
-		 pgtransdb.h \
-		 pgcursordb.h \
-		 pglobject.h
-
-install-headers: beforeinstall-headers $(MAINHEADER)
-	@$(INSTALL) $(INSTLOPTS) $(MAINHEADER) $(HEADERDIR)/$(MAINHEADER)
-	@for i in ${LIBPGXXHEADERS}; do \
-		echo "Installing $(LIBPGXXHEADERDIR)/$$i."; \
-		$(INSTALL) $(INSTLOPTS) $$i $(LIBPGXXHEADERDIR)/$$i; \
-	done
-
-beforeinstall-headers:
-	-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
-	-@if [ ! -d $(LIBPGXXHEADERDIR) ]; then mkdir $(LIBPGXXHEADERDIR); fi
-
-.PHONY: clean
-
-clean: clean-shlib
-	rm -f libpq++.a $(OBJS)
-	$(MAKE) -C examples clean
-
-dep depend:
-	$(CXX) -MM $(CXXFLAGS) *.cc >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8fc0560e6f618cebd4b4799a9864868576f2c22a
--- /dev/null
+++ b/src/interfaces/libpq/Makefile
@@ -0,0 +1,88 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/interfaces/libpq library
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.39 2000/06/28 18:29:44 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces/libpq
+top_builddir = ../../..
+include ../../Makefile.global
+
+# shared library parameters
+NAME= pq
+SO_MAJOR_VERSION= 2
+SO_MINOR_VERSION= 1
+
+CFLAGS+= -DFRONTEND -I$(srcdir)
+
+OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
+      pqexpbuffer.o dllist.o pqsignal.o $(SNPRINTF) $(INET_ATON)
+
+ifdef MULTIBYTE
+OBJS+= common.o wchar.o conv.o big5.o
+endif
+
+# If crypt is a separate library, rather than part of libc,
+# make sure it gets included in shared libpq.
+SHLIB_LINK+= $(findstring -lcrypt, $(LIBS))
+
+# Include kerberos libraries into libpq
+SHLIB_LINK += $(KRB_LIBS)
+
+all: all-lib
+
+# Shared library stuff
+include $(top_srcdir)/src/Makefile.shlib
+
+
+# We use several backend modules verbatim, but since we need to
+# compile with appropriate options to build a shared lib, we can't
+# necessarily use the same object files as the backend uses. Instead,
+# symlink the source files in here and build our own object file.
+
+backend_src = $(top_srcdir)/src/backend
+
+dllist.c: $(backend_src)/lib/dllist.c
+	rm -f $@ && $(LN_S) $< .
+
+# this only gets done if configure finds system doesn't have snprintf()
+snprintf.c: $(backend_src)/port/snprintf.c
+	rm -f $@ && $(LN_S) $< .
+
+# this only gets done if configure finds system doesn't have inet_aton()
+inet_aton.c: $(backend_src)/port/inet_aton.c
+	rm -f $@ && $(LN_S) $< .
+
+ifdef MULTIBYTE
+common.c wchar.c conv.c big5.c: % : $(backend_src)/utils/mb/%
+	rm -f $@ && $(LN_S) $< .
+endif
+
+
+install: all installdirs install-headers install-lib
+
+.PHONY: install-headers
+install-headers: libpq-fe.h libpq-int.h pqexpbuffer.h
+	$(INSTALL_DATA) $(srcdir)/libpq-fe.h $(includedir)
+	$(INSTALL_DATA) $(srcdir)/libpq-int.h $(includedir)
+	$(INSTALL_DATA) $(srcdir)/pqexpbuffer.h $(includedir)
+
+installdirs:
+	$(mkinstalldirs) $(libdir) $(includedir)
+
+uninstall: uninstall-lib
+	rm -f $(addprefix $(includedir)/, libpq-fe.h libpq-int.h pqexpbuffer.h)
+
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS) dllist.c snprintf.c inet_aton.c common.c wchar.c conv.c big5.c
+
+depend dep:
+	$(CC) -MM $(CFLAGS) *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/libpq/Makefile.in b/src/interfaces/libpq/Makefile.in
deleted file mode 100644
index 7b5bb61adc2e6557f73968672eb8d643bc189d91..0000000000000000000000000000000000000000
--- a/src/interfaces/libpq/Makefile.in
+++ /dev/null
@@ -1,94 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile
-#    Makefile for libpq library
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.60 2000/06/17 00:10:09 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-NAME= pq
-SO_MAJOR_VERSION= 2
-SO_MINOR_VERSION= 1
-
-SRCDIR= ../..
-include $(SRCDIR)/Makefile.global
-
-CFLAGS+= -DFRONTEND
-
-OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
-      pqexpbuffer.o dllist.o pqsignal.o @SNPRINTF@ @INET_ATON@
-
-ifdef MULTIBYTE
-OBJS+= common.o wchar.o conv.o big5.o
-endif
-
-# If crypt is a separate library, rather than part of libc,
-# make sure it gets included in shared libpq.
-SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))
-
-# Include kerberos libraries into libpq
-SHLIB_LINK += $(KRB_LIBS)
-
-
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
-
-
-# We use several backend modules verbatim, but since we need to compile
-# with appropriate options to build a shared lib, we can't necessarily
-# use the same object files as the backend uses.  Instead, symlink the
-# source files in here and build our own object file.
-
-dllist.c:	$(SRCDIR)/backend/lib/dllist.c
-	-$(LN_S) $(SRCDIR)/backend/lib/dllist.c .
-
-# this only gets done if configure finds system doesn't have snprintf()
-snprintf.c:	$(SRCDIR)/backend/port/snprintf.c
-	-$(LN_S) $(SRCDIR)/backend/port/snprintf.c .
-
-# this only gets done if configure finds system doesn't have inet_aton()
-inet_aton.c:	$(SRCDIR)/backend/port/inet_aton.c
-	-$(LN_S) $(SRCDIR)/backend/port/inet_aton.c .
-
-ifdef MULTIBYTE
-common.c: $(SRCDIR)/backend/utils/mb/common.c
-	-$(LN_S) $(SRCDIR)/backend/utils/mb/common.c .
-
-wchar.c: $(SRCDIR)/backend/utils/mb/wchar.c
-	-$(LN_S) $(SRCDIR)/backend/utils/mb/wchar.c .
-
-conv.c: $(SRCDIR)/backend/utils/mb/conv.c
-	-$(LN_S) $(SRCDIR)/backend/utils/mb/conv.c .
-
-big5.c: $(SRCDIR)/backend/utils/mb/big5.c
-	-$(LN_S) $(SRCDIR)/backend/utils/mb/big5.c .
-endif
-
-
-.PHONY: install install-headers
-
-install: install-headers install-lib $(install-shlib-dep)
-
-install-headers: libpq-fe.h libpq-int.h
-	-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
-	$(INSTALL) $(INSTLOPTS) libpq-fe.h $(HEADERDIR)/libpq-fe.h
-	$(INSTALL) $(INSTLOPTS) libpq-int.h $(HEADERDIR)/libpq-int.h
-	$(INSTALL) $(INSTLOPTS) pqexpbuffer.h $(HEADERDIR)/pqexpbuffer.h
-
-
-.PHONY: clean
-
-clean: clean-shlib
-	rm -f lib$(NAME).a $(OBJS)
-	rm -f dllist.c snprintf.c inet_aton.c common.c wchar.c conv.c big5.c
-
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/interfaces/odbc/GNUmakefile b/src/interfaces/odbc/GNUmakefile
new file mode 100644
index 0000000000000000000000000000000000000000..29c5a12542a9c7fc2d53177d7ec12693836c8734
--- /dev/null
+++ b/src/interfaces/odbc/GNUmakefile
@@ -0,0 +1,62 @@
+#-------------------------------------------------------------------------
+#
+# GNUMakefile for psqlodbc (Postgres ODBC driver)
+#
+# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.1 2000/06/28 18:29:54 petere Exp $
+#
+#-------------------------------------------------------------------------
+
+subdir = src/interfaces/odbc
+top_builddir = ../../..
+include ../../Makefile.global
+
+# Shared library parameters
+NAME = psqlodbc
+SO_MAJOR_VERSION = 0
+SO_MINOR_VERSION = 26
+
+CFLAGS += -I$(srcdir) -DHAVE_CONFIG_H -DODBCINSTDIR='"$(odbcinst_ini_dir)"'
+
+
+OBJS = info.o bind.o columninfo.o connection.o convert.o drvconn.o \
+        environ.o execute.o lobj.o misc.o options.o \
+        pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \
+        gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX)
+
+SHLIB_LINK= $(LD_FLAGS)
+
+all: all-lib
+
+# Shared library stuff
+include $(top_srcdir)/src/Makefile.shlib
+
+LDFLAGS_SL+= $(LDFLAGS_ODBC)
+
+odbc_headers = isql.h isqlext.h iodbc.h
+odbc_includedir = $(includedir)/iodbc
+
+install: all installdirs install-headers install-ini install-lib
+
+installdirs:
+	$(mkinstalldirs) $(odbc_includedir) $(libdir) $(odbcinst_ini_dir)
+
+.PHONY: install-headers
+install-headers: $(odbc_headers)
+	for i in $^; do $(INSTALL_DATA) $$i $(odbc_includedir) || exit 1; done
+
+.PHONY: install-ini
+install-ini: odbcinst.ini
+	$(INSTALL_DATA) $< $(odbcinst_ini_dir)
+
+uninstall: uninstall-lib
+	rm -f $(addprefix $(odbc_includedir)/, $(odbc_headers))
+
+clean distclean maintainer-clean: clean-lib
+	rm -f $(OBJS)
+
+depend dep:
+	$(CC) -MM $(CFLAGS) *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
diff --git a/src/interfaces/odbc/GNUmakefile.in b/src/interfaces/odbc/GNUmakefile.in
deleted file mode 100644
index d62249353a2b9070107efd00777718278ac533ac..0000000000000000000000000000000000000000
--- a/src/interfaces/odbc/GNUmakefile.in
+++ /dev/null
@@ -1,77 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# GNUMakefile.in for psqlodbc (Postgres ODBC driver).
-#
-# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile.in,v 1.17 2000/06/20 16:39:57 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-top_srcdir = @top_srcdir@
-top_builddir = ../../..
-subdir = src/interfaces/odbc
-
-mkinstalldirs = @mkinstalldirs@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-prefix = @prefix@
-datadir = @datadir@
-odbcinst_ini_dir = @odbcinst_ini_dir@
-includedir = @includedir@
-
-# Shared library parameters
-NAME = psqlodbc
-SO_MAJOR_VERSION = 0
-SO_MINOR_VERSION = 26
-
-
-SRCDIR= $(top_srcdir)/src
-include $(SRCDIR)/Makefile.global
-
-CFLAGS += -I. @DEFS@ -DODBCINSTDIR='"$(odbcinst_ini_dir)"'
-
-
-OBJS = info.o bind.o columninfo.o connection.o convert.o drvconn.o \
-        environ.o execute.o lobj.o misc.o options.o \
-        pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \
-        gpps.o tuple.o tuplelist.o dlg_specific.o
-
-
-# Shared library stuff, also default 'all' target
-include $(SRCDIR)/Makefile.shlib
-
-install: all installdirs install-headers install-ini install-lib $(install-shlib-dep)
-
-installdirs:
-	$(mkinstalldirs) $(includedir)/iodbc $(LIBDIR) $(odbcinst_ini_dir)
-
-install-headers: isql.h isqlext.h iodbc.h
-	$(INSTALL_DATA) $^ $(includedir)/iodbc/
-
-install-ini: odbcinst.ini
-	$(INSTALL_DATA) odbcinst.ini $(odbcinst_ini_dir)
-
-clean: clean-shlib
-	rm -f lib$(NAME).a $(OBJS)
-
-distclean maintainer-clean: clean
-	rm -f GNUmakefile
-
-
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
-
-.PHONY: all install installdirs install-headers install-lib install-ini clean distclean maintainer-clean
-
-
-GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
-	cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-
-$(top_builddir)/config.status: $(top_srcdir)/configure
-	cd $(top_builddir) && ./config.status --recheck
diff --git a/src/interfaces/perl5/GNUmakefile.in b/src/interfaces/perl5/GNUmakefile
similarity index 69%
rename from src/interfaces/perl5/GNUmakefile.in
rename to src/interfaces/perl5/GNUmakefile
index 29bd818ee6604580d468dc5d04cdcf047b23d84b..ae40e85f38e258bfb24d8295802cf846ba10bf01 100644
--- a/src/interfaces/perl5/GNUmakefile.in
+++ b/src/interfaces/perl5/GNUmakefile
@@ -1,23 +1,14 @@
 # This file is an interface from the Autoconf world to Perl's
 # MakeMaker world, so that the latter behaves (kind of) like the
 # former would prefer. Internally, we call Perl to create another
-# Makefile according to it's own ideas and then invoke the rules from
+# Makefile according to its own ideas and then invoke the rules from
 # that file.
 #
-# $Header: /cvsroot/pgsql/src/interfaces/perl5/Attic/GNUmakefile.in,v 1.1 2000/06/10 18:01:56 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/perl5/Attic/GNUmakefile,v 1.1 2000/06/28 18:29:56 petere Exp $
 
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-top_srcdir = @top_srcdir@
+subdir = src/interfaces/perl5
 top_builddir = ../../..
-
-PERL = @PERL@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-libdir = @libdir@
-includedir = @includedir@
+include ../../Makefile.global
 
 
 all: Makefile libpq-all
@@ -26,6 +17,7 @@ all: Makefile libpq-all
 Makefile: Makefile.PL
 	$(PERL) $< POLLUTE=1
 
+.PHONY: libpq-all
 libpq-all:
 	$(MAKE) -C $(top_builddir)/src/interfaces/libpq all
 
@@ -39,7 +31,7 @@ libpq-all:
 # purer alternative would naturally be the ability to select the
 # installation directory somewhere.
 
-install: Makefile libpq-install
+install: Makefile
 	$(MAKE) -f Makefile clean
 	POSTGRES_LIB="$(libdir)" \
 	  POSTGRES_INCLUDE="$(includedir)" \
@@ -56,16 +48,17 @@ install: Makefile libpq-install
 		echo "*****"; \
 	fi
 
-libpq-install:
-	$(MAKE) -C $(top_builddir)/src/interfaces/libpq install
-
-# Note: Perl's idea of "clean" is a little different, so we use "realclean"
-
-clean:
-	-[ -f Makefile ] && $(MAKE) -f Makefile realclean
-
-distclean maintainer-clean: clean
-	rm -f GNUmakefile
 
+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 "*****"
 
-.PHONY: all install clean distclean maintainer-clean libpq-all libpq-install
+clean distclean maintainer-clean:
+	-[ -f Makefile ] && $(MAKE) -f Makefile clean
+	rm -f Makefile Makefile.old
diff --git a/src/interfaces/python/GNUmakefile.in b/src/interfaces/python/GNUmakefile
similarity index 71%
rename from src/interfaces/python/GNUmakefile.in
rename to src/interfaces/python/GNUmakefile
index 2dd40954e3da425afcf3a31f74f6f8cb85550e58..1917c75c49e48b902d7908ad2ecb90ae8a9afba9 100644
--- a/src/interfaces/python/GNUmakefile.in
+++ b/src/interfaces/python/GNUmakefile
@@ -1,38 +1,21 @@
 #-------------------------------------------------------------------
 #
-# Makefile for src/interfaces/python, a.k.a. "PyGreSQL"
+# GNUmakefile for src/interfaces/python, a.k.a. "PyGreSQL"
 #
 # Written by Peter Eisentraut  <peter_e@gmx.net>
 #
-# $Header: /cvsroot/pgsql/src/interfaces/python/Attic/GNUmakefile.in,v 1.1 2000/06/10 18:02:00 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/python/Attic/GNUmakefile,v 1.1 2000/06/28 18:30:07 petere Exp $
 #
 #-------------------------------------------------------------------
 
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-top_srcdir = @top_srcdir@
+subdir = src/interfaces/python
 top_builddir = ../../..
-
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-libdir = @libdir@
-includedir = @includedir@
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-LIBS = @LIBS@
-
-PYTHON = @PYTHON@
-python_extmakefile = @python_extmakefile@
-python_moduledir = @python_moduledir@
-
+include ../../Makefile.global
 
 all: Makefile pgmodule.c libpq-all
 	$(MAKE) -f Makefile
 
+.PHONY: libpq-all
 libpq-all:
 	$(MAKE) -C $(top_builddir)/src/interfaces/libpq all
 
@@ -60,15 +43,15 @@ install: all
 		echo "*****"; \
 	fi
 
+uninstall:
+	@echo "*****"; \
+	 echo "* Unfortunately, the Python interface module cannot be uninstalled"; \
+	 echo "* automatically. To do it yourself, look in or near the directory"; \
+	 echo "* \`$(python_moduledir)' for files \`pg.py' and \`_pgmodule$(DLSUFFIX)'."; \
+	 echo "*****"
 
 # Python sometimes has a different idea what exactly "clean" is.
 
-clean:
+clean distclean maintainer-clean:
 	-[ -f Makefile ] && $(MAKE) -f Makefile clobber
 	rm -f Makefile.pre.in Makefile Setup Setup.in
-
-distclean maintainer-clean: clean
-	rm -f GNUmakefile
-
-
-.PHONY: all libpq-all install clean distclean maintainer-clean
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index 0e34b2e3d7c41a6723bb8b3149cfd51a9f8be39e..5f7d8ec12067d173d7b144aa2fce55f88def70f2 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/pgsql/src/pl/plperl/GNUmakefile,v 1.1 2000/06/27 00:31:49 petere Exp $
+# $Header: /cvsroot/pgsql/src/pl/plperl/GNUmakefile,v 1.2 2000/06/28 18:30:12 petere Exp $
 
 subdir = src/pl/plperl
 top_builddir = ../../..
@@ -25,4 +25,5 @@ uninstall:
 	rm -f $(libdir)/plperl$(DLSUFFIX)
 
 clean distclean maintainer-clean:
-	-[ -f Makefile ] && $(MAKE) -f Makefile realclean
+	-[ -f Makefile ] && $(MAKE) -f Makefile clean
+	rm -f Makefile Makefile.old
diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile
index 4abc335ee413bbf0cda9c6f69948b9c8a6b4b5b6..5cf37052f0d8c6f10d5cc21bfddacf2147ef5490 100644
--- a/src/pl/plpgsql/src/Makefile
+++ b/src/pl/plpgsql/src/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for the plpgsql shared object
 #
-# $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Makefile,v 1.3 2000/06/27 00:32:01 petere Exp $
+# $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Makefile,v 1.4 2000/06/28 18:30:16 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -19,7 +19,9 @@ CPPFLAGS += -I$(srcdir)
 
 OBJS = pl_parse.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o
 
-# Shared library stuff, also default `all' target
+all: all-lib
+
+# Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
 
 
@@ -68,8 +70,8 @@ mklang.sql: mklang.sql.in
 	sed -e 's%__libdir__%$(libdir)%g' -e 's%__DLSUFFIX__%$(DLSUFFIX)%g' < $< > $@
 
 
-clean distclean: clean-shlib
-	rm -f lib$(NAME).a *.o y.tab.c y.tab.h lex.yy.c mklang.sql
+clean distclean: clean-lib
+	rm -f *.o y.tab.c y.tab.h lex.yy.c mklang.sql
 
 maintainer-clean: clean
 	rm -f $(srcdir)/pl_gram.c $(srcdir)/pl.tab.h $(srcdir)/pl_scan.c