help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Improvement on parallel make


From: Christophe LYON
Subject: Re: Improvement on parallel make
Date: Mon, 11 Dec 2006 13:50:00 +0100
User-agent: Thunderbird 1.5 (X11/20051201)

Alexey,


1. This patch is subject to the same deficiencies as I mentioned at http://lists.gnu.org/archive/html/help-make/2006-04/msg00152.html, but in other way: in that example, when one runs "make -j b a", the jobs updating "x1" and "x2" are started in parallel. The rule in makefile, however, requests serialization of "x1" and "x2".

I don't think so:
x2 will wait for x1 to complete, and x3 will wait for x2.

You may have noticed that my patch differs from yours in that the .wait property, although first tracked on the deps list, is later propagated at the file level.

2. The .WAIT semantics you implemented differs from its origins in BSD make: it waits for *all* dependencies preceding .WAIT, not for the last one. Note that it is not equivalent to placing .WAIT between each and every dependency.


Yes, I realized that. However, I think that what I implemented is much simpler and gives already an interesting feature.

If one wants to have:
foo: a1 a2 .WAIT a3 handled in the BSD way (that is, a3 waits for both a1 and a2), one can rewrite the rule as:

a-parallel: a1 a2
foo: a-parallel .WAIT a3

3. BSD make associates the .WAIT semantics with a target, not with a dependency. While being a slight difference, it could be a nuisance to those with BSD make "background".

In the message mentioned above I described how .WAIT is implemented in BSD make; that seems to be the "right" approach. However, it is a large change - that I haven't had the time to implement, unfortunately.

As I have no such BSD background, this is not a problem to me ;-)

Maybe we could accept a different behaviour that BSD's. (Well, I hope so ;-)

Christophe.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]