(I don't think Reid is subscribed to the list so I added him back)
%% Boris Kolpackov <[EMAIL PROTECTED]> writes: bk> What happens if I have this makefile: bk> foo: bar .WAIT baz bk> fox: bar baz Using my rules, bar and baz are built in parallel. bk> When I say 'make fox' is serialization still there? If the answer bk> is 'no', then how about this makefile: bk> all: foo fox bk> foo: bar .WAIT baz bk> fox: bar baz bk> I think the answer is 'yes' (or should be 'yes'). If so then it bk> strikes as terribly asymmetric hack. What happens in this case: Using my rules, bar and baz ARE built in parallel. The rules I mentioned in this list apply only between the two prerequisites listed, in that pathway. If the "waited for" prerequisite appears on any other path where it is not waited for, then it's fair game for parallelization. For those familiar with the make code, I was thinking that the WAIT would be a function of the deps list not the target itself. bk> all: foo fox bk> foo: bar .WAIT baz biz bk> fox: bar baz .WAIT biz bar & baz are parallel; biz is eligible to be run as soon as "bar" is done. bk> all: foo fox bk> foo: bar .WAIT baz bk> bar: baz This one doesn't even need .WAIT: in this case bar won't be started until baz is run anyway because baz is a prerequisite of bar. bk> IMO, the proper mechanism for something like this (which, I think, bk> is not necessary, as stated above) would be to further relax bk> order-only prerequisites model by removing the requirement of bk> actually building such prerequisites (aka, "truly" order-only bk> ;-)). No, no... order-only prerequisites ARE truly order-only. The difference is that they apply to the TARGET, whereas .WAIT applies to the prerequisites that appear around it. That is, if you say: foo: bar baz biz boz booz bar: | baz biz boz booz then this is the same thing, only shorter, as saying: foo: bar .WAIT baz biz boz booz I think...? I haven't had my tea yet this morning but I think that's right. If I AM right, then I wonder if .WAIT is really necessary...? Hm. Actually, the order-only version is much STRONGER than the .WAIT version because it applies to the targets as a whole, not just to how they appear within a single prerequisite list. That is, rewriting the "odd" examples above this way would give very different answers than the ones I gave before. Can you be a little more detailed about what you were thinking, Boris? -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make