I want to work on getting rid of the SUBSYS.o things in the backend build, 
ideally in some way to supports both the current and the new way of building 
things (details to be defined).  To prepare for that, I have refactored some 
common rules in the backend makefiles.  See attached patch.  This should not 
change any functionality of the build system at the moment.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/
diff --git a/src/backend/access/Makefile b/src/backend/access/Makefile
index 4753eac..df05f8e 100644
--- a/src/backend/access/Makefile
+++ b/src/backend/access/Makefile
@@ -9,19 +9,5 @@ top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS	    = common gist hash heap index nbtree transam gin
-SUBDIROBJS  = $(SUBDIRS:%=%/SUBSYS.o)
 
-all: SUBSYS.o
-
-SUBSYS.o: $(SUBDIROBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
-
-$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
-
-.PHONY: $(SUBDIRS:%=%-recursive)
-$(SUBDIRS:%=%-recursive):
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
-
-clean:
-	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
-	rm -f SUBSYS.o
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/common/Makefile b/src/backend/access/common/Makefile
index 7adc66b..a334816 100644
--- a/src/backend/access/common/Makefile
+++ b/src/backend/access/common/Makefile
@@ -16,8 +16,4 @@ OBJS = heaptuple.o indextuple.o printtup.o reloptions.o scankey.o tupdesc.o
 
 all: SUBSYS.o
 
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/gin/Makefile b/src/backend/access/gin/Makefile
index 5bab415..c5872d3 100644
--- a/src/backend/access/gin/Makefile
+++ b/src/backend/access/gin/Makefile
@@ -16,10 +16,4 @@ OBJS = ginutil.o gininsert.o ginxlog.o ginentrypage.o gindatapage.o \
 	ginbtree.o ginscan.o ginget.o ginvacuum.o ginarrayproc.o \
 	ginbulk.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/gist/Makefile b/src/backend/access/gist/Makefile
index d1e3266..8d3a6d0 100644
--- a/src/backend/access/gist/Makefile
+++ b/src/backend/access/gist/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = gist.o gistutil.o gistxlog.o gistvacuum.o gistget.o gistscan.o \
        gistproc.o gistsplit.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/hash/Makefile b/src/backend/access/hash/Makefile
index f653a83..df7563c 100644
--- a/src/backend/access/hash/Makefile
+++ b/src/backend/access/hash/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = hash.o hashfunc.o hashinsert.o hashovfl.o hashpage.o hashscan.o \
        hashsearch.o hashutil.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/heap/Makefile b/src/backend/access/heap/Makefile
index abd3212..1674467 100644
--- a/src/backend/access/heap/Makefile
+++ b/src/backend/access/heap/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = heapam.o hio.o pruneheap.o rewriteheap.o syncscan.o tuptoaster.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/index/Makefile b/src/backend/access/index/Makefile
index d849b26..5469970 100644
--- a/src/backend/access/index/Makefile
+++ b/src/backend/access/index/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = genam.o indexam.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/nbtree/Makefile b/src/backend/access/nbtree/Makefile
index b833ef9..323a2f3 100644
--- a/src/backend/access/nbtree/Makefile
+++ b/src/backend/access/nbtree/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = nbtcompare.o nbtinsert.o nbtpage.o nbtree.o nbtsearch.o \
        nbtutils.o nbtsort.o nbtxlog.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/access/transam/Makefile b/src/backend/access/transam/Makefile
index 9d7c23c..8532d28 100644
--- a/src/backend/access/transam/Makefile
+++ b/src/backend/access/transam/Makefile
@@ -14,13 +14,7 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = clog.o transam.o varsup.o xact.o xlog.o xlogutils.o rmgr.o slru.o subtrans.o multixact.o twophase.o twophase_rmgr.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
 
 # ensure that version checks in xlog.c get recompiled when catversion.h changes
 xlog.o: xlog.c $(top_srcdir)/src/include/catalog/catversion.h
diff --git a/src/backend/bootstrap/Makefile b/src/backend/bootstrap/Makefile
index bd55e3f..026e096 100644
--- a/src/backend/bootstrap/Makefile
+++ b/src/backend/bootstrap/Makefile
@@ -14,10 +14,7 @@ override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
 
 OBJS= bootparse.o bootstrap.o 
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
+include $(top_srcdir)/src/backend/common.mk
 
 
 # bootscanner is compiled as part of bootparse
@@ -50,6 +47,5 @@ bootstrap.o bootparse.o: $(srcdir)/bootstrap_tokens.h
 # bootparse.c, bootstrap_tokens.h, and bootscanner.c are in the distribution
 # tarball, so they are not cleaned here.
 clean:
-	rm -f SUBSYS.o $(OBJS)
 # And the garbage that might have been left behind by partial build:
 	@rm -f y.tab.h y.tab.c y.output lex.yy.c
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index cda6c4d..23201d1 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -17,10 +17,9 @@ OBJS = catalog.o dependency.o heap.o index.o indexing.o namespace.o aclchk.o \
 
 BKIFILES = postgres.bki postgres.description postgres.shdescription
 
-all: SUBSYS.o $(BKIFILES)
+include $(top_srcdir)/src/backend/common.mk
 
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
+all: $(BKIFILES)
 
 # Note: there are some undocumented dependencies on the ordering in which
 # the catalog header files are assembled into postgres.bki.  In particular,
@@ -67,4 +66,4 @@ uninstall-data:
 	rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
 
 clean:
-	rm -f SUBSYS.o $(OBJS) $(BKIFILES)
+	rm -f $(BKIFILES)
diff --git a/src/backend/commands/Makefile b/src/backend/commands/Makefile
index 1b7ef08..7925e7b 100644
--- a/src/backend/commands/Makefile
+++ b/src/backend/commands/Makefile
@@ -21,10 +21,4 @@ OBJS = aggregatecmds.o alter.o analyze.o async.o cluster.o comment.o  \
 	tsearchcmds.o typecmds.o user.o vacuum.o vacuumlazy.o \
 	variable.o view.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/common.mk b/src/backend/common.mk
new file mode 100644
index 0000000..dfbc7d1
--- /dev/null
+++ b/src/backend/common.mk
@@ -0,0 +1,19 @@
+SUBDIROBJS = $(SUBDIRS:%=%/SUBSYS.o)
+
+all: SUBSYS.o
+
+SUBSYS.o: $(SUBDIROBJS) $(OBJS)
+	$(LD) $(LDREL) $(LDOUT) $@ $^
+
+$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
+
+.PHONY: $(SUBDIRS:%=%-recursive)
+$(SUBDIRS:%=%-recursive):
+	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
+
+clean: clean-local
+clean-local:
+ifdef SUBDIRS
+	for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean || exit; done
+endif
+	rm -f SUBSYS.o $(OBJS)
diff --git a/src/backend/executor/Makefile b/src/backend/executor/Makefile
index 0d939c2..9149265 100644
--- a/src/backend/executor/Makefile
+++ b/src/backend/executor/Makefile
@@ -23,10 +23,4 @@ OBJS = execAmi.o execCurrent.o execGrouping.o execJunk.o execMain.o \
        nodeValuesscan.o nodeLimit.o nodeGroup.o \
        nodeSubplan.o nodeSubqueryscan.o nodeTidscan.o tstoreReceiver.o spi.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/lib/Makefile b/src/backend/lib/Makefile
index 116adad..f362d50 100644
--- a/src/backend/lib/Makefile
+++ b/src/backend/lib/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = dllist.o stringinfo.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/libpq/Makefile b/src/backend/libpq/Makefile
index 2edac24..43f5bca 100644
--- a/src/backend/libpq/Makefile
+++ b/src/backend/libpq/Makefile
@@ -17,11 +17,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = be-fsstubs.o be-secure.o auth.o crypt.o hba.o ip.o md5.o pqcomm.o \
        pqformat.o pqsignal.o
 
-
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/main/Makefile b/src/backend/main/Makefile
index 3698729..e31446d 100644
--- a/src/backend/main/Makefile
+++ b/src/backend/main/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = main.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/nodes/Makefile b/src/backend/nodes/Makefile
index 9cdf2b2..d317125 100644
--- a/src/backend/nodes/Makefile
+++ b/src/backend/nodes/Makefile
@@ -16,10 +16,4 @@ OBJS = nodeFuncs.o nodes.o list.o bitmapset.o tidbitmap.o \
        copyfuncs.o equalfuncs.o makefuncs.o \
        outfuncs.o readfuncs.o print.o read.o params.o value.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/Makefile b/src/backend/optimizer/Makefile
index a675c55..046297e 100644
--- a/src/backend/optimizer/Makefile
+++ b/src/backend/optimizer/Makefile
@@ -9,19 +9,5 @@ top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS     = geqo path plan prep util
-SUBDIROBJS  = $(SUBDIRS:%=%/SUBSYS.o)
 
-all: SUBSYS.o
-
-SUBSYS.o: $(SUBDIROBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
-
-$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
-
-.PHONY: $(SUBDIRS:%=%-recursive)
-$(SUBDIRS:%=%-recursive):
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
-
-clean:
-	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
-	rm -f SUBSYS.o
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/geqo/Makefile b/src/backend/optimizer/geqo/Makefile
index ebd4ef5..5f1e1b0 100644
--- a/src/backend/optimizer/geqo/Makefile
+++ b/src/backend/optimizer/geqo/Makefile
@@ -18,10 +18,4 @@ OBJS =	geqo_copy.o geqo_eval.o geqo_main.o geqo_misc.o \
 	geqo_selection.o \
 	geqo_erx.o geqo_pmx.o geqo_cx.o geqo_px.o geqo_ox1.o geqo_ox2.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/path/Makefile b/src/backend/optimizer/path/Makefile
index 52c2617..591574d 100644
--- a/src/backend/optimizer/path/Makefile
+++ b/src/backend/optimizer/path/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = allpaths.o clausesel.o costsize.o equivclass.o indxpath.o \
        joinpath.o joinrels.o orindxpath.o pathkeys.o tidpath.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/plan/Makefile b/src/backend/optimizer/plan/Makefile
index dab548b..2750117 100644
--- a/src/backend/optimizer/plan/Makefile
+++ b/src/backend/optimizer/plan/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = createplan.o initsplan.o planagg.o planmain.o planner.o \
 	setrefs.o subselect.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/prep/Makefile b/src/backend/optimizer/prep/Makefile
index f4f2902..f99a085 100644
--- a/src/backend/optimizer/prep/Makefile
+++ b/src/backend/optimizer/prep/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = prepjointree.o prepqual.o preptlist.o prepunion.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/optimizer/util/Makefile b/src/backend/optimizer/util/Makefile
index ae2985a..5b10a32 100644
--- a/src/backend/optimizer/util/Makefile
+++ b/src/backend/optimizer/util/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = clauses.o joininfo.o pathnode.o plancat.o predtest.o \
        relnode.o restrictinfo.o tlist.o var.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index 0e75021..7ceb9ba 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -18,11 +18,7 @@ OBJS= analyze.o gram.o keywords.o parser.o parse_agg.o parse_clause.o \
 
 FLEXFLAGS = -CF
 
-
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
+include $(top_srcdir)/src/backend/common.mk
 
 
 # scan is compiled as part of gram
@@ -63,6 +59,5 @@ gram.o keywords.o parser.o: $(srcdir)/parse.h
 # gram.c, parse.h, and scan.c are in the distribution tarball, so they
 # are not cleaned here.
 clean: 
-	rm -f SUBSYS.o $(OBJS)
 # And the garbage that might have been left behind by partial build:
 	@rm -f y.tab.h y.tab.c y.output lex.yy.c
diff --git a/src/backend/port/Makefile b/src/backend/port/Makefile
index 9869698..8bdeb9d 100644
--- a/src/backend/port/Makefile
+++ b/src/backend/port/Makefile
@@ -32,10 +32,7 @@ ifeq ($(PORTNAME), win32)
 OBJS+=win32/SUBSYS.o
 endif
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
+include $(top_srcdir)/src/backend/common.mk
 
 darwin/SUBSYS.o: darwin.dir
 
@@ -62,6 +59,6 @@ ipc_test: ipc_test.o pg_sema.o pg_shmem.o
 	$(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ $(LIBS) -o $@
 
 distclean clean:
-	rm -f SUBSYS.o $(OBJS) ipc_test ipc_test.o tas_cpp.s
+	rm -f ipc_test ipc_test.o tas_cpp.s
 	$(MAKE) -C darwin clean
 	$(MAKE) -C win32 clean
diff --git a/src/backend/postmaster/Makefile b/src/backend/postmaster/Makefile
index c5b0fdf..3456e9c 100644
--- a/src/backend/postmaster/Makefile
+++ b/src/backend/postmaster/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = autovacuum.o bgwriter.o fork_process.o pgarch.o pgstat.o postmaster.o \
 	syslogger.o walwriter.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/regex/Makefile b/src/backend/regex/Makefile
index 579d64b..a7ce57e 100644
--- a/src/backend/regex/Makefile
+++ b/src/backend/regex/Makefile
@@ -14,15 +14,9 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = regcomp.o regerror.o regexec.o regfree.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
 
 # mark inclusion dependencies between .c files explicitly
 regcomp.o: regcomp.c regc_lex.c regc_color.c regc_nfa.c regc_cvec.c regc_locale.c
 
 regexec.o: regexec.c rege_dfa.c
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
diff --git a/src/backend/rewrite/Makefile b/src/backend/rewrite/Makefile
index 9ae6e95..5bf84da 100644
--- a/src/backend/rewrite/Makefile
+++ b/src/backend/rewrite/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = rewriteRemove.o rewriteDefine.o \
        rewriteHandler.o rewriteManip.o rewriteSupport.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/Makefile b/src/backend/storage/Makefile
index 5d07afd..01ead15 100644
--- a/src/backend/storage/Makefile
+++ b/src/backend/storage/Makefile
@@ -9,19 +9,5 @@ top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS     = buffer file freespace ipc large_object lmgr page smgr
-SUBDIROBJS  = $(SUBDIRS:%=%/SUBSYS.o)
 
-all: SUBSYS.o
-
-SUBSYS.o: $(SUBDIROBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
-
-$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
-
-.PHONY: $(SUBDIRS:%=%-recursive)
-$(SUBDIRS:%=%-recursive):
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
-
-clean:
-	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
-	rm -f SUBSYS.o
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/buffer/Makefile b/src/backend/storage/buffer/Makefile
index 0fbe175..6b0132c 100644
--- a/src/backend/storage/buffer/Makefile
+++ b/src/backend/storage/buffer/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = buf_table.o buf_init.o bufmgr.o freelist.o localbuf.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/file/Makefile b/src/backend/storage/file/Makefile
index e171dd0..928fbb6 100644
--- a/src/backend/storage/file/Makefile
+++ b/src/backend/storage/file/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = fd.o buffile.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/freespace/Makefile b/src/backend/storage/freespace/Makefile
index 715bdd2..6d6dcde 100644
--- a/src/backend/storage/freespace/Makefile
+++ b/src/backend/storage/freespace/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = freespace.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/ipc/Makefile b/src/backend/storage/ipc/Makefile
index 621135d..5b3cd46 100644
--- a/src/backend/storage/ipc/Makefile
+++ b/src/backend/storage/ipc/Makefile
@@ -18,10 +18,4 @@ endif
 OBJS = ipc.o ipci.o pmsignal.o procarray.o shmem.o shmqueue.o \
 	sinval.o sinvaladt.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/large_object/Makefile b/src/backend/storage/large_object/Makefile
index ec2e7ed..f5ed7a6 100644
--- a/src/backend/storage/large_object/Makefile
+++ b/src/backend/storage/large_object/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = inv_api.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/lmgr/Makefile b/src/backend/storage/lmgr/Makefile
index aaf7e8e..a3dbfa4 100644
--- a/src/backend/storage/lmgr/Makefile
+++ b/src/backend/storage/lmgr/Makefile
@@ -14,10 +14,7 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = lmgr.o lock.o proc.o deadlock.o lwlock.o spin.o s_lock.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
 
 ifdef TAS
 TASPATH = $(top_builddir)/src/backend/port/tas.o
@@ -31,4 +28,4 @@ check: s_lock_test
 	./s_lock_test
 
 clean distclean maintainer-clean: 
-	rm -f SUBSYS.o $(OBJS) s_lock_test
+	rm -f s_lock_test
diff --git a/src/backend/storage/page/Makefile b/src/backend/storage/page/Makefile
index 3ee4673..3857634 100644
--- a/src/backend/storage/page/Makefile
+++ b/src/backend/storage/page/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS =  bufpage.o itemptr.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/storage/smgr/Makefile b/src/backend/storage/smgr/Makefile
index 6cabbec..2a7502a 100644
--- a/src/backend/storage/smgr/Makefile
+++ b/src/backend/storage/smgr/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = md.o smgr.o smgrtype.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/tcop/Makefile b/src/backend/tcop/Makefile
index 9ed4ac2..18c9057 100644
--- a/src/backend/tcop/Makefile
+++ b/src/backend/tcop/Makefile
@@ -18,10 +18,4 @@ ifneq (,$(filter $(PORTNAME),cygwin win32))
 override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
 endif
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS) 
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/tsearch/Makefile b/src/backend/tsearch/Makefile
index 8bf5f8e..6d942b0 100644
--- a/src/backend/tsearch/Makefile
+++ b/src/backend/tsearch/Makefile
@@ -21,13 +21,7 @@ OBJS = ts_locale.o ts_parse.o wparser.o wparser_def.o dict.o \
 	dict_ispell.o regis.o spell.o \
 	to_tsany.o ts_utils.o
 
-all: SUBSYS.o 
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $^
-
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
+include $(top_srcdir)/src/backend/common.mk
 
 .PHONY: install-data
 install-data: $(DICTFILES) installdirs
@@ -43,10 +37,3 @@ uninstall-data:
 	for i in $(DICTFILES); \
 		do rm -rf '$(DESTDIR)$(datadir)/$(DICTDIR)/'$$i ; \
 	done
-
-clean distclean maintainer-clean: 
-	rm -f SUBSYS.o $(OBJS)
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index c5fe8e1..b3ba7c1 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -8,25 +8,17 @@ subdir = src/backend/utils
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
+OBJS        = fmgrtab.o
 SUBDIRS     = adt cache error fmgr hash init mb misc mmgr resowner sort time
-SUBDIROBJS  = $(SUBDIRS:%=%/SUBSYS.o)
 
+include $(top_srcdir)/src/backend/common.mk
 
-all: SUBSYS.o fmgroids.h
+all: fmgroids.h
 
-SUBSYS.o: fmgrtab.o $(SUBDIROBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
-
-$(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
-
-.PHONY: $(SUBDIRS:%=%-recursive)
 $(SUBDIRS:%=%-recursive): fmgroids.h
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
 
 fmgroids.h fmgrtab.c: Gen_fmgrtab.sh $(top_srcdir)/src/include/catalog/pg_proc.h
 	AWK='$(AWK)' $(SHELL) $< $(top_srcdir)/src/include/catalog/pg_proc.h
 
-
 clean:
-	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
-	rm -f SUBSYS.o fmgrtab.o fmgroids.h fmgrtab.c
+	rm -f fmgroids.h fmgrtab.c
diff --git a/src/backend/utils/adt/Makefile b/src/backend/utils/adt/Makefile
index 9e1917f..5fa9ebd 100644
--- a/src/backend/utils/adt/Makefile
+++ b/src/backend/utils/adt/Makefile
@@ -33,10 +33,4 @@ OBJS = acl.o arrayfuncs.o array_userfuncs.o arrayutils.o bool.o \
 
 like.o: like.c like_match.c
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/cache/Makefile b/src/backend/utils/cache/Makefile
index 4c3bd06..85d6164 100644
--- a/src/backend/utils/cache/Makefile
+++ b/src/backend/utils/cache/Makefile
@@ -15,10 +15,4 @@ include $(top_builddir)/src/Makefile.global
 OBJS = catcache.o inval.o plancache.o relcache.o \
 	syscache.o lsyscache.o typcache.o ts_cache.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/error/Makefile b/src/backend/utils/error/Makefile
index 9455583..27e71a0 100644
--- a/src/backend/utils/error/Makefile
+++ b/src/backend/utils/error/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = assert.o elog.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/fmgr/Makefile b/src/backend/utils/fmgr/Makefile
index 64dff26..adfd931 100644
--- a/src/backend/utils/fmgr/Makefile
+++ b/src/backend/utils/fmgr/Makefile
@@ -16,11 +16,4 @@ OBJS = dfmgr.o fmgr.o funcapi.o
 
 override CPPFLAGS += -DDLSUFFIX=\"$(DLSUFFIX)\"
 
-
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/hash/Makefile b/src/backend/utils/hash/Makefile
index 310273a..a758f11 100644
--- a/src/backend/utils/hash/Makefile
+++ b/src/backend/utils/hash/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = dynahash.o hashfn.o pg_crc.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/init/Makefile b/src/backend/utils/init/Makefile
index f8e549f..fac22c5 100644
--- a/src/backend/utils/init/Makefile
+++ b/src/backend/utils/init/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = flatfiles.o globals.o miscinit.o postinit.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/mb/Makefile b/src/backend/utils/mb/Makefile
index 8644cea..7b01608 100644
--- a/src/backend/utils/mb/Makefile
+++ b/src/backend/utils/mb/Makefile
@@ -13,15 +13,8 @@ top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
 OBJS = encnames.o conv.o mbutils.o wchar.o wstrcmp.o wstrncmp.o
-DIRS = conversion_procs
 
-all install installdirs: SUBSYS.o
-
-uninstall distprep:
+include $(top_srcdir)/src/backend/common.mk
 
 clean distclean maintainer-clean:
-	rm -f SUBSYS.o $(OBJS)
-	@for dir in $(DIRS); do $(MAKE) -C $$dir $@; done
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) $@ $^
+	$(MAKE) -C conversion_procs $@
diff --git a/src/backend/utils/misc/Makefile b/src/backend/utils/misc/Makefile
index 797893b..07feea7 100644
--- a/src/backend/utils/misc/Makefile
+++ b/src/backend/utils/misc/Makefile
@@ -22,11 +22,7 @@ ifdef krb_srvtab
 override CPPFLAGS += -DPG_KRB_SRVTAB='"$(krb_srvtab)"'
 endif
 
-
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
 
 # guc-file is compiled as part of guc
 guc.o: $(srcdir)/guc-file.c
@@ -41,5 +37,4 @@ endif
 # Note: guc-file.c is not deleted by 'make clean',
 # since we want to ship it in distribution tarballs.
 clean: 
-	rm -f SUBSYS.o $(OBJS)
 	@rm -f lex.yy.c
diff --git a/src/backend/utils/mmgr/Makefile b/src/backend/utils/mmgr/Makefile
index 085ea2b..92c71d7 100644
--- a/src/backend/utils/mmgr/Makefile
+++ b/src/backend/utils/mmgr/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = aset.o mcxt.o portalmem.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/resowner/Makefile b/src/backend/utils/resowner/Makefile
index f6d716d..cb72cff 100644
--- a/src/backend/utils/resowner/Makefile
+++ b/src/backend/utils/resowner/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = resowner.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/sort/Makefile b/src/backend/utils/sort/Makefile
index 2cb8085..5ebbda8 100644
--- a/src/backend/utils/sort/Makefile
+++ b/src/backend/utils/sort/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = logtape.o tuplesort.o tuplestore.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean: 
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/utils/time/Makefile b/src/backend/utils/time/Makefile
index 6b7a6e1..89890e9 100644
--- a/src/backend/utils/time/Makefile
+++ b/src/backend/utils/time/Makefile
@@ -14,10 +14,4 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = combocid.o tqual.o
 
-all: SUBSYS.o
-
-SUBSYS.o: $(OBJS)
-	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-
-clean:
-	rm -f SUBSYS.o $(OBJS)
+include $(top_srcdir)/src/backend/common.mk
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to