Package: make
Version: 3.82-1
Severity: important
Control: block 720706 by -1

With the following 3 makefiles:

###################### Makefile #############
all: a b
a:
        $(MAKE) -C data

b:
        $(MAKE) -C src

clean:
        $(MAKE) -C src clean
        $(MAKE) -C data clean

.PHONY: all a b clean
################## src/Makefile #############
all: A1 A2 A3 A4 A5 A6 A7

A1 A2 A3 A4 A5 A6 A7:
        sleep 10 > $@

clean:
        -rm -f A*

.PHONY: all clean
################# data/Makefile #############
SHELL = /bin/bash

# Give directory a/ a chance to start anything:
test := $(shell sleep 1)

.PHONY: all clean

list = B1 B2 B3 B4 B5

all: $(list)

B3: B1 B2
B5: B3

B%:
        @for pred in $^ ; do printf %s "$@: checking $$pred: " ; if test -f 
$$pred ; then echo found ; else echo "not found" ; exit 1 ; fi ; done
        echo $^ > $@

.SECONDARY: $(list)

clean:
        rm -f B*

#############################################

and running make -j8 in the top level directory, I get:

$ make -j8
make -C data
make -C src
make[1]: Entering directory `/mydir/src'
sleep 10 > A1
sleep 10 > A2
sleep 10 > A3
sleep 10 > A4
sleep 10 > A5
sleep 10 > A6
sleep 10 > A7
make[1]: Entering directory `/mydir/data'
echo  > B1
echo  > B2
echo  > B4
B5: checking B3: not found
make[1]: *** [B5] Error 1
[...]

That means despite make knowing that B3 is a prerequisite to B5,
B5 is run with B3 not yet done in this case.

-- System Information:
Debian Release: jessie/sid
Architecture: amd64 (x86_64)

Versions of packages make depends on:
ii  libc6  2.17-92+b1

-- no debconf information


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to