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