Next: Programs automake might require, Previous: How derived variables are named, Up: General ideas [Contents][Index]
Some Makefile
variables are reserved by the GNU Coding Standards
for the use of the “user” – the person building the package. For
instance, CFLAGS
is one such variable.
Sometimes package developers are tempted to set user variables such as
CFLAGS
because it appears to make their job easier – they don’t
have to introduce a second variable into every target.
However, the package itself should never set a user variable, particularly not to include switches which are required for proper compilation of the package. Since these variables are documented as being for the package builder, that person rightfully expects to be able to override any of these variables at build time.
To get around this problem, automake introduces an automake-specific
shadow variable for each user flag variable. (Shadow variables are not
introduced for variables like CC
, where they would make no
sense.) The shadow variable is named by prepending ‘AM_’ to the
user variable’s name. For instance, the shadow variable for
YFLAGS
is AM_YFLAGS
.