Generated by GPT-5-mini| Autotools | |
|---|---|
| Name | Autotools |
| Developer | GNU Project |
| Released | 1990s |
| Programming language | C, Shell |
| Operating system | Unix-like |
| License | GNU General Public License |
Autotools is a suite of build-system utilities originating from the GNU Project that automate the configuration and compilation of software on Unix-like systems. It evolved to address portability across diverse POSIX environments and to integrate with package ecosystems such as Debian, Red Hat Enterprise Linux, and FreeBSD. Autotools shaped the build practices of projects associated with organizations like The Apache Software Foundation, X.Org Foundation, and GNOME Foundation.
Autotools traces its roots to work on portability at the Free Software Foundation and projects like Autoconf by developers influenced by the practices of Berkeley Software Distribution, early Sun Microsystems engineers, and contributors from MIT. Key milestones include the creation of Autoconf to generate configure scripts, the development of Automake to produce portable Makefile.in templates, and the introduction of Libtool to handle shared-library portability across platforms such as Linux, Solaris, and HP-UX. Major open-source efforts at organizations like X.org and GNOME adopted Autotools during the 1990s and 2000s, affecting distributions maintained by teams at Debian Project, Red Hat, and Gentoo. Work by maintainers with affiliations to institutions such as Carnegie Mellon University and companies including Red Hat influenced cross-platform behavior, while standards bodies like IEEE and implementation targets such as POSIX shaped feature compatibility.
The suite comprises several cooperating programs and macros that arose from distinct projects and contributors at entities like GNU Project, Free Software Foundation, and independent developers. Prominent components include: - Autoconf — generates the top-level configure script using M4 macros influenced by scripting practices from Bell Labs. - Automake — emits portable Makefile.in files conforming to GNU Make conventions and community packaging policies from Debian Project and Fedora Project. - Libtool — abstracts shared-library creation across binary formats such as ELF, Mach-O, and COFF and supports platforms including Linux, macOS, and Windows Subsystem for Linux. - Macro collections and auxiliary scripts maintained by contributors associated with projects like GNOME Foundation, KDE, and X.Org Foundation.
Autotools employs a layered design reflecting historical collaboration between developer ecosystems at GNU Project, packaging workflows for Debian, and portability requirements from FreeBSD and Solaris. The typical workflow: - Authors write portable source and M4-based macro snippets informed by patterns used at Apache Software Foundation and Mozilla Foundation. - Autoconf processes configure.ac (or configure.in) into a shell-based configure script, integrating checks inspired by POSIX and system interfaces implemented in Linux Kernel and NetBSD. - Automake produces Makefile.in templates that adhere to GNU Make semantics and packaging metadata conventions used by RPM and Debian maintainers. - The generated configure script tailors build flags and paths for environments such as Travis CI, Jenkins, and continuous-integration services used by GitHub and GitLab. - Libtool coordinates the platform-specific commands required to build shared libraries compatible with toolchains distributed by vendors like GCC and Clang.
Common invocation sequences reflect practices from wide-ranging projects hosted on platforms like SourceForge, GitHub, and Savannah: - Standard sequence: ./configure; make; make install — used by projects maintained within ecosystems including Debian Project, Gentoo, and Fedora Project. - Cross-compilation patterns referencing sysroot and triplets used by toolchains from GNU Compiler Collection and LLVM Project for targets like ARM, x86_64, and PowerPC. - Packaging guidelines adapted by maintainers in Debian Project and Red Hat employ helper scripts and policy documents similar to those from Freedesktop.org and Linux Standards Base. Example scenarios include building libraries used by GNOME Foundation applications, server components by The Apache Software Foundation, and utilities distributed by GNU Project maintainers.
Autotools is often compared with alternative systems developed under different organizational influences: - CMake — adopted by projects such as KDE and LLVM Project; emphasizes out-of-tree builds and generator backends targeting IDEs like Visual Studio. - Meson — developed by contributors from X.Org Foundation and GNOME Foundation emphasizing speed and native Python integration; contrasts with Autotools’ shell-script-based configure. - SCons — Python-based build tool used in some Apache Software Foundation projects, offering declarative Python scripts rather than M4 macros. - Bazel — originating at Google with a focus on hermetic builds and monorepo workflows; differs from Autotools’ emphasis on system inspection and portability to diverse Unix-like hosts.
Critiques historically voiced by contributors across projects like GNOME Foundation, KDE, and commercial entities such as Red Hat include: - Complexity of M4 macro programming and steep learning curves for maintainers familiar with GitHub workflow or modern CI systems like Travis CI. - Generated configure scripts produce large shell code blocks that can hinder debugging compared to declarative systems used by CMake or Meson; this has been discussed in mailing lists of GNU Project and Debian Project. - Cross-compilation and Windows support have required extensive platform-specific workarounds, prompting some projects (e.g., KDE, LLVM Project) to migrate to systems with native cross-platform generators such as CMake. - Performance and incremental-build behavior can lag behind build systems optimized by teams at Google and contributors to LLVM Project.
Category:Build automation tools