[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2 Other things Automake recognizes
Every time Automake is run it calls Autoconf to trace ‘configure.ac’. This way it can recognize the use of certain macros and tailor the generated ‘Makefile.in’ appropriately. Currently recognized macros and their effects are:
-
AC_CANONICAL_BUILD
-
AC_CANONICAL_HOST
-
AC_CANONICAL_TARGET
-
Automake will ensure that ‘config.guess’ and ‘config.sub’ exist. Also, the ‘Makefile’ variables
build_triplet
,host_triplet
andtarget_triplet
are introduced. See (autoconf)Canonicalizing section `Getting the Canonical System Type' in The Autoconf Manual. -
AC_CONFIG_AUX_DIR
Automake will look for various helper scripts, such as ‘install-sh’, in the directory named in this macro invocation. (The full list of scripts is: ‘config.guess’, ‘config.sub’, ‘depcomp’, ‘elisp-comp’, ‘compile’, ‘install-sh’, ‘ltmain.sh’, ‘mdate-sh’, ‘missing’, ‘mkinstalldirs’, ‘py-compile’, ‘texinfo.tex’, and ‘ylwrap’.) Not all scripts are always searched for; some scripts will only be sought if the generated ‘Makefile.in’ requires them.
If
AC_CONFIG_AUX_DIR
is not given, the scripts are looked for in their standard locations. For ‘mdate-sh’, ‘texinfo.tex’, and ‘ylwrap’, the standard location is the source directory corresponding to the current ‘Makefile.am’. For the rest, the standard location is the first one of ‘.’, ‘..’, or ‘../..’ (relative to the top source directory) that provides any one of the helper scripts. See (autoconf)Input section `Finding `configure' Input' in The Autoconf Manual.Required files from
AC_CONFIG_AUX_DIR
are automatically distributed, even if there is no ‘Makefile.am’ in this directory.-
AC_CONFIG_LIBOBJ_DIR
Automake will require the sources file declared with
AC_LIBSOURCE
(see below) in the directory specified by this macro.-
AC_CONFIG_HEADERS
Automake will generate rules to rebuild these headers. Older versions of Automake required the use of
AM_CONFIG_HEADER
(see section Autoconf macros supplied with Automake); this is no longer the case.As for
AC_CONFIG_FILES
(see section Configuration requirements), parts of the specification using shell variables will be ignored as far as cleaning, distributing, and rebuilding is concerned.-
AC_CONFIG_LINKS
Automake will generate rules to remove ‘configure’ generated links on ‘make distclean’ and to distribute named source files as part of ‘make dist’.
As for
AC_CONFIG_FILES
(see section Configuration requirements), parts of the specification using shell variables will be ignored as far as cleaning and distributing is concerned. (There are no rebuild rules for links.)-
AC_LIBOBJ
-
AC_LIBSOURCE
-
AC_LIBSOURCES
-
Automake will automatically distribute any file listed in
AC_LIBSOURCE
orAC_LIBSOURCES
.Note that the
AC_LIBOBJ
macro callsAC_LIBSOURCE
. So if an Autoconf macro is documented to call ‘AC_LIBOBJ([file])’, then ‘file.c’ will be distributed automatically by Automake. This encompasses many macros likeAC_FUNC_ALLOCA
,AC_FUNC_MEMCMP
,AC_REPLACE_FUNCS
, and others.By the way, direct assignments to
LIBOBJS
are no longer supported. You should always useAC_LIBOBJ
for this purpose. See (autoconf)AC_LIBOBJ vs LIBOBJS section `AC_LIBOBJ
vs.LIBOBJS
' in The Autoconf Manual. -
AC_PROG_RANLIB
This is required if any libraries are built in the package. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_PROG_CXX
This is required if any C++ source is included. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_PROG_OBJC
This is required if any Objective C source is included. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_PROG_F77
This is required if any Fortran 77 source is included. This macro is distributed with Autoconf version 2.13 and later. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_F77_LIBRARY_LDFLAGS
This is required for programs and shared libraries that are a mixture of languages that include Fortran 77 (see section Mixing Fortran 77 With C and C++). See section Autoconf macros supplied with Automake.
-
AC_FC_SRCEXT
Automake will add the flags computed by
AC_FC_SRCEXT
to compilation of files with the respective source extension (see (autoconf)Fortran Compiler section `Fortran Compiler Characteristics' in The Autoconf Manual).-
AC_PROG_FC
This is required if any Fortran 90/95 source is included. This macro is distributed with Autoconf version 2.58 and later. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_PROG_LIBTOOL
Automake will turn on processing for
libtool
(see (libtool)Top section `Introduction' in The Libtool Manual).-
AC_PROG_YACC
-
If a Yacc source file is seen, then you must either use this macro or define the variable
YACC
in ‘configure.ac’. The former is preferred (see (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual). -
AC_PROG_LEX
If a Lex source file is seen, then this macro must be used. See (autoconf)Particular Programs section `Particular Program Checks' in The Autoconf Manual.
-
AC_REQUIRE_AUX_FILE
For each
AC_REQUIRE_AUX_FILE([file])
,automake
will ensure that ‘file’ exists in the aux directory, and will complain otherwise. It will also automatically distribute the file. This macro should be used by third-party Autoconf macros that require some supporting files in the aux directory specified withAC_CONFIG_AUX_DIR
above. See (autoconf)Input section `Findingconfigure
Input' in The Autoconf Manual.-
AC_SUBST
The first argument is automatically defined as a variable in each generated ‘Makefile.in’, unless
AM_SUBST_NOTMAKE
is also used for this variable. See (autoconf)Setting Output Variables section `Setting Output Variables' in The Autoconf Manual.For every substituted variable var,
automake
will add a linevar = value
to each ‘Makefile.in’ file. Many Autoconf macros invokeAC_SUBST
to set output variables this way, e.g.,AC_PATH_XTRA
definesX_CFLAGS
andX_LIBS
. Thus, you can access these variables as$(X_CFLAGS)
and$(X_LIBS)
in any ‘Makefile.am’ ifAC_PATH_XTRA
is called.-
AM_C_PROTOTYPES
This is required when using the obsolete de-ANSI-fication feature; see Automatic de-ANSI-fication.
-
AM_CONDITIONAL
This introduces an Automake conditional (see section Conditionals).
-
AM_COND_IF
This macro allows
automake
to detect subsequent access within ‘configure.ac’ to a conditional previously introduced withAM_CONDITIONAL
, thus enabling conditionalAC_CONFIG_FILES
(see section Usage of Conditionals).-
AM_GNU_GETTEXT
This macro is required for packages that use GNU gettext (see section Gettext). It is distributed with gettext. If Automake sees this macro it ensures that the package meets some of gettext's requirements.
-
AM_GNU_GETTEXT_INTL_SUBDIR
This macro specifies that the ‘intl/’ subdirectory is to be built, even if the
AM_GNU_GETTEXT
macro was invoked with a first argument of ‘external’.-
AM_MAINTAINER_MODE([default-mode])
-
This macro adds an ‘--enable-maintainer-mode’ option to
configure
. If this is used,automake
will cause “maintainer-only” rules to be turned off by default in the generated ‘Makefile.in’s, unless default-mode is ‘enable’. This macro defines theMAINTAINER_MODE
conditional, which you can use in your own ‘Makefile.am’. See sectionmissing
andAM_MAINTAINER_MODE
. -
AM_SUBST_NOTMAKE(var)
Prevent Automake from defining a variable var, even if it is substituted by
config.status
. Normally, Automake defines amake
variable for eachconfigure
substitution, i.e., for eachAC_SUBST([var])
. This macro prevents that definition from Automake. IfAC_SUBST
has not been called for this variable, thenAM_SUBST_NOTMAKE
has no effects. Preventing variable definitions may be useful for substitution of multi-line values, wherevar = @value@
might yield unintended results.-
m4_include
Files included by ‘configure.ac’ using this macro will be detected by Automake and automatically distributed. They will also appear as dependencies in ‘Makefile’ rules.
m4_include
is seldom used by ‘configure.ac’ authors, but can appear in ‘aclocal.m4’ whenaclocal
detects that some required macros come from files local to your package (as opposed to macros installed in a system-wide directory, see section Auto-generating aclocal.m4).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |