Occasionally it is useful to know which Makefile variables Automake uses for compilations, and in which order (see Flag Variables Ordering); for instance, you might need to do your own compilation in some special cases.
Some variables are inherited from Autoconf; these are CC
,
CFLAGS
, CPPFLAGS
, DEFS
, LDFLAGS
, and
LIBS
.
There are some additional variables that Automake defines on its own:
AM_CPPFLAGS
¶The contents of this variable are passed to every compilation that invokes the C preprocessor; it is a list of arguments to the preprocessor. For instance, -I and -D options should be listed here.
Automake already provides some -I options automatically, in a
separate variable that is also passed to every compilation that invokes
the C preprocessor. In particular it generates ‘-I.’,
‘-I$(srcdir)’, and a -I pointing to the directory holding
config.h (if you’ve used AC_CONFIG_HEADERS
). You can
disable the default -I options using the nostdinc
option.
When a file to be included is generated during the build and not part
of a distribution tarball, its location is under $(builddir)
,
not under $(srcdir)
. This matters especially for packages that
use header files placed in sub-directories and want to allow builds
outside the source tree (see Parallel Build Trees (a.k.a. VPATH Builds)). In that case we
recommend using a pair of -I options, such as, e.g.,
‘-Isome/subdir -I$(srcdir)/some/subdir’ or
‘-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir’.
Note that the reference to the build tree should come before the
reference to the source tree, so that accidentally leftover generated
files in the source directory are ignored.
AM_CPPFLAGS
is ignored in preference to a per-executable (or
per-library) _CPPFLAGS
variable if it is defined.
INCLUDES
¶This does the same job as AM_CPPFLAGS
(or any per-target
_CPPFLAGS
variable if it is used). It is an older name for the
same functionality. This variable is deprecated; we suggest using
AM_CPPFLAGS
and per-target _CPPFLAGS
instead.
AM_CFLAGS
¶This is the variable the Makefile.am author can use to pass
in additional C compiler flags. In some situations, this is
not used, in preference to the per-executable (or per-library)
_CFLAGS
.
COMPILE
¶This is the command used to compile a C source file. The file name is appended to form the complete command line.
AM_LDFLAGS
¶This is the variable the Makefile.am author can use to pass
in additional linker flags. In some situations, this is not used, in
preference to the per-executable (or per-library) _LDFLAGS
.
LINK
¶This is the command used to link a C program. It already includes
‘-o $@’ and the usual variable references (for instance,
CFLAGS
); it takes as “arguments” the names of the object
files and libraries to link in. This variable is not used when the
linker is overridden with a per-target _LINK
variable or
per-target flags cause Automake to define such a _LINK
variable.