Next: Generic installation instructions, Previous: Introduction, Up: Top [Contents][Index]
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 automake
program
to produce a file called Makefile.in,
which in turn is a template for
the input to the make
program.
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
configure.ac.
configure records
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
options to 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 zip
file)
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
“automake
time”,
“autoconf
time”,
“configure
time” and
“make
time”.
Next: Generic installation instructions, Previous: Introduction, Up: Top [Contents][Index]