manpagez: man pages & more
info automake
Home | html | info | man
[ << ] [ < ] [ 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 and target_triplet are introduced. See 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: ‘ar-lib’, ‘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 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 with 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 or AC_LIBSOURCES.

Note that the AC_LIBOBJ macro calls AC_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 like AC_FUNC_ALLOCA, AC_FUNC_MEMCMP, AC_REPLACE_FUNCS, and others.

By the way, direct assignments to LIBOBJS are no longer supported. You should always use AC_LIBOBJ for this purpose. See AC_LIBOBJ vs. LIBOBJS in The Autoconf Manual.

AC_PROG_RANLIB

This is required if any libraries are built in the package. See Particular Program Checks in The Autoconf Manual.

AC_PROG_CXX

This is required if any C++ source is included. See Particular Program Checks in The Autoconf Manual.

AC_PROG_OBJC

This is required if any Objective C source is included. See 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 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 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 Particular Program Checks in The Autoconf Manual.

AC_PROG_LIBTOOL

Automake will turn on processing for libtool (see 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 Particular Program Checks in The Autoconf Manual).

AC_PROG_LEX

If a Lex source file is seen, then this macro must be used. See 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 with AC_CONFIG_AUX_DIR above. See Finding configure 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 Setting Output Variables in The Autoconf Manual.

For every substituted variable var, automake will add a line var = value to each ‘Makefile.in’ file. Many Autoconf macros invoke AC_SUBST to set output variables this way, e.g., AC_PATH_XTRA defines X_CFLAGS and X_LIBS. Thus, you can access these variables as $(X_CFLAGS) and $(X_LIBS) in any ‘Makefile.am’ if AC_PATH_XTRA is called.

AM_C_PROTOTYPES

This is required when using the deprecated de-ANSI-fication feature; see section Automatic de-ANSI-fication (deprecated, soon to be removed). It will be removed in the next major Automake release.

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 with AM_CONDITIONAL, thus enabling conditional AC_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 the MAINTAINER_MODE conditional, which you can use in your own ‘Makefile.am’. See section missing and AM_MAINTAINER_MODE.

AM_SUBST_NOTMAKE(var)

Prevent Automake from defining a variable var, even if it is substituted by config.status. Normally, Automake defines a make variable for each configure substitution, i.e., for each AC_SUBST([var]). This macro prevents that definition from Automake. If AC_SUBST has not been called for this variable, then AM_SUBST_NOTMAKE has no effects. Preventing variable definitions may be useful for substitution of multi-line values, where var = @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’ when aclocal 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] [ ? ]

This document was generated on February 3, 2012 using texi2html 5.0.