|
From: | Brendan Heading |
Subject: | Re: Improvement on parallel make |
Date: | Mon, 11 Dec 2006 21:43:24 +0000 |
User-agent: | Thunderbird 1.5.0.8 (Windows/20061025) |
Alexey Neyman wrote:
<<< foo: bar .WAIT baz fum: bar boo fun: baz buu <<<the command "make -j 4 fum fun" will still serialize the "bar" and "baz" targets, with "bar" completed before "baz" is started. Note that the targets command line does not include "foo" - which specifies the .WAIT behavior.
Further to my reply to Philip earlier, why would bar and baz need to be serialized in the first place unless there was a dependency ? And if there is a dependency, why would someone chose to use this syntax rather than making that dependency explicit in the Makefile ?
BSD make behaves so, because it records the "bar" target as a predecessor for the "baz" target. If both targets are to be remade, they will be serialized. If only one is to be remade, there will be no serialization imposed.
Is this an attempt to try to make GNU make compatible with BSD make ? I do not believe that alone is sufficient justification for introducing a measure that appears to exist only to work around the fact that some people may not understand how to define dependencies correctly in their makefiles.
It would be interesting to hear of some real-world cases involving valid/recommended uses of Make, which require this suspicious-looking syntax.
[Prev in Thread] | Current Thread | [Next in Thread] |