automake-1.16: User Variables

 
 3.6 Variables reserved for the user
 ===================================
 
 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.  However, the
 package itself should never set a user variable, particularly not to
 include switches that 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’.
 The package maintainer—that is, the author(s) of the ‘Makefile.am’ and
 ‘configure.ac’ files—may adjust these shadow variables however
 necessary.
 
    ⇒Flag Variables Ordering, for more discussion about these
 variables and how they interact with per-target variables.