Automake Development

By 1994, Autoconf was a solid framework for handling the differences between Unix variants. However, program developers still had to write large Makefile.in files in order to use it. The configure script generated by autoconf would transform the Makefile.in file into a Makefile used by the make program.

A Makefile.in file has to describe how to build the program. In the Imake equivalent of a Makefile.in, known as an Imakefile, it is only necessary to describe which source files are used to build the program. When Imake generates a Makefile, it adds the rules for how to build the program itself. Later versions of the BSD make program also include rules for building a program.

Since most programs are built in much the same way, there was a great deal of duplication in Makefile.in files. Also, the GNU project developed a reasonably complex set of standards for Makefiles, and it was easy to get some of the details wrong.

These factors led to the development of Automake. automake, like autoconf, is a program run by a developer. The developer writes files named Makefile.am; these use a simpler syntax than ordinary Makefiles. automake reads the Makefile.am files and produces Makefile.in files. The idea is that a script generated by autoconf converts these Makefile.in files into Makefiles.

As with Imake and BSD make, the Makefile.am file need only describe the files used to build a program. automake automatically adds the necessary rules when it generates the Makefile.in file. automake also adds any rules required by the GNU Makefile standards.

The first version of Automake was written by David MacKenzie in 1994. It was completely rewritten in 1995 by Tom Tromey.