Changes between Version 4 and Version 5 of pm-structure-config


Ignore:
Timestamp:
Jun 2, 2006 8:36:39 PM (14 years ago)
Author:
andreasw
Comment:

cleaned up

Legend:

Unmodified
Added
Removed
Modified
  • pm-structure-config

    v4 v5  
    1010Everything in a line following a "{{{#}}}" is a '''comment'''.  Comments are usually copied into the generated {{{configure}}} script, unless the line starts with at least two "{{{#}}}".
    1111
    12 By convention, macro names are capitalized, and they start with '''AC_''' if the macro is an Automake feature, or '''AM_''' if it corresponds to a macro in connection with Automake (such as {{{AM_CONDITIONAL}}}, which defines an Automake conditional that can be used for an "{{{if}}}" in the {{{Makefile.am}}} file).  We also provide additional custom macros for COIN configuration (in the {{{BuildTools/coin.m4}}} file), which start with '''AC_COIN_'''.
     12By convention, macro names are capitalized, and they start with '''AC_''' if the macro is an Automake feature, or '''AM_''' if it corresponds to a macro in connection with Automake (such as {{{AM_CONDITIONAL}}}, which defines an Automake conditional that can be used for an "{{{if}}}" in the {{{Makefile.am}}} file).  We also provide additional custom macros for COIN configuration (in the {{{BuildTools/coin.m4}}} file), which start with '''AC_COIN_'''. [http://www.gnu.org/software/autoconf/manual/ In the Autoconf documentation you find a description of the predefined autoconf macros].
    1313
    14 Macros can be given arguments, depending on the macro.  Arguments are separated by commas.  If a macro takes, say, four arguments, but only two are provided, then the last two arguments are assumed to be unset.  The quotation symbols for Autoconf are the squared bracket "{{{[}}}" and "{{{]}}}".  Sometimes it is necessary to enclose arguments in those brackets, for example, when the argument itself contains a comma.  If in doubt, use quotation.
     14Macros can be given arguments, depending on the macro.  Arguments are separated by commas.  If a macro takes, say, four arguments, but only two are provided, then the last two arguments are assumed to be unset.  The '''quotation symbols''' for Autoconf are the squared bracket "{{{[}}}" and "{{{]}}}".  Sometimes it is necessary to enclose arguments in those brackets, for example, when the argument itself contains a comma.  If in doubt, use quotation.
    1515
    1616== Beginning of the configure.ac file ==
     
    5252}}}
    5353
    54  * The file should contain the '''copyright note''', information about the '''authors''', and state under what '''license''' the file is made available.  Note the {{{$Id ...$}}} string.  This is a subversion keyword, which is expanded to contain information about the file, such as revision number, author and date of the last submission etc, when the file is submitted (assuming that the {{{svn::keywords}}} property for this file contains "{{{Id}}}").
     54 * The file should contain the '''copyright note''', information about the '''authors''', and state under what '''license''' the file is made available.  Note the '''$Id ...$''' string.  This is a subversion keyword, which is expanded to contain information about the file, such as revision number, author and date of the last submission etc, when the file is submitted (assuming that the {{{svn::keywords}}} property for this file contains "{{{Id}}}").
    5555
    5656 * The '''AC_PREREQ''' macro specifies the version number of autoconf that is required to generated a {{{configure}}} script from this input file.  In COIN we ask people to [wiki:pm-get-autotools use exactly the same versions of all the GNU autotools], so that we can collectively take care of bug fixes, and can avoid that different versions of the autotools generate large difference of the resulting output files if two developers work on a project simultaneously.
    5757
    58  * The '''AC_INIT''' macro takes as arguments the name of the project for which this {{{configure.ac}}} file is, its version number, and  contact information in case a user wants to get in touch with the developers, e.g., in order to report a bug.  The name and version number determine the name of the tarball that can be created with {{{make dist}}}.
     58 * The '''AC_INIT''' macro takes as arguments the name of the project, its version number, and contact information in case a user wants to get in touch with the developers, e.g., in order to report a bug.  The name and version number determine the name of the tarball that can be created with {{{make dist}}}.
    5959
    60  * The '''AC_CONFIG_SRCDIR''' helps the {{{configure}}} script to do a sanity check by testing, if the configure script is in the correct location with respect to the rest of the package.  As argument, one provides a file (such as a source file) that belongs to the package.
     60 * The argument of the '''AC_COPYRIGHT''' macro is copied as the copyright note into the generated {{{configure}}} script.
    6161
    62  * The argument of the '''AC_PREFIX_DEFAULT''' determines where the products of the compilcation should be installed by a {{{make install}}}, unless this location is overwritten by a user by specifying the {{{--prefix}}} argument to configure.  In COIN, we decided to use as default location the directory where the {{{configure}}} script is run.  As you can see in the invocation of this macro. it is possible to give it a shell command as argument (in this case we tell autoconf to use the output of {{{pwd}}} during the configuration run).  Note, however, that it is not possible for all autoconf macros speficy arguments, whose value is determined when the final {{{configure}}} script is run by the user.
     62 * The '''AC_CONFIG_SRCDIR''' helps the {{{configure}}} script to do a sanity check. When executed, the {{{configure}}} script tests, if it is in the correct location with respect to the rest of the package.  As argument, one provides a file (such as a source file) that belongs to the package.
     63
     64 * The argument of the '''AC_PREFIX_DEFAULT''' determines where the products of the compilcation should be installed by a {{{make install}}}, unless this location is overwritten by a user by specifying the {{{--prefix}}} argument to configure.  In COIN, we decided to use as default location the directory where the {{{configure}}} script is run.
     65
     66 As you can see in the invocation of this macro. it is '''possible to give a shell command as argument for the macro''' (in this case we tell autoconf to use the output of {{{pwd}}} during the configuration run).  Note, however, that it is not possible for all autoconf macros to specify arguments, whose value is determined when the final {{{configure}}} script is run by the user.
    6367
    6468== The Body of the configure.ac File ==
    6569
    66 After the initialization as described above, the {{{configure.ac}}} usually contains a number of macros that will be translated into the tests that are to be run by the final {{{configure}}} script.
     70After the initialization described above, the {{{configure.ac}}} usually contains a number of '''macros that will be translated into the tests''' that are to be run by the final {{{configure}}} script.
    6771
    6872 * Usually, one first checks for the '''availability and names of programs''' (such as compilers and other tools).
     
    8084== The End of the configure.ac File ==
    8185
    82 At the end of the {{{configure.ac}}} file, we need to make sure that the output is actually written.  In COIN, the bottom of the file usually looks like this:
     86At the end of the {{{configure.ac}}} file, we need to make sure that the '''output is written'''  In COIN, the bottom of the file usually looks like this:
    8387
    8488{{{
     
    106110 * The '''AC_CONFIG_HEADER''' macro takes as argument the name of the configuration header files that is to be created by {{{configure}}}.  Also for this file a template is required, but it looks differently, and it should be create by the Autoconf utility {{{autoheader}}}.  The {{{configure.ac}}} files in package base directories don't need this, since they do not gather information for compilation.
    107111
    108  * The '''AC_COIN_FINALIZE''' finally takes care of actaully writing the output. It internally uses the '''AC_OUTPUT''' macro, but since additional actions might have to be taken, you should use '''AC_COIN_FINALIZE''' instead of '''AC_OUTPUT''' directly.  The '''AC_COIN_FINALIZE''' also writes the "configuration successful" message before the {{{configure}}} script finally stops.
     112 * The '''AC_COIN_FINALIZE''' finally takes care of actaully writing the output. It internally uses the AC_OUTPUT macro, but since additional actions might have to be taken, you should use AC_COIN_FINALIZE instead of AC_OUTPUT directly.  The AC_COIN_FINALIZE also writes the "configuration successful" message before the {{{configure}}} script finally stops.