Changes between Version 3 and Version 4 of pm-autotools


Ignore:
Timestamp:
May 30, 2006 3:45:26 PM (14 years ago)
Author:
andreasw
Comment:

added Makefile.am classification

Legend:

Unmodified
Added
Removed
Modified
  • pm-autotools

    v3 v4  
    1111A good description of those tools and how they play together can be found in the [http://sources.redhat.com/autobook/ Autobook]; but the versions of the tools discussed there are not the most recent ones.  The documentation for each tool are here for [http://www.gnu.org/software/autoconf/manual/autoconf-2.57/ autoconf], [http://www.gnu.org/software/automake/manual/automake.html automake], and [http://www.gnu.org/software/libtool/manual.html libtool].
    1212
    13 [wiki:pm-autotools-intro Here] you find a short description of those tools and how they are used in COIN in our wiki pages.
     13[wiki:pm-autotools-intro Here] you find a short description of those tools and how they are used in COIN.
    1414
    1515== The configure.ac Files  ==
     
    1717The {{{configure}}} script is generated by {{{autoconf}}} based on the {{{configure.ac}}} input file.  This script usually contains autoconf macros and maybe some {{{/bin/sh}}} commands.  To make the usage of autoconf easier for COIN developers, we define a number of new autoconf macros (in the file {{{BuildTools/coin.m4}}}).
    1818
    19 Many projects in COIN have a simple {{{configure}}} script in the base directory of a package (the directory {{{Coin-Clp}}} in the example for the [wiki:user-directories directory structure], which is the {{{trunk}}} directory in the repository).  This configure script usually only verifies which components are available in the subdirectories, and generates the main Makefile.  Here we discuss an [wiki:pm-base-config example of the base directory configure.ac file].
     19In COIN, we decide between two types of {{{configure.ac}}} files:
    2020
    21 In the project subdirectories (such as the {{{CoinUtils}}} and {{{Clp}}} subdirectories in [wiki:user-directories directory structure example]) are the real configuration files.  This is where the tests for each package are performed.  The {{{configure.ac}}} files here can be more involved.  For an example of a project {{{configure.ac}}} file check [wiki:pm-project-config here].
     21 * '''Base directory configure.ac files''': Many projects in COIN have a simple {{{configure}}} script in the base directory of a package (the directory {{{Coin-Clp}}} in the example for the [wiki:user-directories directory structure], which is the {{{trunk}}} directory in the repository).  This configure script usually only verifies which components are available in the subdirectories, and generates the main Makefile.  [wiki:pm-base-config Here we discuss an example of the base directory configure.ac file].
     22
     23 * '''Project directory configure.ac files''': In the project subdirectories (such as the {{{CoinUtils}}} and {{{Clp}}} subdirectories in [wiki:user-directories directory structure example]) are the real configuration files.  This is where the tests for each package are performed.  The {{{configure.ac}}} files here can be more involved.  [wiki:pm-project-config Here we discuss an example of a project {{{configure.ac}}} file].
    2224
    2325== The Makefile.am Files ==
    2426
    25 The Makefiles are generated by {{{automake}}} based on {{{Makefile.am}}} input files.  Those usually contain
     27The Makefiles are generated by {{{automake}}} based on {{{Makefile.am}}} input files.  Those usually contain information on what is to be compiled (e.g., program, library) and what source files are required for each, where things should be installed. etc.  One can also add regular Makefile rules that will copied verbatum into the final Makefile.
     28
     29In a typical COIN project we have a number of different types of {{{Makefile.am}}}, depending on what the purpose of the corresponding directory is:
     30
     31 * '''Base directory Makefile.am''':   Even though this generates the only Makefile a user will usually work with, it is very simple.  It mainly defines, which subdirectories {{{make}}} should recurse into, and it typically define additional targets, such as {{{tests}}} which runs {{{make test}}} in all subdirectories that have tests.  [wiki:pm-base-make The example Makefile.am for the base directory is discussed here.]
     32
     33 * '''Project main directory Makefile.am''':  In each projects main directorty (the subdirectories under the base directory, such as {{{Cpl}}} and {{{CoinUtils}}} in the [wiki:user-directories directory structure example] is the Makefile that takes care of project specific main things, such defining how {{{make test}}} is run, what extra files are to be included in a tarball created by {{{make dist}}}.  It also knows, into which source code directories {{{make}}} should recurse in order to build everything that project has to provide.  [wiki:pm-project-make The example main Makefile.am for a project is discussed here.]
     34
     35 * '''Source code directory Makefile.am files''': This is where the real stuff happens.  Here one specifies what is to be built, what source files are required for this, where (and whether) the compiled files are to be installed.  [wiki:pm-source-make The Makefile.am files for the source code directories are discussed here.]
     36
     37 * '''Unit Test Makefile.am files''':  Since those also compile a program, they are similar to source directory {{{Makefile.am}}} files, but usually simpler.  [wiki:pm-test-make The Makefile.am files for the test code directories are discussed here.]