Paul Smith wrote, on 08 Sep 2022: > > > https://austingroupbugs.net/view.php?id=514#c5962 > > --------------------------------------------------------------------- > > - > > On D2.1 page 2947 line 98895, after applying bug 1520, > > change:<blockquote>The $^ macro shall evaluate to the list of > > prerequisites for the current target.</blockquote>to:<blockquote>The > > $^ macro shall evaluate to the list of prerequisites for the current > > target, with any duplicates (except the first) removed.</blockquote> > > On D2.1 page 2947 after line 98895 add:<blockquote>$+<blockquote>The > > $+ macro shall be equivalent to $^, except that duplicates shall not > > be removed; all prerequisites shall appear in the order they were > > listed in the makefile</blockquote></blockquote> > > This was closed before I had a chance to comment on the wording but a > few things: > > First, this text doesn't mention the .WAIT prerequisites that were > added as optional features; do we need to add text for how these are > included (or not) in $^? Or, are they just included like any other > prerequisite? > > Or did .WAIT not get included? I can't remember. This was the subject > of https://austingroupbugs.net/view.php?id=1520 which itself doesn't > mention the removal of duplicate entries, as the above text does.
Lawrence answered this part (correctly). > Second, the wording of the $^ implies that when duplicates are seen the > it's always the first instance which is preserved and subsequent > instances are omitted, which means order is preserved. Is that > requirement intentional? It's intentional. I tried 'all: a b a c' with the GNU, Solaris 11.4 and FreeBSD implementations and they all expanded $^ (or $> for FreeBSD) to 'a b c'. Are you suggesting that there are circumstances where one of these implementations might not preserve the order? -- Geoff Clare <g.cl...@opengroup.org> The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England