Automake is a tool for generating build systems for software. A build system provides an interface for users and developers of software projects to build and install programs, libraries and documentation.
Automake is built on top of the Make program. Automake generates instructions to Make telling it how to perform tasks, as well as information about what tasks rely on what other tasks. This means when the user instructs Make to perform a certain task (for example, to run rules to create a file), it runs only those commands that are necessary to do so, and doesn’t regenerate files that are already up-to-date. (See The GNU Make Manual.)
Automake is used together with Autoconf, which generates what are known as configure scripts. Autoconf can also be used without Automake for this purpose. A configure script checks that required resources (such as compilers and libraries) are available, and determines features of the operating system being used so that the build system may adapt to these features. A configure script can also be used by the user to set their preferences, for example to enable or disable certain features when programs are built.
A build system generated by Automake does not require Automake or Autoconf to be installed by a user for building and installing a program. The build systems generated by Automake rely only on common features in Bourne shell derivatives and implementations of the Make program, allowing projects to be portable across a range of Posix-style operating systems. See What is Bash? in The GNU Bash Reference Manual for information about GNU’s shell.