diff --git a/src/include/Makefile b/src/include/Makefile
index df3c9a2f89ca07f533ddfb4630ec51b2d2b1845f..374247a20d786ba43edcdc579ce64a126c1f3435 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -6,7 +6,7 @@
 # programming.  'make install-all-headers' installs the whole contents
 # of src/include.
 #
-# $Header: /cvsroot/pgsql/src/include/Makefile,v 1.6 2001/02/10 02:31:28 tgl Exp $
+# $Header: /cvsroot/pgsql/src/include/Makefile,v 1.7 2001/02/20 20:37:13 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -32,7 +32,7 @@ all: $(HEADERS)
 
 # Install only selected headers
 
-install: all installdirs
+install: all installdirs remove-old-headers
 	for file in $(srcdir_headers); do \
 	  $(INSTALL_DATA) $(srcdir)/$$file $(DESTDIR)$(includedir)/$$file || exit; \
 	done
@@ -64,6 +64,24 @@ install-all-dirs:
 	$(mkinstalldirs) $(addprefix $(DESTDIR)$(includedir)/, $(SUBDIRS))
 
 
+# Pre-7.1 Postgres installed some headers that are no longer installed by
+# default.  If we see these headers in the target directory, zap them to
+# avoid cross-version compile problems.  However, don't zap them if they
+# match current sources (that means the user did install-all-headers).
+
+remove-old-headers:
+	for file in fmgr.h postgres.h access/attnum.h commands/trigger.h \
+		executor/spi.h utils/elog.h utils/geo_decls.h utils/mcxt.h \
+		utils/palloc.h; do \
+		if cmp -s $(srcdir)/$$file $(DESTDIR)$(includedir)/$$file; \
+		then \
+			: ; \
+		else \
+			rm -f $(DESTDIR)$(includedir)/$$file; \
+		fi \
+	done
+
+
 # This isn't a complete uninstall, but rm'ing everything under
 # $(DESTDIR)$(includedir) is probably too drastic...
 uninstall: