Skip to main content
Jump to: navigation, search

Difference between revisions of "Linux Tools Project/Autotools/User Guide"

(New page: = Overview = The Autotools plug-in for Eclipse extends the CDT (C/C++ Development Tools) to add support for maintaing and building C/C++ projects that use GNU Autotools. GNU Autotools ar...)
 
(Overview)
Line 8: Line 8:
 
of the platform, OS, or what is locally installed, and use the results of these tests to create an appropriate
 
of the platform, OS, or what is locally installed, and use the results of these tests to create an appropriate
 
Makefile for the project.  What is tested is fully controllable by the developer by way of special input files which
 
Makefile for the project.  What is tested is fully controllable by the developer by way of special input files which
are fed to the Autotools themselves.   
+
are fed to the Autotools themselves.  In some cases, the Autotool input files are around, but they have not been
 +
invoked to ultimately create the configure scripts.  An autogen.sh script may be present that invokes the Autotools
 +
automatically.  Alternatively, the user may be expected to invoke the 'autoreconf' tool which can be used to
 +
generate and refresh all Autotools output files (including the configure script).   
  
 
Typically, the most commonly used Autotools are 'autoconf', 'automake', and 'aclocal'.  The 'autoconf' tool takes
 
Typically, the most commonly used Autotools are 'autoconf', 'automake', and 'aclocal'.  The 'autoconf' tool takes
Line 15: Line 18:
 
output file.  The 'Makefile.in' file is used by the 'configure' script to layout how the resulting 'Makefile' will be
 
output file.  The 'Makefile.in' file is used by the 'configure' script to layout how the resulting 'Makefile' will be
 
generated (sort of template).  The 'aclocal' tool creates a macro repository containing macros that are needed
 
generated (sort of template).  The 'aclocal' tool creates a macro repository containing macros that are needed
by the 'autoconf' tool.  Typically, the macros make it easy to perform tests (e.g. test that a certain header file
+
by the 'autoconf' tool.  Typically, the macros make it easy to perform common required actions (e.g. test that a certain header file
 
exists or find the compiler).  For more details on the GNU Autotools, see http://www.gnu.org/software/autoconf/ and
 
exists or find the compiler).  For more details on the GNU Autotools, see http://www.gnu.org/software/autoconf/ and
 
http://www.gnu.org/software/automake/
 
http://www.gnu.org/software/automake/
 +
 +
= Configuration =
 +
 +
As mentioned, a project using Autotools requires a step prior to building known as configuration.  There are multiple
 +
alternatives as to what files exist in the project before-hand and how Autotools will perform the configuration.  The following
 +
documents various set-ups and what Autotools does.
 +
 +
# A config.status file exists
 +
This file indicates a configuration has already been performed.  If the file already exists in the build directory, it is simply run with a --recheck option
 +
 +
# A configure script exists
 +
In this case, the configure script is run with any configuration options specified in the project properties.
 +
 +
# An autogen.sh script exists
 +
In this case, the autogen.sh script is run and following that, a check is made to see if it has run configure.  If not,
 +
configure is run automatically.
 +
 +
# A Makefile.cvs file exists
 +
In this case, make is performed for this file.  If a configure script is created and not run by invoking make, it is run
 +
automatically.
 +
 +
# autoreconf -i is performed
 +
The autoreconf -i will invoke autotools for all input files that are older than their output targets or if their output targets do not exist.  If the configure script is generated, it is run automatically
 +
 +
If after all of this, the top-level Makefile is not created, an error is generated and building stops.  The entire configuration step is performed by a special builder that is added by the Autotools plug-in.  A separate console is used for the output of all tools runs by this builder.  To access this special console, click the little t.v. icons in the Console tab as follows:
 +
 +
Note that the configure console output is per project and shows configuration output for the last build of the project.  It is not saved between Eclipse sessions.

Revision as of 17:10, 2 November 2009

Overview

The Autotools plug-in for Eclipse extends the CDT (C/C++ Development Tools) to add support for maintaing and building C/C++ projects that use GNU Autotools.

GNU Autotools are a set of tools used to make projects portable to multiple systems. In most cases, a configuration script is created which is invoked prior to performing the first build. The configuration script may perform tests of the platform, OS, or what is locally installed, and use the results of these tests to create an appropriate Makefile for the project. What is tested is fully controllable by the developer by way of special input files which are fed to the Autotools themselves. In some cases, the Autotool input files are around, but they have not been invoked to ultimately create the configure scripts. An autogen.sh script may be present that invokes the Autotools automatically. Alternatively, the user may be expected to invoke the 'autoreconf' tool which can be used to generate and refresh all Autotools output files (including the configure script).

Typically, the most commonly used Autotools are 'autoconf', 'automake', and 'aclocal'. The 'autoconf' tool takes a 'configure.in' or 'configure.ac' input file and creates the 'configure' script. As mentioned, the configure script is what is invoked prior to the build. The 'automake' tools takes a 'Makefile.am' input file and creates a 'Makefile.in' output file. The 'Makefile.in' file is used by the 'configure' script to layout how the resulting 'Makefile' will be generated (sort of template). The 'aclocal' tool creates a macro repository containing macros that are needed by the 'autoconf' tool. Typically, the macros make it easy to perform common required actions (e.g. test that a certain header file exists or find the compiler). For more details on the GNU Autotools, see http://www.gnu.org/software/autoconf/ and http://www.gnu.org/software/automake/

Configuration

As mentioned, a project using Autotools requires a step prior to building known as configuration. There are multiple alternatives as to what files exist in the project before-hand and how Autotools will perform the configuration. The following documents various set-ups and what Autotools does.

  1. A config.status file exists

This file indicates a configuration has already been performed. If the file already exists in the build directory, it is simply run with a --recheck option

  1. A configure script exists

In this case, the configure script is run with any configuration options specified in the project properties.

  1. An autogen.sh script exists

In this case, the autogen.sh script is run and following that, a check is made to see if it has run configure. If not, configure is run automatically.

  1. A Makefile.cvs file exists

In this case, make is performed for this file. If a configure script is created and not run by invoking make, it is run automatically.

  1. autoreconf -i is performed

The autoreconf -i will invoke autotools for all input files that are older than their output targets or if their output targets do not exist. If the configure script is generated, it is run automatically

If after all of this, the top-level Makefile is not created, an error is generated and building stops. The entire configuration step is performed by a special builder that is added by the Autotools plug-in. A separate console is used for the output of all tools runs by this builder. To access this special console, click the little t.v. icons in the Console tab as follows:

Note that the configure console output is per project and shows configuration output for the last build of the project. It is not saved between Eclipse sessions.

Back to the top