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