1##--------------------------------------------------------------------- 2# GNUmakefile for tcl (to build partially parallel) 3##--------------------------------------------------------------------- 4 5DSTROOT ?= /tmp/tcl/Release 6OBJROOT ?= /tmp/tcl/Objects 7SYMROOT ?= /tmp/tcl/Symbols 8export DSTROOT OBJROOT SYMROOT 9PARTS = 1 2 3 10TESTOK := -f $(shell echo $(foreach p,$(PARTS),"$(OBJROOT)/.ok$(p)") | sed 's/ / -a -f /g') 11 12install:: 13 mkdir -p "$(DSTROOT)" "$(SYMROOT)" 14 @set -x && \ 15 for p in $(PARTS); do \ 16 mkdir -p "$(OBJROOT)/DSTROOT$$p" && \ 17 mkdir -p "$(OBJROOT)/OBJROOT$$p" || exit 1; \ 18 (echo "######## Building part $$p:" `date` '########' > "$(SYMROOT)/LOG$$p" 2>&1 && \ 19 $(MAKE) -f Makefile install$$p \ 20 DSTROOT="$(OBJROOT)/DSTROOT$$p" \ 21 OBJROOT="$(OBJROOT)/OBJROOT$$p" \ 22 >> "$(SYMROOT)/LOG$$p" 2>&1 && \ 23 touch "$(OBJROOT)/.ok$$p" && \ 24 echo "######## Finished part $$p:" `date` '########' >> "$(SYMROOT)/LOG$$p" 2>&1 \ 25 ) & \ 26 done && \ 27 wait && \ 28 for p in $(PARTS); do \ 29 cat "$(SYMROOT)/LOG$$p" && \ 30 rm -f "$(SYMROOT)/LOG$$p" || exit 1; \ 31 done && \ 32 if [ $(TESTOK) ]; then \ 33 $(MAKE) merge; \ 34 else \ 35 echo '#### error detected, not merging'; \ 36 exit 1; \ 37 fi 38 39merge: 40 @set -x && \ 41 for p in $(PARTS); do \ 42 ditto "$(OBJROOT)/DSTROOT$$p" "$(DSTROOT)" || exit 1; \ 43 done 44 45.DEFAULT: 46 @$(MAKE) -f Makefile $@ 47