There are two input files that are present in an Automake build system:
Makefile.am contains information about the project,
such as lists of source code files.
It is processed by the
to produce a file called Makefile.in,
which in turn is a template for
the input to the
configure.ac specifies various checks, for example
checks for working
compilers or libraries needed by the project.
It is converted by the
autoconf command into configure,
the configure script.
The user of the program runs configure, which then
runs the various checks in
the results of the checks by modifying the
Makefile.in template to create Makefile. After
the user has run
configure, we say that the directory containing the
source has been configured.
The user of the program would then run ‘make’ to build the
project, that is, generate
files that are derived from others. For example,
make runs a
compiler to create an executable file from source code files.
The user will likely then run ‘make install’ to install the project,
which means that
make will place files on their system in the
locations they will be used.
Some of these files may have been generated by the build. For example,
make may place executable
files in directories in the shell’s command search path.
Automake and Autoconf support several predefined installation
directories, and the choice of each directory can be specified with
configure. See Installation Names.
In order to distribute the project to others, the developer would run
‘make dist’, which performs the instructions in Makefile
to create a distribution file. A distribution file is an archive
file (usually a compressed
tar file or a
comprising the project’s files, including the build system.
An end user who wants to build or install the program can use the build system in the distribution to do this. The procedure for doing this is the same on their machine as on the original developer’s: the end user will not need to install Automake or Autoconf unless they modify Makefile.am or configure.ac.
The flowchart below shows a overview of the process, showing which files are the input and output for which programs. The region with a broken boundary shows the part of the build system that is available without installing Automake or Autoconf. (Some steps are omitted for simplicity. See Flowchart of files and programs.)
Hence, the output from one program in turn becomes the input for the next
program, and what happens in earlier stages affects what
happens at later stages.
We sometimes distinguish the various stages by
referring to them as
configure time” and