Next: , Previous: , Up: Top   [Contents][Index]

2 System overview

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.)

pictures/overview

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: , Previous: , Up: Top   [Contents][Index]