The autotools are a collection of tools used to generate a build system for a project. The tools include autoconf, automake, autoheader, and optionally libtool.
Unlike most build systems which require a significant set of tools to be installed and configured on a build machine, use of the autotools was designed so that the bulk of the complicated system need only be installed on the development machine and the build system needs only a basic shell, a make program, and a compiler and linker, and can autoconfigure itself for the target system.
The autotools were born out of the need to distribute software in source form and have it build on a broad spectrum of POSIX-compatible, POSIXlike, and crudely Unixy systems.
The main purpose of the autoconf tool is to transform a file named configure.ac (in older versions, configure.in) into an executable shell script called configure that gets distributed with the project sources. The configure script is run at build time to determnine and propagate the local configuration.
The automake tool processes recipe files called Makefile.am into templated Makefile.in files that get distributed wit hthe project sources. At build time, the configure script determines the local configuration and further processes each Makefile.in into a Makefile that is input into the make program.
The libtool program extends automake to hide the nasty details of producing dynamically shared objects (.DLL, .so, .dylib, .bundle, etc.).