Am Samstag, 20. Januar 2007 16:12 schrieb Paul Smith: > On Fri, 2007-01-19 at 20:01 +0100, Dirk Heinrichs wrote: > > I'm using GNU make 3.81 (on Linux, if this is important) and see strange > > behaviour in parallel builds with the following Makefile: > > > > file1.txt file2.txt: file.in > > cat $< >file1.txt|tee file2.txt > > > > test: file1.txt file2.txt > > cat $^ >$@ > > > > In a normal build, make does the right thing: > > > > % make test > > cat file.in >file1.txt|tee file2.txt > > cat file1.txt file2.txt >test > > > > In case of a parallel build, the "cat ... | tee ..." command for > > file[12].txt is executed twice, which should not happen: > > > > % make -j 2 test > > cat file.in >file1.txt|tee file2.txt > > cat file.in >file1.txt|tee file2.txt > > cat file1.txt file2.txt >test > > Make is behaving correctly here. Multiple targets in a single rule does > not mean "all these targets are built from one invocation of the rule". > It means that each of these targets has the same prerequisites and rule, > and will be built one at a time by running the rule. IOW, this: > > a b c : d e f ; command > > is identical to writing this: > > a : d e f ; command > b : d e f ; command > c : d e f ; command > > See the GNU make manual for details.
So if make behaves correctly in the parallel case, does this mean that the non-parallel case is wrong? Bye... Dirk
pgpUBh0pKtWPA.pgp
Description: PGP signature
_______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make