Subject: make: making .WAIT recursive
To: None <tech-toolchain@netbsd.org>
From: Alan Barrett <apb@cequrux.com>
List: tech-toolchain
Date: 02/12/2006 09:08:19
As has been mentioned by others, .WAIT doesn't do what we want.

Given

	foo: a .WAIT b	; echo foo
	a:		; echo a
	b: b1 b2	; echo b
	b1:		; echo b1
	b2:		; echo b2

a parallel make will always make "a" before making "b", but it will not
always make "a" before making "b1" or "b2".

There's a similar issue with .ORDER.  Given

	foo: a b	; echo foo
	.ORDER: a b
	a:		; echo a
	b: b1 b2	; echo b
	b1:		; echo b1
	b2:		; echo b2

the existing behaviour is identical to the existing behaviour 
if the .WAIT example.


Would it be reasonable to make ".WAIT" apply recursively to all children
of the targets on the right hand side, but to leave ".ORDER" with its
existing non-recursive behaviour?  Or would it be better to retain the
existing behaviour of both .WAIT and .ORDER, but add new recursive
variants of both (say ".WAITRECURSIVE" and ".ORDERRECURSIVE", or better
names if anybody can suggest them)?

--apb (Alan Barrett)