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

Reply via email to