On Wed, 5 Jul 2017, Marc Espie wrote:
> This is a very slight deviation from posix rules, but not in spirit. My
> interpretation is that posix rules describe the intent of the make rules
> (produce a file in such a way), but don't really care about intermediate
> names.
...
> .l.c:
> - ${LEX.l} ${.IMPSRC}
> - mv lex.yy.c ${.TARGET}
> + ${LEX.l} -o ${.TARGET} ${.IMPSRC}
Only concern I would have is whether an up-to-date-but-broken .c file
would be left behind if lex fails after creating the file, resulting in
the next build thinking it doesn't need to run lex (and then doing the
Wrong Thing with the broken file).
Will lex remove the bogus output file if it fails? (That's a benefit to
using "-o $@" and _not_ ">$@", as the former gives lex the name of the
file so it can cleanup on failure.)
(The current rule of course doesn't have this issue because the broken
file left behind would be the intermediate and not the actual target.)
Philip