Here is a patch so that the backend is linked in one piece instead of using 
the SUBSYS.o files.

The question is how we want to activate that.  I currently used make 
BIGLINK=1, which is obviously just for testing.  Should we just turn it on by 
default and see if anyone complains?

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/
diff -ur ../cvs-pgsql/src/backend/common.mk ./src/backend/common.mk
--- ../cvs-pgsql/src/backend/common.mk	2008-02-19 11:30:06.000000000 +0100
+++ ./src/backend/common.mk	2008-02-22 08:14:10.000000000 +0100
@@ -4,22 +4,31 @@
 # $PostgreSQL: pgsql/src/backend/common.mk,v 1.1 2008/02/19 10:30:06 petere Exp $
 #
 
-SUBDIROBJS = $(SUBDIRS:%=%/SUBSYS.o)
+ifdef BIGLINK
+subsysfilename = objfiles.txt
+else
+subsysfilename = SUBSYS.o
+endif
+
+SUBDIROBJS = $(SUBDIRS:%=%/$(subsysfilename))
 
-all: SUBSYS.o
+all: $(subsysfilename)
 
 SUBSYS.o: $(SUBDIROBJS) $(OBJS)
 	$(LD) $(LDREL) $(LDOUT) $@ $^
 
+objfiles.txt: $(SUBDIROBJS) $(OBJS)
+	( $(if $(SUBDIROBJS),cat $(SUBDIROBJS); )echo $(addprefix $(subdir)/,$(OBJS)) ) >$@
+
 $(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
 
 .PHONY: $(SUBDIRS:%=%-recursive)
 $(SUBDIRS:%=%-recursive):
-	$(MAKE) -C $(subst -recursive,,$@) SUBSYS.o
+	$(MAKE) -C $(subst -recursive,,$@) all
 
 clean: clean-local
 clean-local:
 ifdef SUBDIRS
 	for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean || exit; done
 endif
-	rm -f SUBSYS.o $(OBJS)
+	rm -f $(subsysfilename) $(OBJS)
diff -ur ../cvs-pgsql/src/backend/Makefile ./src/backend/Makefile
--- ../cvs-pgsql/src/backend/Makefile	2008-01-05 11:58:43.000000000 +0100
+++ ./src/backend/Makefile	2008-02-22 08:15:29.000000000 +0100
@@ -18,7 +18,13 @@
 	main nodes optimizer port postmaster regex rewrite \
 	storage tcop tsearch utils $(top_builddir)/src/timezone
 
-SUBSYSOBJS = $(DIRS:%=%/SUBSYS.o)
+ifdef BIGLINK
+subsysfilename = objfiles.txt
+else
+subsysfilename = SUBSYS.o
+endif
+
+SUBSYSOBJS = $(DIRS:%=%/$(subsysfilename))
 
 ifeq ($(enable_dtrace), yes)
 LOCALOBJS += utils/probes.o
@@ -41,7 +47,7 @@
 ifneq ($(PORTNAME), aix)
 
 postgres: $(OBJS)
-	$(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ $(LIBS) -o $@
+	$(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $(foreach file,$(filter %/objfiles.txt,$^),$(patsubst ../../src/backend/%,%,$(addprefix $(top_builddir)/,$(shell cat $(file))))) $(filter-out %/objfiles.txt,$^) $(LIBS) -o $@
 
 endif
 endif
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to