porter's handbook documentation on avoiding != variable assignments

Kris Kennaway kris at FreeBSD.org
Sat Jul 19 18:30:10 UTC 2008


Can someone add to the PH a version of the advice below?  It might need 
to be fleshed out a bit to provide more context.

Kris

> Variable assignments with != are bad!  Try as hard as you can to avoid 
> using them -- especially in Mk/*!  Every time something processes your 
> makefile it will spawn a command, even if it is not relevant for the 
> operation being performed.  If you need to run shell commands, try to 
> isolate them within a makefile target.  You can avoid code duplication 
> by assigning the *shell commands* (not their output) to a variable and 
> inserting it into your code block.
> 
> e.g. instead of
> 
> -- 
> VARIABLE!=    do some shell stuff; do some other stuff
> 
> target:
>     echo ${VARIABLE}
> -- 
> 
> do this (or similar):
> 
> -- 
> VARIABLE_CMDS=    do some shell stuff; do some other stuff
> 
> target:
>     echo $$(${VARIABLE_CMDS})
> -- 
> 
> This defers the command execution to the point where the target runs, so 
> in the case when the target is *not* run (e.g. during INDEX builds or
> other recursive port traversals), then you avoid wasting one or 
> more process executions.




More information about the freebsd-ports mailing list