4.4 Configure Input: Source Code, Macros, and Auxiliary Files

The following macros help you manage the contents of your source tree.

Macro: AC_CONFIG_SRCDIR (unique-file-in-source-dir)

Distinguish this package’s source directory from other source directories that might happen to exist in the file system. unique-file-in-source-dir should name a file that is unique to this package. configure will verify that this file exists in srcdir, before it runs any other checks.

Use of this macro is strongly recommended. It protects against people accidentally specifying the wrong directory with --srcdir. See configure Invocation, for more information.

Packages that use aclocal to generate aclocal.m4 should declare where local macros can be found using AC_CONFIG_MACRO_DIRS.

Macro: AC_CONFIG_MACRO_DIRS (dir1 [dir2 ... dirN])
Macro: AC_CONFIG_MACRO_DIR (dir)

Specify the given directories as the location of additional local Autoconf macros. These macros are intended for use by commands like autoreconf or aclocal that trace macro calls; they should be called directly from configure.ac so that tools that install macros for aclocal can find the macros’ declarations. Tools that want to learn which directories have been selected should trace AC_CONFIG_MACRO_DIR_TRACE, which will be called once per directory.

AC_CONFIG_MACRO_DIRS is the preferred form, and can be called multiple times and with multiple arguments; in such cases, directories in earlier calls are expected to be searched before directories in later calls, and directories appearing in the same call are expected to be searched in the order in which they appear in the call. For historical reasons, the macro AC_CONFIG_MACRO_DIR can also be used once, if it appears first, for tools such as older libtool that weren’t prepared to handle multiple directories. For example, a usage like

AC_CONFIG_MACRO_DIR([dir1])
AC_CONFIG_MACRO_DIRS([dir2])
AC_CONFIG_MACRO_DIRS([dir3 dir4])

will cause the trace of AC_CONFIG_MACRO_DIR_TRACE to appear four times, and should cause the directories to be searched in this order: ‘dir1 dir2 dir3 dir4’.

Note that if you use aclocal from an Automake release prior to 1.13 to generate aclocal.m4, you must also set ACLOCAL_AMFLAGS = -I dir1 [-I dir2 ... -I dirN] in your top-level Makefile.am. Due to a limitation in the Autoconf implementation of autoreconf, these include directives currently must be set on a single line in Makefile.am, without any backslash-newlines.

Some Autoconf macros require auxiliary scripts. AC_PROG_INSTALL (see Particular Program Checks) requires a fallback implementation of install called install-sh, and the AC_CANONICAL macros (see Manual Configuration) require the system-identification scripts config.sub and config.guess. Third-party tools, such as Automake and Libtool, may require additional auxiliary scripts.

By default, configure looks for these scripts next to itself, in srcdir. For convenience when working with subdirectories with their own configure scripts (see Configuring Other Packages in Subdirectories), if the scripts are not in srcdir it will also look in srcdir/.. and srcdir/../... All of the scripts must be found in the same directory.

If these default locations are not adequate, or simply to reduce clutter at the top level of the source tree, packages can use AC_CONFIG_AUX_DIR to declare where to look for auxiliary scripts.

Macro: AC_CONFIG_AUX_DIR (dir)

Look for auxiliary scripts in dir. Normally, dir should be a relative path, which is taken as relative to srcdir. If dir is an absolute path or contains shell variables, however, it is used as-is.

When the goal of using AC_CONFIG_AUX_DIR is to reduce clutter at the top level of the source tree, the conventional name for dir is build-aux. If you need portability to DOS variants, do not name the auxiliary directory aux. See File System Conventions.

Macro: AC_REQUIRE_AUX_FILE (file)

Declare that file is an auxiliary script needed by this configure script, and set the shell variable ac_aux_dir to the directory where it can be found. The value of ac_aux_dir is guaranteed to end with a ‘/’.

Macros that need auxiliary scripts must use this macro to register each script they need.

configure checks for all the auxiliary scripts it needs on startup, and exits with an error if any are missing.

autoreconf also detects missing auxiliary scripts. When used with the --install option, autoreconf will try to add missing scripts to the directory specified by AC_CONFIG_AUX_DIR, or to the top level of the source tree if AC_CONFIG_AUX_DIR was not used. It can always do this for the scripts needed by Autoconf core macros: install-sh, config.sub, and config.guess. Many other commonly-needed scripts are installed by the third-party tools that autoreconf knows how to run, such as missing for Automake and ltmain.sh for Libtool.

If you are using Automake, auxiliary scripts will automatically be included in the tarball created by make dist. If you are not using Automake you will need to arrange for auxiliary scripts to be included in tarballs yourself. Auxiliary scripts should normally not be checked into a version control system, for the same reasons that configure shouldn’t be.

The scripts needed by Autoconf core macros can be found in $(datadir)/autoconf/build-aux of the Autoconf installation (see Installation Directory Variables). install-sh can be downloaded from https://git.savannah.gnu.org/cgit/automake.git/plain/lib/install-sh. config.sub and config.guess can be downloaded from https://git.savannah.gnu.org/cgit/config.git/tree/.