From 0d167edfd620b20dac5f423332f89d7dc33ea4b2 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 10 May 2000 16:52:35 +0000 Subject: [PATCH] Update and polish the documentation. * doc/autoconf.texi: Use @sc where upper case names were used. Remove a few useless `dnl'. Convert some `dnl' into comments. Promote `$(foo)' in Makefiles, not `${foo}'. Promote `$foo' in shell scripts, not `${foo}'. Promote `foo = bar' in Makefiles, not `foo=bar'. (Language Choice): Document `AC_LANG', move `AC_LANG_C', `AC_LANG_CPLUSPLUS' and `AC_LANG_FORTRAN77' to (Old Macros): here. * doc/install.texi: Fix a typo in the specification of the system quadruples. --- ChangeLog | 16 ++ doc/autoconf.texi | 542 ++++++++++++++++++++++++---------------------- doc/install.texi | 1 + 3 files changed, 301 insertions(+), 258 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77622047..c1492ec4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2000-05-10 Akim Demaille + + Update and polish the documentation. + + * doc/autoconf.texi: Use @sc where upper case names were used. + Remove a few useless `dnl'. + Convert some `dnl' into comments. + Promote `$(foo)' in Makefiles, not `${foo}'. + Promote `$foo' in shell scripts, not `${foo}'. + Promote `foo = bar' in Makefiles, not `foo=bar'. + (Language Choice): Document `AC_LANG', move `AC_LANG_C', + `AC_LANG_CPLUSPLUS' and `AC_LANG_FORTRAN77' to + (Old Macros): here. + * doc/install.texi: Fix a typo in the specification of the system + quadruples. + 2000-05-10 Akim Demaille * libm4.m4 (m4_foreach): Rewritten so that it does not require diff --git a/doc/autoconf.texi b/doc/autoconf.texi index e40829b8..e249d384 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -378,9 +378,9 @@ where do you think it was coming from, hmm? Autoconf is a tool for producing shell scripts that automatically configure software source code packages to adapt to many kinds of -UNIX-like systems. The configuration scripts produced by Autoconf are -independent of Autoconf when they are run, so their users do not need to -have Autoconf. +@sc{unix}-like systems. The configuration scripts produced by Autoconf +are independent of Autoconf when they are run, so their users do not +need to have Autoconf. The configuration scripts produced by Autoconf require no manual user intervention when run; they do not normally even need an argument @@ -389,9 +389,9 @@ feature that the software package they are for might need individually. (Before each check, they print a one-line message stating what they are checking for, so the user doesn't get too bored while waiting for the script to finish.) As a result, they deal well with systems that are -hybrids or customized from the more common UNIX variants. There is no -need to maintain files that list the features supported by each release -of each variant of UNIX. +hybrids or customized from the more common @sc{unix} variants. There is +no need to maintain files that list the features supported by each +release of each variant of @sc{unix}. For each software package that Autoconf is used with, it creates a configuration script from a template file that lists the system features @@ -420,10 +420,10 @@ future. Autoconf imposes some restrictions on the names of macros used with @code{#if} in C programs (@pxref{Preprocessor Symbol Index}). -Autoconf requires GNU @code{m4} in order to generate the scripts. It -uses features that some UNIX versions of @code{m4} do not have, -including GNU @code{m4} 1.3. You must use version 1.4 or later of GNU -@code{m4}. +Autoconf requires @sc{gnu} @code{m4} in order to generate the scripts. +It uses features that some @sc{unix} versions of @code{m4} do not have, +including @sc{gnu} @code{m4} 1.3. You must use version 1.4 or later of +@sc{gnu} @code{m4}. @xref{Upgrading}, for information about upgrading from version 1. @xref{History}, for the story of Autoconf's development. @@ -1192,7 +1192,7 @@ For example, this line in @file{configure.in}: @c The asis prevents RCS from changing the example in the manual. @example -AC_REVISION($@asis{Revision: 1.30 }$)dnl +AC_REVISION($@asis{Revision: 1.30 }$) @end example @noindent @@ -1645,10 +1645,10 @@ simultaneously from the same copy of the source code. The object files for each architecture are kept in their own directory. To support doing this, @code{make} uses the @code{VPATH} variable to -find the files that are in the source directory. GNU @code{make} and -most other recent @code{make} programs can do this. Older @code{make} -programs do not support @code{VPATH}; when using them, the source code -must be in the same directory as the object files. +find the files that are in the source directory. @sc{gnu} @code{make} +and most other recent @code{make} programs can do this. Older +@code{make} programs do not support @code{VPATH}; when using them, the +source code must be in the same directory as the object files. To support @code{VPATH}, each @file{Makefile.in} should contain two lines that look like: @@ -1690,7 +1690,7 @@ optional files, such as @file{aclocal.m4} and those related to configuration header files. Omit from the @file{Makefile.in} rules any of these files that your package does not use. -The @samp{$@{srcdir@}/} prefix is included because of limitations in the +The @samp{$(srcdir)/} prefix is included because of limitations in the @code{VPATH} mechanism. The @file{stamp-} files are necessary because the timestamps of @@ -1698,22 +1698,22 @@ The @file{stamp-} files are necessary because the timestamps of them does not change their contents. This feature avoids unnecessary recompilation. You should include the file @file{stamp-h.in} your package's distribution, so @code{make} will consider @file{config.h.in} -up to date. On some old BSD systems, @code{touch} or any command that -results in an empty file does not update the timestamps, so use a +up to date. On some old @sc{bsd} systems, @code{touch} or any command +that results in an empty file does not update the timestamps, so use a command like @code{echo} as a workaround. @c Using @code{date} would cause needless CVS conflicts. @example @group -$@{srcdir@}/configure: configure.in aclocal.m4 - cd $@{srcdir@} && autoconf +$(srcdir)/configure: configure.in aclocal.m4 + cd $(srcdir) && autoconf # autoheader might not change config.h.in, so touch a stamp file. -$@{srcdir@}/config.h.in: stamp-h.in -$@{srcdir@}/stamp-h.in: configure.in aclocal.m4 acconfig.h \ +$(srcdir)/config.h.in: stamp-h.in +$(srcdir)/stamp-h.in: configure.in aclocal.m4 acconfig.h \ config.h.top config.h.bot - cd $@{srcdir@} && autoheader - echo timestamp > $@{srcdir@}/stamp-h.in + cd $(srcdir) && autoheader + echo timestamp > $(srcdir)/stamp-h.in config.h: stamp-h stamp-h: config.h.in config.status @@ -2062,14 +2062,14 @@ macro may be called multiple times. For example, this call: @example -AC_CONFIG_LINKS(host.h:config/$@{machine@}.h - object.h:config/$@{obj_format@}.h) +AC_CONFIG_LINKS(host.h:config/$machine.h + object.h:config/$obj_format.h) @end example @noindent creates in the current directory @file{host.h}, which is a link to -@file{@var{srcdir}/config/$@{machine@}.h}, and @file{object.h}, which is -a link to @file{@var{srcdir}/config/$@{obj_format@}.h}. +@file{@var{srcdir}/config/$machine.h}, and @file{object.h}, which is a +link to @file{@var{srcdir}/config/$obj_format.h}. The tempting value @samp{.} for @var{dest} is invalid: it makes it impossible for @samp{config.status} to guess the links to establish. It @@ -2341,11 +2341,11 @@ this: AC_PROG_CC(cl egcs gcc cc) @end example -If using the GNU C compiler, set shell variable @code{GCC} to -@samp{yes}, empty otherwise. If output variable @code{CFLAGS} was -not already set, set it to @samp{-g -O2} for the GNU C compiler -(@samp{-O2} on systems where GCC does not accept @samp{-g}), or @samp{-g} -for other compilers. +If using the @sc{gnu} C compiler, set shell variable @code{GCC} to +@samp{yes}, empty otherwise. If output variable @code{CFLAGS} was not +already set, set it to @samp{-g -O2} for the @sc{gnu} C compiler +(@samp{-O2} on systems where GCC does not accept @samp{-g}), or +@samp{-g} for other compilers. If the C compiler being used does not produce executables that can run on the system where @code{configure} is being run, set the shell @@ -2363,23 +2363,24 @@ If the C compiler does not accept the @samp{-c} and @samp{-o} options simultaneously, define @code{NO_MINUS_C_MINUS_O}. This macro actually tests both the compiler found by @code{AC_PROG_CC}, and, if different, the first @code{cc} in the path. The test fails if one fails. This -macro was created for GNU Make to choose the default C compilation rule. +macro was created for @sc{gnu} Make to choose the default C compilation +rule. @end defmac @defmac AC_PROG_CC_STDC @maindex PROG_CC_STDC @ovindex CC -If the C compiler in not in ANSI C mode by default, try to add an option -to output variable @code{CC} to make it so. This macro tries various -options that select ANSI C on some system or another. It considers the -compiler to be in ANSI C mode if it handles function prototypes -correctly. +If the C compiler in not in @sc{ansi} C mode by default, try to add an +option to output variable @code{CC} to make it so. This macro tries +various options that select @sc{ansi} C on some system or another. It +considers the compiler to be in @sc{ansi} C mode if it handles function +prototypes correctly. If you use this macro, you should check after calling it whether the C -compiler has been set to accept ANSI C; if not, the shell variable +compiler has been set to accept @sc{ansi} C; if not, the shell variable @code{ac_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -code in ANSI C, you can make an un-ANSIfied copy of it by using the -program @code{ansi2knr}, which comes with Ghostscript. +code in @sc{ansi} C, you can make an un-@sc{ansi}fied copy of it by +using the program @code{ansi2knr}, which comes with Ghostscript. @end defmac @@ -2422,9 +2423,9 @@ like this: AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc) @end example -If using the GNU C++ compiler, set shell variable @code{GXX} to +If using the @sc{gnu} C++ compiler, set shell variable @code{GXX} to @samp{yes}, empty otherwise. If output variable @code{CXXFLAGS} was not -already set, set it to @samp{-g -O2} for the GNU C++ compiler +already set, set it to @samp{-g -O2} for the @sc{gnu} C++ compiler (@samp{-O2} on systems where G++ does not accept @samp{-g}), or @samp{-g} for other compilers. @@ -2472,7 +2473,7 @@ example, if you didn't like the default order, then you could invoke AC_PROG_F77(fl32 f77 fort77 xlf cf77 g77 f90 xlf90 f2c) @end example -If using @code{g77} (the GNU Fortran 77 compiler), then +If using @code{g77} (the @sc{gnu} Fortran 77 compiler), then @code{AC_PROG_F77} will set the shell variable @code{G77} to @samp{yes}, and empty otherwise. If the output variable @code{FFLAGS} was not already set in the environment, then set it to @samp{-g -02} for @@ -2493,11 +2494,11 @@ does not. @maindex PROG_GCC_TRADITIONAL @ovindex CC Add @samp{-traditional} to output variable @code{CC} if using the -GNU C compiler and @code{ioctl} does not work properly without +@sc{gnu} C compiler and @code{ioctl} does not work properly without @samp{-traditional}. That usually happens when the fixed header files have not been installed on an old system. Since recent versions of the -GNU C compiler fix the header files automatically when installed, this -is becoming a less prevalent problem. +@sc{gnu} C compiler fix the header files automatically when installed, +this is becoming a less prevalent problem. @end defmac @defmac AC_PROG_INSTALL @@ -2506,14 +2507,13 @@ is becoming a less prevalent problem. @ovindex INSTALL_PROGRAM @ovindex INSTALL_DATA @ovindex INSTALL_SCRIPT -Set output variable @code{INSTALL} to the path of a BSD compatible +Set output variable @code{INSTALL} to the path of a @sc{bsd} compatible @code{install} program, if one is found in the current @code{PATH}. Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c}, checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its default directories) to determine @var{dir} (@pxref{Output}). Also set the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to -@samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m -644}. +@samp{$INSTALL} and @code{INSTALL_DATA} to @samp{$INSTALL -m 644}. This macro screens out various instances of @code{install} known to not work. It prefers to find a C program rather than a shell script, for @@ -2528,7 +2528,7 @@ you use @code{AC_PROG_INSTALL}, you must include either them---even if the system you're on has a good @code{install} program. This check is a safety measure to prevent you from accidentally leaving that file out, which would prevent your package from installing on -systems that don't have a BSD-compatible @code{install} program. +systems that don't have a @sc{bsd}-compatible @code{install} program. If you need to use your own installation program because it has features not found in standard @code{install} programs, there is no reason to use @@ -2539,7 +2539,7 @@ not found in standard @code{install} programs, there is no reason to use @defmac AC_PROG_GNU_M4 @maindex PROG_GNU_M4 @ovindex GNU_M4 -If GNU @code{m4} version 1.4 or above is found, set output variable +If @sc{gnu} @code{m4} version 1.4 or above is found, set output variable @code{M4} to @samp{m4}. @end defmac @@ -2803,8 +2803,8 @@ Source files that use @code{alloca} should start with a piece of code like the following, to declare it properly. In some versions of AIX, the declaration of @code{alloca} must precede everything else except for comments and preprocessor directives. The @code{#pragma} directive is -indented so that pre-ANSI C compilers will ignore it, rather than choke -on it. +indented so that pre-@sc{ansi} C compilers will ignore it, rather than +choke on it. @example @group @@ -2898,9 +2898,9 @@ libraries, for Irix 4, PTX, and Unixware, respectively. Then, if @defmac AC_FUNC_GETPGRP @maindex FUNC_GETPGRP @cvindex GETPGRP_VOID -If @code{getpgrp} takes no argument (the POSIX.1 version), define -@code{GETPGRP_VOID}. Otherwise, it is the BSD version, which takes a -process ID as an argument. This macro does not check whether +If @code{getpgrp} takes no argument (the @sc{posix.1} version), define +@code{GETPGRP_VOID}. Otherwise, it is the @sc{bsd} version, which takes +a process ID as an argument. This macro does not check whether @code{getpgrp} exists at all; if you need to work in that situation, first call @code{AC_CHECK_FUNC} for @code{getpgrp}. @end defmac @@ -2944,9 +2944,9 @@ and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}. @defmac AC_FUNC_SETPGRP @maindex FUNC_SETPGRP @cvindex SETPGRP_VOID -If @code{setpgrp} takes no argument (the POSIX.1 version), define -@code{SETPGRP_VOID}. Otherwise, it is the BSD version, which takes two -process ID as arguments. This macro does not check whether +If @code{setpgrp} takes no argument (the @sc{posix.1} version), define +@code{SETPGRP_VOID}. Otherwise, it is the @sc{bsd} version, which takes +two process ID as arguments. This macro does not check whether @code{setpgrp} exists at all; if you need to work in that situation, first call @code{AC_CHECK_FUNC} for @code{setpgrp}. @end defmac @@ -2971,7 +2971,7 @@ definitions of @code{strcoll}, which should not be used. @defmac AC_FUNC_STRFTIME @maindex FUNC_STRFTIME @cvindex HAVE_STRFTIME -Check for @code{strftime} in the @file{intl} library, for SCO UNIX. +Check for @code{strftime} in the @file{intl} library, for SCO @sc{unix}. Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}. @end defmac @@ -3029,9 +3029,9 @@ If C function @var{function} is available, run shell commands @var{action-if-found}, otherwise @var{action-if-not-found}. If you just want to define a symbol if the function is available, consider using @code{AC_CHECK_FUNCS} instead. This macro checks for functions with C -linkage even when @code{AC_LANG_CPLUSPLUS} has been called, since C++ is -more standardized than C is. (@pxref{Language Choice}, for more -information about selecting the language for checks.) +linkage even when @code{AC_LANG(C++)} has been called, since C++ is more +standardized than C is. (@pxref{Language Choice}, for more information +about selecting the language for checks.) @end defmac @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found}) @@ -3062,7 +3062,7 @@ needed. Specify that @samp{@var{function}.c} must be included in the executables to replace a missing or broken implementation of @var{function}. -Technically it adds @samp{@var{function}.$@{ac_objext@}} to the output +Technically it adds @samp{@var{function}.$ac_objext} to the output variable @code{LIBOBJS}, nevertheless you must not directly change @code{LIBOBJS} since this is not traceable. @end defmac @@ -3229,32 +3229,32 @@ If @file{sys/types.h} does not define @code{major}, @code{minor}, and @defmac AC_HEADER_STDC @maindex HEADER_STDC @cvindex STDC_HEADERS -Define @code{STDC_HEADERS} if the system has ANSI C header files. +Define @code{STDC_HEADERS} if the system has @sc{ansi} C header files. Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h}, @file{string.h}, and @file{float.h}; if the system has those, it -probably has the rest of the ANSI C header files. This macro also +probably has the rest of the @sc{ansi} C header files. This macro also checks whether @file{string.h} declares @code{memchr} (and thus presumably the other @code{mem} functions), whether @file{stdlib.h} declare @code{free} (and thus presumably @code{malloc} and other related functions), and whether the @file{ctype.h} macros work on characters -with the high bit set, as ANSI C requires. +with the high bit set, as @sc{ansi} C requires. Use @code{STDC_HEADERS} instead of @code{__STDC__} to determine whether -the system has ANSI-compliant header files (and probably C library -functions) because many systems that have GCC do not have ANSI C header -files. +the system has @sc{ansi}-compliant header files (and probably C library +functions) because many systems that have GCC do not have @sc{ansi} C +header files. -On systems without ANSI C headers, there is so much variation that it is -probably easier to declare the functions you use than to figure out -exactly what the system header files declare. Some systems contain a -mix of functions ANSI and BSD; some are mostly ANSI but lack -@samp{memmove}; some define the BSD functions as macros in -@file{string.h} or @file{strings.h}; some have only the BSD functions -but @file{string.h}; some declare the memory functions in +On systems without @sc{ansi} C headers, there is so much variation that +it is probably easier to declare the functions you use than to figure +out exactly what the system header files declare. Some systems contain +a mix of functions @sc{ansi} and @sc{bsd}; some are mostly @sc{ansi} but +lack @samp{memmove}; some define the @sc{bsd} functions as macros in +@file{string.h} or @file{strings.h}; some have only the @sc{bsd} +functions but @file{string.h}; some declare the memory functions in @file{memory.h}, some in @file{string.h}; etc. It is probably sufficient to check for one string function and one memory function; if -the library has the ANSI versions of those then it probably has most of -the others. If you put the following in @file{configure.in}: +the library has the @sc{ansi} versions of those then it probably has +most of the others. If you put the following in @file{configure.in}: @example AC_HEADER_STDC @@ -3284,7 +3284,7 @@ char *strchr (), *strrchr (); @noindent If you use a function like @code{memchr}, @code{memset}, @code{strtok}, -or @code{strspn}, which have no BSD equivalent, then macros won't +or @code{strspn}, which have no @sc{bsd} equivalent, then macros won't suffice; you must provide an implementation of each function. An easy way to incorporate your implementations only when needed (since the ones in system C libraries may be hand optimized) is to, taking @code{memchr} @@ -3295,12 +3295,13 @@ for example, put it in @file{memchr.c} and use @defmac AC_HEADER_SYS_WAIT @maindex HEADER_SYS_WAIT @cvindex HAVE_SYS_WAIT_H -If @file{sys/wait.h} exists and is compatible with POSIX.1, define +If @file{sys/wait.h} exists and is compatible with @sc{posix.1}, define @code{HAVE_SYS_WAIT_H}. Incompatibility can occur if @file{sys/wait.h} -does not exist, or if it uses the old BSD @code{union wait} instead of -@code{int} to store a status value. If @file{sys/wait.h} is not POSIX.1 -compatible, then instead of including it, define the POSIX.1 macros with -their usual interpretations. Here is an example: +does not exist, or if it uses the old @sc{bsd} @code{union wait} instead +of @code{int} to store a status value. If @file{sys/wait.h} is not +@sc{posix.1} compatible, then instead of including it, define the +@sc{posix.1} macros with their usual interpretations. Here is an +example: @example @group @@ -3320,11 +3321,11 @@ their usual interpretations. Here is an example: @cvindex _POSIX_VERSION @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on -POSIX.1 systems. If there is no @file{unistd.h}, it is definitely not a -POSIX.1 system. However, some non-POSIX.1 systems do have -@file{unistd.h}. +@sc{posix.1} systems. If there is no @file{unistd.h}, it is definitely +not a @sc{posix.1} system. However, some non-@sc{posix.1} systems do +have @file{unistd.h}. -The way to check if the system supports POSIX.1 is: +The way to check if the system supports @sc{posix.1} is: @example @group @@ -3713,7 +3714,7 @@ and SPARC, but not Intel and VAX, CPUs), define @code{WORDS_BIGENDIAN}. @defmac AC_C_CONST @maindex C_CONST @cvindex const -If the C compiler does not fully support the ANSI C qualifier +If the C compiler does not fully support the @sc{ansi} C qualifier @code{const}, define @code{const} to be empty. Some C compilers that do not define @code{__STDC__} do support @code{const}; some compilers that define @code{__STDC__} do not completely support @code{const}. Programs @@ -3755,10 +3756,10 @@ your code. However, given that the compiler does not support @code{volatile}, you are at its mercy anyway. At least your program will compile, when it wouldn't before. -In general, the @code{volatile} keyword is a feature of ANSI C, so you -might expect that @code{volatile} is available only when @code{__STDC__} -is defined. However, Ultrix 4.3's native compiler does support -volatile, but does not defined @code{__STDC__}. +In general, the @code{volatile} keyword is a feature of @sc{ansi} C, so +you might expect that @code{volatile} is available only when +@code{__STDC__} is defined. However, Ultrix 4.3's native compiler does +support volatile, but does not defined @code{__STDC__}. @end defmac @defmac AC_C_INLINE @@ -4097,7 +4098,7 @@ can be restarted when interrupted by signals that have no handler. @end defmac @node UNIX Variants, , System Services, Existing Tests -@section UNIX Variants +@section @sc{unix} Variants The following macros check for certain operating systems that need special treatment for some programs, due to exceptional oddities in @@ -4108,7 +4109,7 @@ available or the environments they provide. @defmac AC_AIX @maindex AIX @cvindex _ALL_SOURCE -If on AIX, define @code{_ALL_SOURCE}. Allows the use of some BSD +If on AIX, define @code{_ALL_SOURCE}. Allows the use of some @sc{bsd} functions. Should be called before any macros that run the C compiler. @end defmac @@ -4116,11 +4117,11 @@ functions. Should be called before any macros that run the C compiler. @maindex ISC_POSIX @cvindex _POSIX_SOURCE @ovindex CC -If on a POSIXized ISC UNIX, define @code{_POSIX_SOURCE} and add -@samp{-posix} (for the GNU C compiler) or @samp{-Xp} (for other C +If on a POSIXized ISC @sc{unix}, define @code{_POSIX_SOURCE} and add +@samp{-posix} (for the @sc{gnu} C compiler) or @samp{-Xp} (for other C compilers) to output variable @code{CC}. This allows the use of -POSIX facilities. Must be called after @code{AC_PROG_CC} and before -any other macros that run the C compiler. +@sc{posix} facilities. Must be called after @code{AC_PROG_CC} and +before any other macros that run the C compiler. @end defmac @defmac AC_MINIX @@ -4129,7 +4130,7 @@ any other macros that run the C compiler. @cvindex _POSIX_SOURCE @cvindex _POSIX_1_SOURCE If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define -@code{_POSIX_1_SOURCE} to be 2. This allows the use of POSIX +@code{_POSIX_1_SOURCE} to be 2. This allows the use of @sc{posix} facilities. Should be called before any macros that run the C compiler. @end defmac @@ -4405,8 +4406,8 @@ to @code{return} in @code{main} is ignored. Test programs can use @code{#if} or @code{#ifdef} to check the values of preprocessor macros defined by tests that have already run. For example, if you call @code{AC_HEADER_STDC}, then later on in -@file{configure.in} you can have a test program that includes an ANSI C -header file conditionally: +@file{configure.in} you can have a test program that includes an +@sc{ansi} C header file conditionally: @example @group @@ -4470,21 +4471,21 @@ When writing your own checks, there are some shell script programming techniques you should avoid in order to make your code portable. The Bourne shell and upward-compatible shells like Bash and the Korn shell have evolved over the years, but to prevent trouble, do not take -advantage of features that were added after UNIX version 7, circa 1977. -You should not use shell functions, aliases, negated character classes, -or other features that are not found in all Bourne-compatible shells; -restrict yourself to the lowest common denominator. Even @code{unset} -is not supported by all shells! Also, include a space after the -exclamation point in interpreter specifications, like this: +advantage of features that were added after @sc{unix} version 7, circa +1977. You should not use shell functions, aliases, negated character +classes, or other features that are not found in all Bourne-compatible +shells; restrict yourself to the lowest common denominator. Even +@code{unset} is not supported by all shells! Also, include a space +after the exclamation point in interpreter specifications, like this: @example #! /usr/bin/perl @end example @noindent -If you omit the space before the path, then 4.2BSD based systems (such -as Sequent DYNIX) will ignore the line, because they interpret @samp{#! /} -as a 4-byte magic number. +If you omit the space before the path, then 4.2@sc{bsd} based systems +(such as Sequent DYNIX) will ignore the line, because they interpret +@samp{#! /} as a 4-byte magic number. The set of external programs you should run in a @code{configure} script is fairly small. @xref{Utilities in Makefiles,, Utilities in @@ -4515,22 +4516,21 @@ tests. It is often invoked by the alternate name @samp{[}, but using that name in Autoconf code is asking for trouble since it is an @code{m4} quote character. -If you need to make multiple checks using @code{test}, combine -them with the shell operators @samp{&&} and @samp{||} instead of using -the @code{test} operators @samp{-a} and @samp{-o}. On System V, the +If you need to make multiple checks using @code{test}, combine them with +the shell operators @samp{&&} and @samp{||} instead of using the +@code{test} operators @samp{-a} and @samp{-o}. On System V, the precedence of @samp{-a} and @samp{-o} is wrong relative to the unary -operators; consequently, POSIX does not specify them, so using them is -nonportable. If you combine @samp{&&} and @samp{||} in the same +operators; consequently, @sc{posix} does not specify them, so using them +is nonportable. If you combine @samp{&&} and @samp{||} in the same statement, keep in mind that they have equal precedence. - @c FIXME: Hm, I'd say the `target' here should be `build'. To enable @code{configure} scripts to support cross-compilation, they shouldn't do anything that tests features of the host system instead of the target system. But occasionally you may find it necessary to check whether some arbitrary file exists. To do so, use @samp{test -f} or -@samp{test -r}. Do not use @samp{test -x}, because 4.3BSD does not have -it. +@samp{test -r}. Do not use @samp{test -x}, because 4.3@sc{bsd} does not +have it. @node Shell Substitutions, Limitations of Usual Tools, Testing Values and Files, Portable Shell @subsection Shell Substitutions @@ -4544,9 +4544,9 @@ A nonportable shell programming construct is @noindent The intent is to set @var{var} to @var{value} only if it is not already set, but if @var{var} has any value, even the empty string, to leave it -alone. Old BSD shells, including the Ultrix @code{sh}, don't accept the -colon for any shell substitution, and complain and die. A portable -equivalent is +alone. Old @sc{bsd} shells, including the Ultrix @code{sh}, don't +accept the colon for any shell substitution, and complain and die. A +portable equivalent is @example : $@{@var{var}=@var{value}@} @@ -4611,7 +4611,7 @@ Alternation, @samp{\|}, is not portable. @section Multiple Cases Some operations are accomplished in several possible ways, depending on -the UNIX variant. Checking for them essentially requires a ``case +the @sc{unix} variant. Checking for them essentially requires a ``case statement''. Autoconf does not directly provide one; however, it is easy to simulate by using a shell variable to keep track of whether a way to perform the operation has been found yet. @@ -4648,28 +4648,33 @@ compilers. Autoconf-generated @code{configure} scripts check for C features by default. The following macros determine which language's compiler is used in tests that follow in @file{configure.in}. -@defmac AC_LANG_C -@maindex LANG_C +@defmac AC_LANG (@var{language}) +Do compilation tests using the compiler, preprocessor and file +extensions for the @var{language}. Set the shell variable +@code{cross_compiling} to @samp{yes} or @samp{no} if the compiler is +known to be a cross compiler, empty otherwise. + +Support languages are: + +@table @samp +@item C Do compilation tests using @code{CC} and @code{CPP} and use extension @file{.c} for test programs. Set the shell variable @code{cross_compiling} to the value computed by @code{AC_PROG_CC} if it has been run, empty otherwise. -@end defmac -@defmac AC_LANG_CPLUSPLUS -@maindex LANG_CPLUSPLUS +@item C++ Do compilation tests using @code{CXX} and @code{CXXCPP} and use extension @file{.C} for test programs. Set the shell variable @code{cross_compiling} to the value computed by @code{AC_PROG_CXX} if it has been run, empty otherwise. -@end defmac -@defmac AC_LANG_FORTRAN77 -@maindex LANG_FORTRAN77 +@item Fortran 77 Do compilation tests using @code{F77} and use extension @file{.f} for test programs. Set the shell variable @code{cross_compiling} to the value computed by @code{AC_PROG_F77} if it has been run, empty otherwise. +@end table @end defmac @defmac AC_LANG_SAVE @@ -4778,9 +4783,9 @@ special meaning. Use this macro instead of @code{AC_DEFINE} when @var{variable} or @var{value} is a shell variable. Examples: @example -AC_DEFINE_UNQUOTED(config_machfile, "$@{machfile@}") +AC_DEFINE_UNQUOTED(config_machfile, "$machfile") AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups) -AC_DEFINE_UNQUOTED($@{ac_tr_hdr@}) +AC_DEFINE_UNQUOTED($ac_tr_hdr) @end example @end defmac @@ -4849,7 +4854,7 @@ or target types into @file{Makefile}s. For example, @file{configure.in} could contain: @example -AC_SUBST_FILE(host_frag)dnl +AC_SUBST_FILE(host_frag) host_frag=$srcdir/conf/sun4.mh @end example @@ -4994,8 +4999,8 @@ can also disable cache loading and saving for a @code{configure} script by redefining the cache macros at the start of @file{configure.in}: @example -define([AC_CACHE_LOAD])dnl -define([AC_CACHE_SAVE])dnl +define([AC_CACHE_LOAD]) +define([AC_CACHE_SAVE]) AC_INIT(@r{whatever}) @r{ ... rest of configure.in ...} @end example @@ -5022,21 +5027,22 @@ caused the previous abort corrected. @example @r{ ... AC_INIT, etc. ...} -dnl checks for programs +# Checks for programs. AC_PROG_CC AC_PROG_GCC_TRADITIONAL @r{ ... more program checks ...} AC_CACHE_SAVE -dnl checks for libraries +# Checks for libraries. AC_CHECK_LIB(nsl, gethostbyname) AC_CHECK_LIB(socket, connect) @r{ ... more lib checks ...} AC_CACHE_SAVE -dnl Might abort... +# Might abort... AM_PATH_GTK(1.0.2,, exit 1) AM_PATH_GTKMM(0.9.5,, exit 1) +@r{ ... AC_OUTPUT, etc. ...} @end example @node Printing Messages, , Caching Results, Results @@ -5188,7 +5194,7 @@ Declarations of C variables in header files. @item FUNC Functions in libraries. @item GROUP -UNIX group owners of files. +@sc{unix} group owners of files. @item HEADER Header files. @item LIB @@ -5694,6 +5700,7 @@ with this kind of dependency appear out of order in a @file{configure.in} file. The warning occurs when creating @code{configure} from @file{configure.in}, not when running @code{configure}. + For example, @code{AC_PROG_CPP} checks whether the C compiler can run the C preprocessor when given the @samp{-E} option. It should therefore be called after any macros that change which C compiler is @@ -5779,7 +5786,7 @@ Autoconf provides a uniform method for handling unguessable features. @node Specifying Names, Canonicalizing, Manual Configuration, Manual Configuration @section Specifying the System Type -Like other GNU @code{configure} scripts, Autoconf-generated +Like other @sc{gnu} @code{configure} scripts, Autoconf-generated @code{configure} scripts can make decisions based on a canonical name for the system type, which has the form: @@ -5932,8 +5939,8 @@ esac and in @file{configure.in}, use: @example -AC_CONFIG_LINKS(host.h:config/$@{machine@}.h - object.h:config/$@{obj_format@}.h) +AC_CONFIG_LINKS(host.h:config/$machine.h + object.h:config/$obj_format.h) @end example You can also use the host system type to find cross-compilation tools. @@ -5974,9 +5981,9 @@ The options have one of these forms: --without-@var{package} @end example -For example, @samp{--with-gnu-ld} means work with the GNU linker instead -of some other linker. @samp{--with-x} means work with The X Window -System. +For example, @samp{--with-gnu-ld} means work with the @sc{gnu} linker +instead of some other linker. @samp{--with-x} means work with The X +Window System. The user can give an argument by following the package name with @samp{=} and the argument. Giving an argument of @samp{no} is for @@ -6233,8 +6240,8 @@ cross-assembler running on a Sun 4 configured with with a native Sun 4 assembler. You can force a program name to begin with @file{g}, if you don't want -GNU programs installed on your system to shadow other programs with the -same name. For example, if you configure GNU @code{diff} with +@sc{gnu} programs installed on your system to shadow other programs with +the same name. For example, if you configure @sc{gnu} @code{diff} with @samp{--program-prefix=g}, then when you run @samp{make install} it is installed as @file{/usr/local/bin/gdiff}. @@ -6245,7 +6252,7 @@ As a more sophisticated example, you could use @noindent to prepend @samp{g} to most of the program names in a source tree, excepting those like @code{gdb} that already have one and those like -@code{less} and @code{lesskey} that aren't GNU programs. (That is +@code{less} and @code{lesskey} that aren't @sc{gnu} programs. (That is assuming that you have a source tree containing those programs that is set up to use this feature.) @@ -6254,7 +6261,9 @@ to append a version number to the name of one or both. For example, if you want to keep Autoconf version 1 around for awhile, you can configure Autoconf version 2 using @samp{--program-suffix=2} to install the programs as @file{/usr/local/bin/autoconf2}, -@file{/usr/local/bin/autoheader2}, etc. +@file{/usr/local/bin/autoheader2}, etc. Nevertheless, pay attention +that only the binaries are renamed, therefore you'd have problems with +the library files which might overlap. @node Transformation Rules, , Transformation Examples, Transforming Names @subsection Transformation Rules @@ -6263,7 +6272,7 @@ Here is how to use the variable @code{program_transform_name} in a @file{Makefile.in}: @example -transform=@@program_transform_name@@ +transform = @@program_transform_name@@ install: all $(INSTALL_PROGRAM) myprog $(bindir)/`echo myprog|sed '$(transform)'` @@ -6275,7 +6284,7 @@ uninstall: If you have more than one program to install, you can do it in a loop: @example -PROGRAMS=cp ls rm +PROGRAMS = cp ls rm install: for p in $(PROGRAMS); do \ $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ @@ -6365,9 +6374,9 @@ file (if @code{CONFIG_SITE} is not set to a different file). # Change some defaults. test "$prefix" = NONE && prefix=/usr/share/local/gnu test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu -test "$sharedstatedir" = '$@{prefix@}/com' && sharedstatedir=/var -test "$localstatedir" = '$@{prefix@}/var' && localstatedir=/var -# +test "$sharedstatedir" = '$prefix/com' && sharedstatedir=/var +test "$localstatedir" = '$prefix/var' && localstatedir=/var + # Give Autoconf 2.x generated configure scripts a shared default # cache file for feature test results, architecture-specific. if test "$cache_file" = /dev/null; then @@ -6516,6 +6525,8 @@ one of them, perhaps a common library, does. These variables allow a @file{configure.in} specifies, so it can be used for a different package. +@c Can't we just get rid of the following paragraphs? It's outdated stuff. + @defvar CONFIG_COMMANDS @evindex CONFIG_COMMANDS The tags of the commands to execute. The default is the arguments given @@ -6555,7 +6566,7 @@ stamp-h: config.h.in config.status echo > stamp-h Makefile: Makefile.in config.status - CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \ + CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \ CONFIG_FILES=Makefile ./config.status @end group @end example @@ -6592,9 +6603,9 @@ programs that use them? There are no restrictions on how the configuration scripts that Autoconf produces may be distributed or used. In Autoconf version 1, they were -covered by the GNU General Public License. We still encourage software -authors to distribute their work under terms like those of the GPL, but -doing so is not required to use Autoconf. +covered by the @sc{gnu} General Public License. We still encourage +software authors to distribute their work under terms like those of the +GPL, but doing so is not required to use Autoconf. Of the other files that might be used with @code{configure}, @file{config.h.in} is under whatever copyright you use for your @@ -6606,10 +6617,10 @@ distribute them under the same terms as the rest of your package. @file{install-sh} is from the X Consortium and is not copyrighted. @node Why GNU m4, Bootstrapping, Distributing, Questions -@section Why Require GNU @code{m4}? +@section Why Require @sc{gnu} @code{m4}? @display -Why does Autoconf require GNU @code{m4}? +Why does Autoconf require @sc{gnu} @code{m4}? @end display Many @code{m4} implementations have hard-coded limitations on the size @@ -6625,29 +6636,29 @@ __file__ __line__ @end example -Autoconf requires version 1.4 or above of GNU @code{m4} because it +Autoconf requires version 1.4 or above of @sc{gnu} @code{m4} because it uses frozen state files. -Since only software maintainers need to use Autoconf, and since GNU +Since only software maintainers need to use Autoconf, and since @sc{gnu} @code{m4} is simple to configure and install, it seems reasonable to -require GNU @code{m4} to be installed also. Many maintainers of GNU and -other free software already have most of the GNU utilities installed, -since they prefer them. +require @sc{gnu} @code{m4} to be installed also. Many maintainers of +@sc{gnu} and other free software already have most of the @sc{gnu} +utilities installed, since they prefer them. @node Bootstrapping, Why Not Imake, Why GNU m4, Questions @section How Can I Bootstrap? @display -If Autoconf requires GNU @code{m4} and GNU @code{m4} has an Autoconf -@code{configure} script, how do I bootstrap? It seems like a chicken -and egg problem! +If Autoconf requires @sc{gnu} @code{m4} and @sc{gnu} @code{m4} has an +Autoconf @code{configure} script, how do I bootstrap? It seems like a +chicken and egg problem! @end display -This is a misunderstanding. Although GNU @code{m4} does come with a -@code{configure} script produced by Autoconf, Autoconf is not required -in order to run the script and install GNU @code{m4}. Autoconf is only -required if you want to change the @code{m4} @code{configure} script, -which few people have to do (mainly its maintainer). +This is a misunderstanding. Although @sc{gnu} @code{m4} does come with +a @code{configure} script produced by Autoconf, Autoconf is not required +in order to run the script and install @sc{gnu} @code{m4}. Autoconf is +only required if you want to change the @code{m4} @code{configure} +script, which few people have to do (mainly its maintainer). @node Why Not Imake, , Bootstrapping, Questions @section Why Not Imake? @@ -6669,21 +6680,21 @@ Imake uses a common database of host specific data. For X11, this makes sense because the distribution is made as a collection of tools, by one central authority who has control over the database. -GNU tools are not released this way. Each GNU tool has a maintainer; -these maintainers are scattered across the world. Using a common -database would be a maintenance nightmare. Autoconf may appear to be -this kind of database, but in fact it is not. Instead of listing host -dependencies, it lists program requirements. +@sc{gnu} tools are not released this way. Each @sc{gnu} tool has a +maintainer; these maintainers are scattered across the world. Using a +common database would be a maintenance nightmare. Autoconf may appear +to be this kind of database, but in fact it is not. Instead of listing +host dependencies, it lists program requirements. -If you view the GNU suite as a collection of native tools, then the -problems are similar. But the GNU development tools can be configured -as cross tools in almost any host+target permutation. All of these -configurations can be installed concurrently. They can even be +If you view the @sc{gnu} suite as a collection of native tools, then the +problems are similar. But the @sc{gnu} development tools can be +configured as cross tools in almost any host+target permutation. All of +these configurations can be installed concurrently. They can even be configured to share host independent files across hosts. Imake doesn't address these issues. -Imake templates are a form of standardization. The GNU coding standards -address the same issues without necessarily imposing the same +Imake templates are a form of standardization. The @sc{gnu} coding +standards address the same issues without necessarily imposing the same restrictions. Here is some further explanation, written by Per Bothner: @@ -6759,12 +6770,12 @@ out some problems to watch for when upgrading. Also, perhaps your version 2; the changes are summarized in the file @file{NEWS} in the Autoconf distribution. -First, make sure you have GNU @code{m4} version 1.1 or higher installed, -preferably 1.3 or higher. Versions before 1.1 have bugs that prevent -them from working with Autoconf version 2. Versions 1.3 and later are -much faster than earlier versions, because as of version 1.3, GNU -@code{m4} has a more efficient implementation of diversions and can -freeze its internal state in a file that it can read back quickly. +First, make sure you have @sc{gnu} @code{m4} version 1.1 or higher +installed, preferably 1.3 or higher. Versions before 1.1 have bugs that +prevent them from working with Autoconf version 2. Versions 1.3 and +later are much faster than earlier versions, because as of version 1.3, +@sc{gnu} @code{m4} has a more efficient implementation of diversions and +can freeze its internal state in a file that it can read back quickly. @menu * Changed File Names:: Files you might rename @@ -6812,7 +6823,7 @@ If you have the following in @file{Makefile.in}: @example prefix = /usr/local -exec_prefix = $@{prefix@} +exec_prefix = $(prefix) @end example @noindent @@ -7000,23 +7011,23 @@ then let there be light@dots{} @node Genesis, Exodus, History, History @section Genesis -In June 1991 I was maintaining many of the GNU utilities for the Free -Software Foundation. As they were ported to more platforms and more -programs were added, the number of @samp{-D} options that users had to -select in the @file{Makefile} (around 20) became burdensome. Especially -for me---I had to test each new release on a bunch of different systems. -So I wrote a little shell script to guess some of the correct settings -for the fileutils package, and released it as part of fileutils 2.0. -That @code{configure} script worked well enough that the next month I -adapted it (by hand) to create similar @code{configure} scripts for -several other GNU utilities packages. Brian Berliner also adapted one -of my scripts for his CVS revision control system. +In June 1991 I was maintaining many of the @sc{gnu} utilities for the +Free Software Foundation. As they were ported to more platforms and +more programs were added, the number of @samp{-D} options that users had +to select in the @file{Makefile} (around 20) became burdensome. +Especially for me---I had to test each new release on a bunch of +different systems. So I wrote a little shell script to guess some of +the correct settings for the fileutils package, and released it as part +of fileutils 2.0. That @code{configure} script worked well enough that +the next month I adapted it (by hand) to create similar @code{configure} +scripts for several other @sc{gnu} utilities packages. Brian Berliner +also adapted one of my scripts for his CVS revision control system. Later that summer, I learned that Richard Stallman and Richard Pixley -were developing similar scripts to use in the GNU compiler tools; so I -adapted my @code{configure} scripts to support their evolving interface: -using the file name @file{Makefile.in} as the templates; adding -@samp{+srcdir}, the first option (of many); and creating +were developing similar scripts to use in the @sc{gnu} compiler tools; +so I adapted my @code{configure} scripts to support their evolving +interface: using the file name @file{Makefile.in} as the templates; +adding @samp{+srcdir}, the first option (of many); and creating @file{config.status} files. @node Exodus, Leviticus, Genesis, History @@ -7024,12 +7035,12 @@ using the file name @file{Makefile.in} as the templates; adding As I got feedback from users, I incorporated many improvements, using Emacs to search and replace, cut and paste, similar changes in each of -the scripts. As I adapted more GNU utilities packages to use +the scripts. As I adapted more @sc{gnu} utilities packages to use @code{configure} scripts, updating them all by hand became impractical. -Rich Murphey, the maintainer of the GNU graphics utilities, sent me mail -saying that the @code{configure} scripts were great, and asking if I had -a tool for generating them that I could send him. No, I thought, but -I should! So I started to work out how to generate them. And the +Rich Murphey, the maintainer of the @sc{gnu} graphics utilities, sent me +mail saying that the @code{configure} scripts were great, and asking if +I had a tool for generating them that I could send him. No, I thought, +but I should! So I started to work out how to generate them. And the journey from the slavery of hand-written @code{configure} scripts to the abundance and ease of Autoconf began. @@ -7064,11 +7075,11 @@ presence or absence; I found it confusing to learn; and it was too big and complex for my needs (I didn't realize then how much Autoconf would eventually have to grow). -I considered using Perl to generate my style of @code{configure} scripts, -but decided that @code{m4} was better suited to the job of simple -textual substitutions: it gets in the way less, because output is +I considered using Perl to generate my style of @code{configure} +scripts, but decided that @code{m4} was better suited to the job of +simple textual substitutions: it gets in the way less, because output is implicit. Plus, everyone already has it. (Initially I didn't rely on -the GNU extensions to @code{m4}.) Also, some of my friends at the +the @sc{gnu} extensions to @code{m4}.) Also, some of my friends at the University of Maryland had recently been putting @code{m4} front ends on several programs, including @code{tvtwm}, and I was interested in trying out a new language. @@ -7079,8 +7090,8 @@ out a new language. Since my @code{configure} scripts determine the system's capabilities automatically, with no interactive user intervention, I decided to call the program that generates them Autoconfig. But with a version number -tacked on, that name would be too long for old UNIX file systems, so -I shortened it to Autoconf. +tacked on, that name would be too long for old @sc{unix} file systems, +so I shortened it to Autoconf. In the fall of 1991 I called together a group of fellow questers after the Holy Grail of portability (er, that is, alpha testers) to give me @@ -7110,20 +7121,21 @@ ideas, and bug fixes. @section Numbers In July 1992, after months of alpha testing, I released Autoconf 1.0, -and converted many GNU packages to use it. I was surprised by how +and converted many @sc{gnu} packages to use it. I was surprised by how positive the reaction to it was. More people started using it than I could keep track of, including people working on software that wasn't -part of the GNU Project (such as TCL, FSP, and Kerberos V5). +part of the @sc{gnu} Project (such as TCL, FSP, and Kerberos V5). Autoconf continued to improve rapidly, as many people using the @code{configure} scripts reported problems they encountered. Autoconf turned out to be a good torture test for @code{m4} -implementations. UNIX @code{m4} started to dump core because of the -length of the macros that Autoconf defined, and several bugs showed up -in GNU @code{m4} as well. Eventually, we realized that we needed to use -some features that only GNU @code{m4} has. 4.3BSD @code{m4}, in -particular, has an impoverished set of builtin macros; the System V -version is better, but still doesn't provide everything we need. +implementations. @sc{unix} @code{m4} started to dump core because of +the length of the macros that Autoconf defined, and several bugs showed +up in @sc{gnu} @code{m4} as well. Eventually, we realized that we +needed to use some features that only @sc{gnu} @code{m4} has. +4.3@sc{bsd} @code{m4}, in particular, has an impoverished set of builtin +macros; the System V version is better, but still doesn't provide +everything we need. More development occurred as people put Autoconf under more stresses (and to uses I hadn't anticipated). Karl Berry added checks for X11. @@ -7135,16 +7147,16 @@ Franc,ois Fran\c cois @end tex Pinard made it diagnose invalid arguments. Jim Blandy bravely coerced -it into configuring GNU Emacs, laying the groundwork for several later -improvements. Roland McGrath got it to configure the GNU C Library, -wrote the @code{autoheader} script to automate the creation of C header -file templates, and added a @samp{--verbose} option to @code{configure}. -Noah Friedman added the @samp{--macrodir} option and @code{AC_MACRODIR} -environment variable. (He also coined the term @dfn{autoconfiscate} to -mean ``adapt a software package to use Autoconf''.) Roland and Noah -improved the quoting protection in @code{AC_DEFINE} and fixed many bugs, -especially when I got sick of dealing with portability problems from -February through June, 1993. +it into configuring @sc{gnu} Emacs, laying the groundwork for several +later improvements. Roland McGrath got it to configure the @sc{gnu} C +Library, wrote the @code{autoheader} script to automate the creation of +C header file templates, and added a @samp{--verbose} option to +@code{configure}. Noah Friedman added the @samp{--macrodir} option and +@code{AC_MACRODIR} environment variable. (He also coined the term +@dfn{autoconfiscate} to mean ``adapt a software package to use +Autoconf''.) Roland and Noah improved the quoting protection in +@code{AC_DEFINE} and fixed many bugs, especially when I got sick of +dealing with portability problems from February through June, 1993. @node Deuteronomy, , Numbers, History @section Deuteronomy @@ -7159,7 +7171,8 @@ and Ken Raeburn. These features include support for using @file{config.sub}, @file{config.guess}, @samp{--host}, and @samp{--target}; making links to files; and running @code{configure} scripts in subdirectories. Adding these features enabled Ken to convert -GNU @code{as}, and Rob Savoye to convert DejaGNU, to using Autoconf. +@sc{gnu} @code{as}, and Rob Savoye to convert DejaGNU, to using +Autoconf. I added more features in response to other peoples' requests. Many people had asked for @code{configure} scripts to share the results of @@ -7188,11 +7201,11 @@ Franc,ois Fran\c cois @end tex Pinard, I made the macros not interrupt each others' messages. (That -feature revealed some performance bottlenecks in GNU @code{m4}, which he -hastily corrected!) I reorganized the documentation around problems -people want to solve. And I began a test suite, because experience had -shown that Autoconf has a pronounced tendency to regress when we change -it. +feature revealed some performance bottlenecks in @sc{gnu} @code{m4}, +which he hastily corrected!) I reorganized the documentation around +problems people want to solve. And I began a test suite, because +experience had shown that Autoconf has a pronounced tendency to regress +when we change it. Again, several alpha testers gave invaluable feedback, especially @ifinfo @@ -7403,7 +7416,7 @@ to print messages (@pxref{Printing Messages}). @defmac AC_DYNIX_SEQ @maindex DYNIX_SEQ -If on Dynix/PTX (Sequent UNIX), add @samp{-lseq} to output variable +If on Dynix/PTX (Sequent @sc{unix}), add @samp{-lseq} to output variable @code{LIBS}. This macro is obsolete; instead, use @code{AC_FUNC_GETMNTENT}. @end defmac @@ -7484,31 +7497,44 @@ all of those cases, the compiler is passed @samp{-lfoo}. However, @defmac AC_IRIX_SUN @maindex IRIX_SUN -If on IRIX (Silicon Graphics UNIX), add @samp{-lsun} to output variable -@code{LIBS}. This macro is obsolete. If you were using it to get -@code{getmntent}, use @code{AC_FUNC_GETMNTENT} instead. If you used it -for the NIS versions of the password and group functions, use +If on IRIX (Silicon Graphics @sc{unix}), add @samp{-lsun} to output +variable @code{LIBS}. This macro is obsolete. If you were using it to +get @code{getmntent}, use @code{AC_FUNC_GETMNTENT} instead. If you used +it for the NIS versions of the password and group functions, use @samp{AC_CHECK_LIB(sun, getpwnam)}. @end defmac +@defmac AC_LANG_C +@maindex LANG_C +Same as @samp{AC_LANG(C)}. +@end defmac + +@defmac AC_LANG_CPLUSPLUS +@maindex LANG_CPLUSPLUS +Same as @samp{AC_LANG(C++)}. +@end defmac + +@defmac AC_LANG_FORTRAN77 +@maindex LANG_FORTRAN77 +Same as @samp{AC_LANG(Fortran 77)}. +@end defmac + @defmac AC_LINK_FILES (@var{source}@dots{}, @var{dest}@dots{}) @maindex LINK_FILES This is an obsolete version of @code{AC_CONFIG_LINKS}. An updated version of: @example -@c Note that there are some @ in the first line, hence the indentation -@c of the second. -AC_LINK_FILES(config/$@{machine@}.h config/$@{obj_format@}.h, - host.h object.h) +AC_LINK_FILES(config/$machine.h config/$obj_format.h, + host.h object.h) @end example @noindent is: @example -AC_CONFIG_LINKS(host.h:config/$@{machine@}.h - object.h:config/$@{obj_format@}.h) +AC_CONFIG_LINKS(host.h:config/$machine.h + object.h:config/$obj_format.h) @end example @end defmac @@ -7684,8 +7710,8 @@ removed because of limited usefulness @defmac AC_SCO_INTL @maindex SCO_INTL @ovindex LIBS -If on SCO UNIX, add @samp{-lintl} to output variable @code{LIBS}. Use -@code{AC_FUNC_STRFTIME} instead. +If on SCO @sc{unix}, add @samp{-lintl} to output variable @code{LIBS}. +Use @code{AC_FUNC_STRFTIME} instead. @end defmac @defmac AC_SETVBUF_REVERSED diff --git a/doc/install.texi b/doc/install.texi index 2ea1e2a9..eab8e93d 100644 --- a/doc/install.texi +++ b/doc/install.texi @@ -152,6 +152,7 @@ for the system type, such as @samp{sun4}, or a canonical name with three fields: @example @var{cpu}-@var{company}-@var{system} +@var{cpu}-@var{company}-@var{kernel}-@var{system} @end example @noindent See the file @file{config.sub} for the possible values of each field.