--- autoconf.texi.~1.782.~ 2003-11-30 09:48:25.000000000 +1000 +++ autoconf.texi 2003-11-30 09:51:38.000000000 +1000 @@ -584,6 +584,7 @@ @node Introduction @chapter Introduction address@hidden Introduction @flushright A physicist, an engineer, and a computer scientist were discussing the @@ -687,6 +688,7 @@ @node The GNU Build System @chapter The @acronym{GNU} Build System address@hidden GNU build system Autoconf solves an important problem---reliable discovery of system-specific build and run-time information---but this is only one @@ -1639,6 +1641,7 @@ @node Notices @section Notices in @command{configure} address@hidden Notices in @command{configure} The following macros manage version numbers for @command{configure} scripts. Using them is optional. @@ -1778,6 +1781,7 @@ @node Output @section Outputting Files address@hidden Outputting files Every Autoconf script, e.g., @file{configure.ac}, should finish by calling @code{AC_OUTPUT}. That is the macro that generates and runs @@ -1842,6 +1846,7 @@ @node Configuration Actions @section Performing Configuration Actions address@hidden Configuration actions @file{configure} is designed so that it appears to do everything itself, but there is actually a hidden slave: @file{config.status}. @@ -1983,6 +1988,8 @@ @node Configuration Files @section Creating Configuration Files address@hidden Creating configuration files address@hidden Configuration file creation Be sure to read the previous section, @ref{Configuration Actions}. @@ -2026,6 +2033,8 @@ @node Makefile Substitutions @section Substitutions in Makefiles address@hidden Substitutions in makefiles address@hidden Makefile Substitutions Each subdirectory in a distribution that contains something to be compiled or installed should come with a file @file{Makefile.in}, from @@ -2060,6 +2069,7 @@ @node Preset Output Variables @subsection Preset Output Variables address@hidden Output variables Some output variables are preset by the Autoconf macros. Some of the Autoconf macros set additional output variables, which are mentioned in @@ -2234,6 +2244,8 @@ @node Installation Directory Variables @subsection Installation Directory Variables address@hidden Installation directories address@hidden Directories, installation The following variables specify the directories where the package will be installed, see @ref{Directory Variables,, Variables for @@ -2428,6 +2440,8 @@ @node Build Directories @subsection Build Directories address@hidden Build directories address@hidden Directories, build You can support compiling a software package for several architectures simultaneously from the same copy of the source code. The object files @@ -2471,6 +2485,8 @@ @node Automatic Remaking @subsection Automatic Remaking address@hidden Automatic remaking address@hidden Remaking automatically You can put rules like the following in the top-level @file{Makefile.in} for a package to automatically update the configuration information when @@ -2593,6 +2609,7 @@ @node Header Templates @subsection Configuration Header Templates @cindex Configuration Header Template address@hidden Header templates @cindex @file{config.h.in} Your distribution should contain a template file that looks as you want @@ -2746,6 +2763,7 @@ @node Autoheader Macros @subsection Autoheader Macros address@hidden Autoheader macros @command{autoheader} scans @file{configure.ac} and figures out which C preprocessor symbols it might define. It knows how to generate @@ -2820,6 +2838,8 @@ @node Configuration Commands @section Running Arbitrary Configuration Commands address@hidden Configuration commands address@hidden Commands for configuration You can execute arbitrary commands before, during, and after @file{config.status} is run. The three following macros accumulate the @@ -2866,6 +2886,8 @@ @node Configuration Links @section Creating Configuration Links address@hidden Configuration links address@hidden Links for configuration You may find it convenient to create links whose destinations depend upon results of tests. One can use @code{AC_CONFIG_COMMANDS} but the @@ -2909,6 +2931,8 @@ @node Subdirectories @section Configuring Other Packages in Subdirectories address@hidden Configure subdirectories address@hidden Subdirectory configure In most situations, calling @code{AC_OUTPUT} is sufficient to produce @file{Makefile}s in subdirectories. However, @command{configure} scripts @@ -2985,6 +3009,8 @@ @node Default Prefix @section Default Prefix address@hidden Install prefix address@hidden Prefix for install By default, @command{configure} sets the prefix for files it installs to @file{/usr/local}. The user of @command{configure} can select a different @@ -3059,6 +3085,7 @@ @node Common Behavior @section Common Behavior address@hidden Common autoconf behavior Much effort has been expended to make Autoconf easy to learn. The most obvious way to reach this goal is simply to enforce standard interfaces @@ -3074,6 +3101,7 @@ @node Standard Symbols @subsection Standard Symbols address@hidden Standard symbols All the generic macros that @code{AC_DEFINE} a symbol as a result of their test transform their @var{argument}s to a standard alphabet. @@ -3094,6 +3122,7 @@ @node Default Includes @subsection Default Includes address@hidden Default includes @cindex Includes, default Several tests depend upon a set of header files. Since these headers @@ -3537,6 +3566,8 @@ @node Function Portability @subsection Portability of C Functions address@hidden Portability of C functions address@hidden C function portability Most usual functions can either be missing, or be buggy, or be limited on some architectures. This section tries to make an inventory of these @@ -4373,6 +4404,8 @@ @node Header Portability @subsection Portability of Headers address@hidden Portability of headers address@hidden Header portability This section tries to collect knowledge about common headers, and the problems they cause. By definition, this list will always require @@ -5039,6 +5072,8 @@ @node Types @section Types address@hidden Types address@hidden C types The following macros check for C types, either builtin or typedefs. If there is no macro specifically defined to check for a type you need, and @@ -5166,6 +5201,8 @@ @node Compilers and Preprocessors @section Compilers and Preprocessors address@hidden Compilers address@hidden Preprocessors @ovindex EXEEXT All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX}, @@ -5637,6 +5674,8 @@ @node Fortran Compiler @subsection Fortran Compiler Characteristics address@hidden Fortran address@hidden F77 The Autoconf Fortran support is divided into two categories: legacy Fortran 77 macros (@code{F77}), and modern Fortran macros (@code{FC}). @@ -5989,6 +6028,7 @@ @defmac AC_PATH_X @acindex{PATH_X} address@hidden X Window System Try to locate the X Window System include files and libraries. If the user gave the command line options @address@hidden and @address@hidden, use those directories. If either or @@ -6043,6 +6083,8 @@ @cvindex _FILE_OFFSET_BITS @cvindex _LARGE_FILES @ovindex CC address@hidden Large file support address@hidden LFS Arrange for @href{http://www.unix-systems.org/version2/whatsnew/lfs20mar.html, large-file support}. On some hosts, one must use special compiler @@ -6709,6 +6751,7 @@ @node Systemology @section Systemology address@hidden Systemology This section aims at presenting some systems and pointers to documentation. It may help you addressing particular problems reported @@ -6910,6 +6953,7 @@ @node Setting Output Variables @section Setting Output Variables address@hidden Output variables Another way to record the results of tests is to set @dfn{output variables}, which are shell variables whose values are substituted into @@ -7357,6 +7401,7 @@ @node Programming in M4 @chapter Programming in M4 address@hidden M4 Autoconf is written on top of two layers: @dfn{M4sugar}, which provides convenient macros for pure M4 programming, and @dfn{M4sh}, which @@ -7375,6 +7420,7 @@ @node M4 Quotation @section M4 Quotation address@hidden M4 quotation @cindex quotation @c FIXME: Grmph, yet another quoting myth: quotation has *never* @@ -7654,6 +7700,7 @@ @node Changequote is Evil @subsection @code{changequote} is Evil address@hidden @code{changequote} The temptation is often high to bypass proper quotation, in particular when it's late at night. Then, many experienced Autoconf hackers @@ -8410,6 +8457,8 @@ @node Forbidden Patterns @subsection Forbidden Patterns address@hidden Forbidden patterns address@hidden Patterns, forbidden M4sugar provides a means to define suspicious patterns, patterns describing tokens which should not be found in the output. For @@ -8685,6 +8734,7 @@ @node Dependencies Between Macros @section Dependencies Between Macros address@hidden Dependencies between macros Some Autoconf macros depend on other macros having been called first in order to work correctly. Autoconf provides a way to ensure that certain @@ -8698,6 +8748,8 @@ @node Prerequisite Macros @subsection Prerequisite Macros address@hidden Prerequisite macros address@hidden Macros, prerequisites A macro that you write might need to use values that have previously been computed by other macros. For example, @code{AC_DECL_YYTEXT} @@ -8796,6 +8848,8 @@ @node Suggested Ordering @subsection Suggested Ordering address@hidden Macros, ordering address@hidden Ordering macros Some macros should be run before another macro if both are called, but neither @emph{requires} that the other be called. For example, a macro @@ -8834,6 +8888,8 @@ @node Obsoleting Macros @section Obsoleting Macros address@hidden Obsoleting macros address@hidden Macros, obsoleting Configuration and portability technology has evolved over the years. Often better ways of solving a particular problem are developed, or @@ -8860,6 +8916,7 @@ @node Coding Style @section Coding Style address@hidden Coding style The Autoconf macros follow a strict coding style. You are encouraged to follow this style, especially if you intend to distribute your macro, @@ -9070,6 +9127,7 @@ @node Portable Shell @chapter Portable Shell Programming address@hidden Portable shell programming When writing your own checks, there are some shell-script programming techniques you should avoid in order to make your code portable. The @@ -9124,6 +9182,7 @@ @node Shellology @section Shellology address@hidden Shellology There are several families of shells, most prominently the Bourne family and the C shell family which are deeply incompatible. If you want to @@ -9187,8 +9246,9 @@ you'll need to use @command{bash} 2.05 for all other build tasks as well. @item Ksh address@hidden Ksh address@hidden Korn shell address@hidden Ksh address@hidden Korn shell address@hidden @samp{ksh} @prindex @samp{ksh88} @prindex @samp{ksh93} The Korn shell is compatible with the Bourne family and it mostly @@ -9253,6 +9313,8 @@ @node Here-Documents @section Here-Documents address@hidden Here documents address@hidden Shell here documents Don't rely on @samp{\} being preserved just because it has no special meaning together with the next symbol. In the native @command{/bin/sh} @@ -9329,6 +9391,9 @@ @node File Descriptors @section File Descriptors address@hidden Descriptors address@hidden File descriptors address@hidden Shell file descriptors Some file descriptors shall not be used, since some systems, admittedly arcane, use them for special purpose: @@ -9398,6 +9463,7 @@ @node File System Conventions @section File System Conventions address@hidden File system conventions While @command{autoconf} and friends will usually be run on some Unix variety, it can and will be used on other systems, most notably @acronym{DOS} @@ -9513,6 +9579,7 @@ @node Shell Substitutions @section Shell Substitutions address@hidden Shell substitutions Contrary to a persistent urban legend, the Bourne shell does not systematically split variables and back-quoted expressions, in particular @@ -9761,6 +9828,7 @@ @node Assignments @section Assignments address@hidden Shell assignments When setting several variables in a row, be aware that the order of the evaluation is undefined. For instance @samp{foo=1 foo=2; echo $foo} @@ -9844,6 +9912,7 @@ @node Parentheses @section Parentheses in Shell Scripts address@hidden Shell parentheses Beware of two opening parentheses in a row, as some shell implementations mishandle them. For example, @samp{pdksh} 5.2.14 @@ -9875,6 +9944,8 @@ @node Special Shell Variables @section Special Shell Variables address@hidden Shell variables address@hidden Special shell variables Some shell variables should not be used, since they can have a deep influence on the behavior of the shell. In order to recover a sane @@ -10132,6 +10203,8 @@ @node Limitations of Builtins @section Limitations of Shell Builtins address@hidden Shell builtins address@hidden Limitations of shell builtins No, no, we are serious: some shells do have limitations! :) @@ -10698,6 +10771,7 @@ @node Limitations of Usual Tools @section Limitations of Usual Tools address@hidden Limitations of usual tools The small set of tools you can expect to find on any machine can still include some limitations you should be aware of. @@ -10765,6 +10839,7 @@ @item @command{cc} @c --------------- address@hidden @command{cc} When a compilation such as @samp{cc foo.c -o foo} fails, some compilers (such as @sc{cds} on Reliant @sc{unix}) leave a @file{foo.o}. @@ -11037,6 +11112,7 @@ @item @command{find} @c ----------------- address@hidden @command{find} The option @option{-maxdepth} seems to be @acronym{GNU} specific. Tru64 v5.1, address@hidden 1.5 and Solaris 2.5 @command{find} commands do not understand it. @@ -11350,6 +11426,8 @@ @node Limitations of Make @section Limitations of Make address@hidden @command{make} address@hidden Limitations of @command{make} @command{make} itself suffers a great number of limitations, only a few of which are listed here. First of all, remember that since commands @@ -12089,6 +12167,7 @@ @node Specifying Names @section Specifying the System Type address@hidden System type Like other @acronym{GNU} @command{configure} scripts, Autoconf-generated @command{configure} scripts can make decisions based on a canonical name @@ -12154,6 +12233,8 @@ @node Canonicalizing @section Getting the Canonical System Type address@hidden System type address@hidden Canonical system type The following macros make the system type available to @command{configure} scripts. @@ -12340,6 +12421,7 @@ @node External Software @section Working With External Software address@hidden External software Some packages require, or can optionally use, other software packages that are already installed. The user can give @command{configure} @@ -12421,6 +12503,8 @@ @node Package Options @section Choosing Package Options address@hidden Package options address@hidden Options, package If a software package has optional compile-time features, the user can give @command{configure} command line options to specify whether to @@ -12490,6 +12574,7 @@ @node Pretty Help Strings @section Making Your Help Strings Look Pretty address@hidden Help strings Properly formatting the @samp{help strings} which are used in @code{AC_ARG_WITH} (@pxref{External Software}) and @code{AC_ARG_ENABLE} @@ -12541,6 +12626,7 @@ @node Site Details @section Configuring Site Details address@hidden Site details Some software packages require complex site-specific information. Some examples are host names to use for certain services, company names, and @@ -12562,6 +12648,8 @@ @node Transforming Names @section Transforming Program Names When Installing address@hidden Transforming program names address@hidden Program names, transforming Autoconf supports changing the names of programs when installing them. In order to use these transformations, @file{configure.ac} must call the @@ -12683,6 +12771,7 @@ @node Site Defaults @section Setting Site Defaults address@hidden Site defaults Autoconf-generated @command{configure} scripts allow your site to provide default values for some configuration values. You do this by creating @@ -12919,6 +13008,7 @@ @node Obsolete Constructs @chapter Obsolete Constructs address@hidden Obsolete constructs Autoconf changes, and throughout the years some constructs have been obsoleted. Most of the changes involve the macros, but in some cases @@ -13959,6 +14049,8 @@ @node Autoconf 1 @section Upgrading From Version 1 address@hidden Upgrading autoconf address@hidden Autoconf upgrading Autoconf version 2 is mostly backward compatible with version 1. However, it introduces better ways to do some things, and doesn't @@ -14141,6 +14233,8 @@ @node Autoconf 2.13 @section Upgrading From Version 2.13 address@hidden Upgrading autoconf address@hidden Autoconf upgrading The introduction of the previous section (@pxref{Autoconf 1}) perfectly suits this address@hidden @@ -14295,6 +14389,7 @@ @node Hosts and Cross-Compilation @subsection Hosts and Cross-Compilation address@hidden Cross compilation Based on the experience of compiler writers, and after long public debates, many aspects of the cross-compilation chain have changed: @@ -15103,6 +15198,7 @@ @node Distributing @section Distributing @command{configure} Scripts address@hidden License @display What are the restrictions on distributing @command{configure} @@ -15155,6 +15251,7 @@ @node Bootstrapping @section How Can I Bootstrap? address@hidden Bootstrap @display If Autoconf requires @acronym{GNU} M4 and @acronym{GNU} M4 has an Autoconf @@ -15170,6 +15267,7 @@ @node Why Not Imake @section Why Not Imake? address@hidden Imake @display Why not use Imake instead of @command{configure} scripts? @@ -15484,6 +15582,7 @@ @node History @chapter History of Autoconf address@hidden History of autoconf You may be wondering, Why was Autoconf originally written? How did it get into its present form? (Why does it look like gorilla spit?) If @@ -15690,6 +15789,7 @@ @node Copying This Manual @appendix Copying This Manual address@hidden License @menu * GNU Free Documentation License:: License for copying this manual