Autotools

From Gentoo Wiki
Jump to:navigation Jump to:search
Resources

Autotools is a build system often used for open source projects. Autotools is a particularly mature project, very commonly preinstalled on modern unix-like systems. Though it has the advantage of being almost ubiquitous, Autotools isn't necessarily a user friendly system. Alternatives have been written over the years, and some projects have attempted to avoid this build system.[1]

"configure" scripts

Autotools can be used to generate "configure" scripts. These scripts are used to generate makefiles that are suitable to be run on the current system.

configure scripts often allow compile-time options, and these options are sometimes exposed through USE flags in Gentoo.

configure scripts are run with the ./configure command.

Gentoo development

The following sections explain eclasses related to autotools.

autotools.eclass

autotools eclass provides functions and dependencies necessary to reconfigure (bootstrap) autotools files in packages. These are usually used in live ebuilds and when applying patches to configure.ac or Makefile.am files.

If a package already contains a bootstrapped configure and Makefile, there's no need to inherit the eclass or call eautoreconf unless patching the build system.

CODE Example ebuild code using autotools.eclass
inherit autotools

src_prepare() {
   default
   eautoreconf
}

The eautoreconf function, similarly to autoreconf -vi, regenerates configure and template files used by autotools. It should be used instead of custom scripts like autogen.sh. It automatically detects use of the following tools and calls necessary auto-reconfiguration commands for them:

  • autoconf,
  • automake,
  • libtool,
  • gettext,
  • glib-gettext,
  • intltool,
  • gtk-doc,
  • gnome-doc.

It also detects the use of the AC_CONFIG_SUBDIRS variable and performs the recursive auto-reconfiguration in that case.

libtool.eclass

Note
libtool.eclass doesn't usually need to be used. It is called by default in eautoreconf.eclass.

The libtool.eclass is an eclass providing means to apply Gentoo-specific patches and fixes to libtool used in package build system without the need for regenerating build system completely.

See also

  • Build systems — software that automates the compilation, clean up, and installation stages of the software creation process.

External resources

References