[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
minor documentation patches for Autoconf
From: |
Paul Eggert |
Subject: |
minor documentation patches for Autoconf |
Date: |
Wed, 6 Nov 2002 00:23:11 -0800 (PST) |
I installed the following set of minor changes to the Autoconf manual,
mostly having to do with capitalization (e.g., @sc versus @acronym),
but also some spelling and wording fixes.
--- autoconf.texi.~1.710.~ 2002-11-04 23:07:16.000000000 -0800
+++ autoconf.texi 2002-11-06 00:21:09.958760000 -0800
@@ -69,26 +69,27 @@
@copying
-This manual is for GNU Autoconf
+This manual is for @acronym{GNU} Autoconf
(version @value{VERSION}, @value{UPDATED}),
a package for creating scripts to configure source code packages using
-templates and an @code{m4} macro package.
+templates and an M4 macro package.
Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
2001, 2002 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
-and with the Back-Cover Texts as in (a) below. A copy of the
-license is included in the section entitled ``GNU Free Documentation
-License.''
-
-(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
-this GNU Manual, like GNU software. Copies published by the Free
-Software Foundation raise funds for GNU development.''
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.1 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with the Front-Cover texts
+being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
+(a) below. A copy of the license is included in the section entitled
address@hidden Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and
+modify this @acronym{GNU} Manual, like @acronym{GNU} software. Copies
+published by the Free Software Foundation raise funds for
address@hidden development.''
@end quotation
@end copying
@@ -175,7 +176,7 @@ The GNU Build System
* Automake:: Escaping Makefile hell
* Libtool:: Building libraries portably
-* Pointers:: More info on the GNU build system
+* Pointers:: More info on the @acronym{GNU} build system
Making @command{configure} Scripts
@@ -294,7 +295,7 @@ Writing Test Programs
* Guidelines:: General rules for writing test programs
* Test Functions:: Avoiding pitfalls in test programs
-* Generating Sources:: Source Program Boilerplates
+* Generating Sources:: Source program boilerplate
Results of Tests
@@ -327,7 +328,7 @@ M4 Quotation
Using @command{autom4te}
-* autom4te Invocation:: A GNU M4 wrapper
+* autom4te Invocation:: A @acronym{GNU} M4 wrapper
* Customizing autom4te:: Customizing the Autoconf package
Programming in M4sugar
@@ -437,8 +438,8 @@ Frequent Autoconf Questions, with answer
* Distributing:: Distributing @command{configure} scripts
* Why GNU m4:: Why not use the standard M4?
-* Bootstrapping:: Autoconf and GNU M4 require each other?
-* Why Not Imake:: Why GNU uses @command{configure} instead of
Imake
+* Bootstrapping:: Autoconf and @acronym{GNU} M4 require each
other?
+* Why Not Imake:: Why @acronym{GNU} uses @command{configure}
instead of Imake
* Defining Directories:: Passing @code{datadir} to program
* autom4te.cache:: What is it? Can I remove it?
@@ -521,19 +522,20 @@ inconvenient when configuring large sour
scripts, Autoconf scripts can support cross-compiling, if some care is
taken in writing them.
-Autoconf does not solve all problems related to making portable software
-packages---for a more complete solution, it should be used in concert
-with other GNU build tools like Automake and Libtool. These other tools
-take on jobs like the creation of a portable, recursive @file{Makefile}
-with all of the standard targets, linking of shared libraries, and so
-on. @xref{The GNU Build System}, for more information.
+Autoconf does not solve all problems related to making portable
+software packages---for a more complete solution, it should be used in
+concert with other @acronym{GNU} build tools like Automake and
+Libtool. These other tools take on jobs like the creation of a
+portable, recursive @file{Makefile} with all of the standard targets,
+linking of shared libraries, and so on. @xref{The GNU Build System},
+for more information.
Autoconf imposes some restrictions on the names of macros used with
@code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
-Autoconf requires @sc{gnu} M4 in order to generate the scripts. It uses
-features that some @sc{unix} versions of M4, including @sc{gnu} M4 1.3,
-do not have. You must use version 1.4 or later of @sc{gnu} M4.
+Autoconf requires @acronym{GNU} M4 in order to generate the scripts. It uses
+features that some @sc{unix} versions of M4, including @acronym{GNU} M4 1.3,
+do not have. You must use version 1.4 or later of @acronym{GNU} M4.
@xref{Autoconf 1}, for information about upgrading from version 1.
@xref{History}, for the story of Autoconf's development. @xref{FAQ},
@@ -555,11 +557,11 @@ not already solved in current developmen
been reported yet. Be sure to include all the needed information and a
short @file{configure.ac} that demonstrates the problem.
-Autoconf's development tree is accessible via @sc{cvs}; see the Autoconf
+Autoconf's development tree is accessible via @acronym{CVS}; see the Autoconf
web page for details. There is also a
address@hidden://subversions.gnu.org/cgi-bin/cvsweb/autoconf/, @sc{cvs}web
address@hidden://subversions.gnu.org/cgi-bin/cvsweb/autoconf/, @acronym{CVS}web
interface to the Autoconf development tree}. Patches relative to the
-current @sc{cvs} version can be sent for review to the
+current @acronym{CVS} version can be sent for review to the
@email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
Because of its mission, Autoconf includes only a set of often-used
@@ -573,22 +575,22 @@ Peter Simons}.
@c ================================================= The GNU Build System
@node The GNU Build System
address@hidden The GNU Build System
address@hidden The @acronym{GNU} Build System
Autoconf solves an important problem---reliable discovery of
system-specific build and run-time information---but this is only one
piece of the puzzle for the development of portable software. To this
-end, the GNU project has developed a suite of integrated utilities to
-finish the job Autoconf started: the GNU build system, whose most
-important components are Autoconf, Automake, and Libtool. In this
-chapter, we introduce you to those tools, point you to sources of more
-information, and try to convince you to use the entire GNU build system
-for your software.
+end, the @acronym{GNU} project has developed a suite of integrated
+utilities to finish the job Autoconf started: the @acronym{GNU} build
+system, whose most important components are Autoconf, Automake, and
+Libtool. In this chapter, we introduce you to those tools, point you
+to sources of more information, and try to convince you to use the
+entire @acronym{GNU} build system for your software.
@menu
* Automake:: Escaping Makefile hell
* Libtool:: Building libraries portably
-* Pointers:: More info on the GNU build system
+* Pointers:: More info on the @acronym{GNU} build system
@end menu
@node Automake
@@ -651,7 +653,7 @@ which can be used by multiple programs w
memory and can be updated independently of the linked programs.
Producing shared libraries portably, however, is the stuff of
nightmares---each system has its own incompatible tools, compiler flags,
-and magic incantations. Fortunately, GNU provides a solution:
+and magic incantations. Fortunately, @acronym{GNU} provides a solution:
@dfn{Libtool}.
@cindex Libtool
@@ -671,16 +673,16 @@ whenever shared libraries are needed, an
@section Pointers
Developers who are used to the simplicity of @command{make} for small
-projects on a single system might be daunted at the prospect of learning
-to use Automake and Autoconf. As your software is distributed to more
-and more users, however, you will otherwise quickly find yourself
-putting lots of effort into reinventing the services that the GNU build
-tools provide, and making the same mistakes that they once made and
-overcame. (Besides, since you're already learning Autoconf, Automake
-will be a piece of cake.)
+projects on a single system might be daunted at the prospect of
+learning to use Automake and Autoconf. As your software is
+distributed to more and more users, however, you will otherwise
+quickly find yourself putting lots of effort into reinventing the
+services that the @acronym{GNU} build tools provide, and making the
+same mistakes that they once made and overcame. (Besides, since
+you're already learning Autoconf, Automake will be a piece of cake.)
There are a number of places that you can go to for more information on
-the GNU build tools.
+the @acronym{GNU} build tools.
@itemize @minus
@@ -693,17 +695,18 @@ The home pages for
@item Automake Manual
address@hidden,,Automake,automake,GNU Automake}, for more
address@hidden,,Automake,automake,@acronym{GNU} Automake}, for more
information on Automake.
@item Books
-The book @cite{GNU Autoconf, Automake and address@hidden@cite{GNU
-Autoconf, Automake and Libtool}, by G. V. Vaughan, B. Elliston,
-T. Tromey, and I. L. Taylor. New Riders, 2000, ISBN 1578701902.}
-describes the complete GNU build environment. You can also find the
-entire book on-line at @href{http://sources.redhat.com/autobook/,``The
-Goat Book'' home page}.
+The book @address@hidden Autoconf, Automake and
address@hidden@address@hidden Autoconf, Automake and Libtool},
+by G. V. Vaughan, B. Elliston, T. Tromey, and I. L. Taylor. New
+Riders, 2000, ISBN 1578701902.} describes the complete @acronym{GNU}
+build environment. You can also find the entire book on-line at
address@hidden://sources.redhat.com/autobook/,``The Goat Book'' home
+page}.
@item Tutorials and Examples
@@ -1143,7 +1146,7 @@ Print the version number of Autoconf and
To create @command{configure} from @file{configure.ac}, run the
@command{autoconf} program with no arguments. @command{autoconf} processes
address@hidden with the @code{m4} macro processor, using the
address@hidden with the M4 macro processor, using the
Autoconf macros. If you give @command{autoconf} an argument, it reads that
file instead of @file{configure.ac} and writes the configuration script
to the standard output instead of to @command{configure}. If you give
@@ -1322,19 +1325,20 @@ AUTOMAKE|:::::|automake|:::::|$missing_d
@section Using @command{autoreconf} to Update @command{configure} Scripts
@cindex @command{autoreconf}
-Installing the various components of the @sc{gnu} Build System can be
+Installing the various components of the @acronym{GNU} Build System can be
tedious: running @command{autopoint} for Gettext, @command{automake} for
@file{Makefile.in} etc.@: in each directory. It may be needed either
because some tools such as @command{automake} have been updated on your
system, or because some of the sources such as @file{configure.ac} have
-been updated, or finally, simply in order to install the @sc{gnu} Build
+been updated, or finally, simply in order to install the @acronym{GNU} Build
System in a fresh tree.
address@hidden runs @command{autoconf}, @command{autoheader}, @command{aclocal},
address@hidden, @command{libtoolize}, and @command{autopoint} (when
-appropriate) repeatedly to update the @sc{gnu} Build System in the specified
-directories and their subdirectories (@pxref{Subdirectories}). By
-default, it only remakes those files that are older than their sources.
address@hidden runs @command{autoconf}, @command{autoheader},
address@hidden, @command{automake}, @command{libtoolize}, and
address@hidden (when appropriate) repeatedly to update the
address@hidden Build System in the specified directories and their
+subdirectories (@pxref{Subdirectories}). By default, it only remakes
+those files that are older than their sources.
If you install a new version of some tool, you can make
@command{autoreconf} remake @emph{all} of the files by giving it the
@@ -1571,7 +1575,7 @@ The @var{copyright-notice} will show up
Copy revision stamp @var{revision-info} into the @command{configure}
script, with any dollar signs or double-quotes removed. This macro lets
you put a revision stamp from @file{configure.ac} into @command{configure}
-without @sc{rcs} or @code{cvs} changing it when you check in
+without @acronym{RCS} or @acronym{CVS} changing it when you check in
@command{configure}. That way, you can determine easily which revision of
@file{configure.ac} a particular @command{configure} corresponds to.
@@ -1659,8 +1663,8 @@ name is obsolete because some @code{make
Every Autoconf script, e.g., @file{configure.ac}, should finish by
calling @code{AC_OUTPUT}. That is the macro that generates
@file{config.status}, which will create the @file{Makefile}s and any
-other files resulting from configuration. This is the only required macro
besides
address@hidden (@pxref{Input}).
+other files resulting from configuration. This is the only required
+macro besides @code{AC_INIT} (@pxref{Input}).
@defmac AC_OUTPUT
@acindex OUTPUT
@@ -1917,7 +1921,7 @@ way, the user has to properly configure
before compiling it.
@xref{Makefile Conventions,, Makefile Conventions, standards, The
-GNU Coding Standards}, for more information on what to put in
address@hidden Coding Standards}, for more information on what to put in
@file{Makefile}s.
@menu
@@ -2096,10 +2100,10 @@ Absolute path of @code{top_srcdir}.
@subsection Installation Directory Variables
The following variables specify the directories where the package will
-be installed, see @ref{Directory Variables,, Variables for Installation
-Directories, standards, The GNU Coding Standards}, for more information.
-See the end of this section for details on when and how to use these
-variables.
+be installed, see @ref{Directory Variables,, Variables for
+Installation Directories, standards, The @acronym{GNU} Coding
+Standards}, for more information. See the end of this section for
+details on when and how to use these variables.
@defvar bindir
@ovindex bindir
@@ -2184,7 +2188,7 @@ Most of these variables have values that
variables keep them unexpanded: typically @samp{@@datadir@@} will be
replaced by @address@hidden@}/share}, not @samp{/usr/local/share}.
-This behavior is mandated by the @sc{gnu} coding standards, so that when
+This behavior is mandated by the @acronym{GNU} coding standards, so that when
the user runs:
@table @samp
@@ -2294,7 +2298,7 @@ simultaneously from the same copy of the
for each architecture are kept in their own directory.
To support doing this, @command{make} uses the @code{VPATH} variable to
-find the files that are in the source directory. @sc{gnu} Make
+find the files that are in the source directory. @acronym{GNU} Make
and most other recent @command{make} programs can do this. Older
@command{make} programs do not support @code{VPATH}; when using them, the
source code must be in the same directory as the object files.
@@ -2349,7 +2353,7 @@ recompilation. You should include the f
package's distribution, so @command{make} will consider
@file{config.h.in} up to date. Don't use @command{touch}
(@pxref{Limitations of Usual Tools}), rather use @command{echo} (using
address@hidden would cause needless differences, hence @sc{cvs}
address@hidden would cause needless differences, hence @acronym{CVS}
conflicts etc.).
@example
@@ -2425,8 +2429,8 @@ The usual name for @var{header} is @file
If @var{header} already exists and its contents are identical to what
@code{AC_OUTPUT} would put in it, it is left alone. Doing this allows
-making some changes in the configuration without needlessly causing object
files
-that depend on the header file to be recompiled.
+making some changes in the configuration without needlessly causing
+object files that depend on the header file to be recompiled.
Usually the input file is named @address@hidden; however, you can
override the input file name by appending to @var{header} a
@@ -3085,7 +3089,7 @@ output variable @code{FGREP} to the firs
@ovindex INSTALL_PROGRAM
@ovindex INSTALL_DATA
@ovindex INSTALL_SCRIPT
-Set output variable @code{INSTALL} to the path of a @sc{bsd} compatible
+Set output variable @code{INSTALL} to the path of a @acronym{BSD}-compatible
@code{install} program, if one is found in the current @code{PATH}.
Otherwise, set @code{INSTALL} to @address@hidden/install-sh -c},
checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
@@ -3106,7 +3110,7 @@ you use @code{AC_PROG_INSTALL}, you must
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 @sc{bsd}-compatible @code{install} program.
+systems that don't have a @acronym{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
@@ -3410,14 +3414,15 @@ tradition of it returning @code{int}.
@prindex @code{snprintf}
@c @fuindex vsnprintf
@prindex @code{vsnprintf}
-The ISO C99 standard says that if the output array isn't big enough and
-if no other errors occur, @code{snprintf} and @code{vsnprintf} truncate
-the output and return the number of bytes that ought to have been
-produced. Some older systems return the truncated length (e.g., GNU C
-Library 2.0.x or IRIX 6.5), some a negative value (e.g., earlier GNU C
-Library versions), and some the buffer length without truncation (e.g.,
-32-bit Solaris 7). Also, some buggy older systems ignore the length and
-overrun the buffer (e.g., 64-bit Solaris 7).
+The ISO C99 standard says that if the output array isn't big enough
+and if no other errors occur, @code{snprintf} and @code{vsnprintf}
+truncate the output and return the number of bytes that ought to have
+been produced. Some older systems return the truncated length (e.g.,
address@hidden C Library 2.0.x or @sc{irix} 6.5), some a negative value
+(e.g., earlier @acronym{GNU} C Library versions), and some the buffer
+length without truncation (e.g., 32-bit Solaris 7). Also, some buggy
+older systems ignore the length and overrun the buffer (e.g., 64-bit
+Solaris 7).
@item @code{sprintf}
@c @fuindex sprintf
@@ -3436,13 +3441,14 @@ input string be writable (though it does
can be a problem when using @command{gcc} since it normally puts
constant strings in read-only memory
(@pxref{Incompatibilities,Incompatibilities of GCC,,gcc,Using and
-Porting the GNU Compiler Collection}). Apparently in some cases even
+Porting the @acronym{GNU} Compiler Collection}). Apparently in some cases even
having format strings read-only can be a problem.
@item @code{strnlen}
@c @fuindex strnlen
@prindex @code{strnlen}
-AIX 4.3 provides a broken version which produces the following results:
address@hidden 4.3 provides a broken version which produces the
+following results:
@example
strnlen ("foobar", 0) = 0
@@ -3460,7 +3466,7 @@ strnlen ("foobar", 9) = 6
@item @code{unlink}
@c @fuindex unlink
@prindex @code{unlink}
-The @sc{posix} spec says that @code{unlink} causes the given file to be
+The @acronym{POSIX} spec says that @code{unlink} causes the given file to be
removed only after there are no more open file handles for it. Not all
OS's support this behavior though. So even on systems that provide
@code{unlink}, you cannot portably assume it is OK to call it on files
@@ -3486,7 +3492,7 @@ portability.
not portable. Or it can be an array (e.g., @command{gcc} in some
PowerPC configurations), which means as a function parameter it can be
effectively call-by-reference and library routines might modify the
-value back in the caller (e.g., @code{vsnprintf} in the GNU C Library
+value back in the caller (e.g., @code{vsnprintf} in the @acronym{GNU} C Library
2.1).
@item Signed @code{>>}
@@ -3535,10 +3541,10 @@ still want to use their @code{alloca}, u
@file{alloca.o} from them instead of compiling @file{alloca.c}.
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,
+like the following, to declare it properly. In some versions of @acronym{AIX},
the declaration of @code{alloca} must precede everything else except for
comments and preprocessor directives. The @code{#pragma} directive is
-indented so that address@hidden C compilers will ignore it, rather than
+indented so that address@hidden C compilers will ignore it, rather than
choke on it.
@example
@@ -3730,7 +3736,7 @@ program.
@c @fuindex getmntent
@prindex @code{getmntent}
Check for @code{getmntent} in the @file{sun}, @file{seq}, and @file{gen}
-libraries, for Irix 4, PTX, and Unixware, respectively. Then, if
+libraries, for @sc{irix} 4, PTX, and Unixware, respectively. Then, if
@code{getmntent} is available, define @code{HAVE_GETMNTENT}.
@end defmac
@@ -3742,9 +3748,9 @@ libraries, for Irix 4, PTX, and Unixware
@prindex @code{getpgid}
@prindex @code{getpgrp}
Define @code{GETPGRP_VOID} if it is an error to pass 0 to
address@hidden; this is the @sc{posix.1} behavior. On older BSD
address@hidden; this is the @acronym{POSIX} behavior. On older BSD
systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
-behaves like @sc{posix.1}'s @code{getpgid}.
+behaves like @acronym{POSIX}'s @code{getpgid}.
@example
#if GETPGRP_VOID
@@ -3899,8 +3905,8 @@ and @code{SELECT_TYPE_ARG5} defaults to
@cvindex SETPGRP_VOID
@c @fuindex setpgrp
@prindex @code{setpgrp}
-If @code{setpgrp} takes no argument (the @sc{posix.1} version), define
address@hidden Otherwise, it is the @sc{bsd} version, which takes
+If @code{setpgrp} takes no argument (the @acronym{POSIX} version), define
address@hidden Otherwise, it is the @acronym{BSD} version, which takes
two process IDs 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}.
@@ -3969,8 +3975,8 @@ If @code{strerror_r} is available, defin
it is declared, define @code{HAVE_DECL_STRERROR_R}. If it returns a
@code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
returns an @code{int} error number. The Thread-Safe Functions option of
address@hidden requires @code{strerror_r} to return @code{int}, but
-many systems (including, for example, version 2.2.4 of the GNU C
address@hidden requires @code{strerror_r} to return @code{int}, but
+many systems (including, for example, version 2.2.4 of the @acronym{GNU} C
Library) return a @code{char *} value that is not necessarily equal to
the buffer argument.
@end defmac
@@ -3990,7 +3996,7 @@ Then, if @code{strftime} is available, d
@c @fuindex strnlen
@prindex @code{strnlen}
If the @code{strnlen} function is not available, or is buggy (like the one
-from AIX 4.3), require an @code{AC_LIBOBJ} replacement for it.
+from @acronym{AIX} 4.3), require an @code{AC_LIBOBJ} replacement for it.
@end defmac
@defmac AC_FUNC_UTIME_NULL
@@ -4068,7 +4074,7 @@ functions is not found.
Autoconf follows a philosophy that was formed over the years by those
who have struggled for portability: isolate the portability issues in
-specific files, and then program as if you were in a @sc{posix}
+specific files, and then program as if you were in a @acronym{POSIX}
environment. Some functions may be missing or unfixable, and your
package must be ready to replace them.
@@ -4295,32 +4301,33 @@ typedef unsigned char _Bool;
@defmac AC_HEADER_STDC
@acindex HEADER_STDC
@cvindex STDC_HEADERS
-Define @code{STDC_HEADERS} if the system has @sc{ansi} C header files.
+Define @code{STDC_HEADERS} if the system has @acronym{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 @sc{ansi} C header files. This macro also
+probably has the rest of the @acronym{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 @sc{ansi} C requires.
+with the high bit set, as @acronym{ANSI} C requires.
Use @code{STDC_HEADERS} instead of @code{__STDC__} to determine whether
-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
+the system has @acronym{ANSI}-compliant header files (and probably C library
+functions) because many systems that have GCC do not have @acronym{ANSI} C
header files.
-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 from @sc{ansi} and @sc{bsd}; some are mostly @sc{ansi} but
-lack @samp{memmove}; some define the @sc{bsd} functions as macros in
address@hidden or @file{strings.h}; some have only the @sc{bsd}
-functions but @file{string.h}; some declare the memory functions in
address@hidden, 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 @sc{ansi} versions of those then it probably has
-most of the others. If you put the following in @file{configure.ac}:
+On systems without @acronym{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 from @acronym{ANSI} and @acronym{BSD}; some are
+mostly @acronym{ANSI} but lack @samp{memmove}; some define the
address@hidden functions as macros in @file{string.h} or
address@hidden; some have only the @acronym{BSD} functions but
address@hidden; 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
address@hidden versions of those then it probably has most of the others.
+If you put the following in @file{configure.ac}:
@example
AC_HEADER_STDC
@@ -4350,7 +4357,7 @@ char *strchr (), *strrchr ();
@noindent
If you use a function like @code{memchr}, @code{memset}, @code{strtok},
-or @code{strspn}, which have no @sc{bsd} equivalent, then macros won't
+or @code{strspn}, which have no @acronym{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}
@@ -4361,12 +4368,12 @@ for example, put it in @file{memchr.c} a
@defmac AC_HEADER_SYS_WAIT
@acindex HEADER_SYS_WAIT
@cvindex HAVE_SYS_WAIT_H
-If @file{sys/wait.h} exists and is compatible with @sc{posix.1}, define
+If @file{sys/wait.h} exists and is compatible with @acronym{POSIX}, define
@code{HAVE_SYS_WAIT_H}. Incompatibility can occur if @file{sys/wait.h}
-does not exist, or if it uses the old @sc{bsd} @code{union wait} instead
+does not exist, or if it uses the old @acronym{BSD} @code{union wait} instead
of @code{int} to store a status value. If @file{sys/wait.h} is not
address@hidden compatible, then instead of including it, define the
address@hidden macros with their usual interpretations. Here is an
address@hidden compatible, then instead of including it, define the
address@hidden macros with their usual interpretations. Here is an
example:
@example
@@ -4387,11 +4394,11 @@ example:
@cvindex _POSIX_VERSION
@code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
address@hidden systems. If there is no @file{unistd.h}, it is definitely
-not a @sc{posix.1} system. However, some address@hidden systems do
address@hidden systems. If there is no @file{unistd.h}, it is definitely
+not a @acronym{POSIX} system. However, some address@hidden systems do
have @file{unistd.h}.
-The way to check if the system supports @sc{posix.1} is:
+The way to check if the system supports @acronym{POSIX} is:
@example
@group
@@ -4401,7 +4408,7 @@ The way to check if the system supports
#endif
#ifdef _POSIX_VERSION
-/* Code for POSIX.1 systems. */
+/* Code for POSIX systems. */
#endif
@end group
@end example
@@ -4956,22 +4963,22 @@ this:
AC_PROG_CC(cl egcs gcc cc)
@end example
-If the C compiler is not in @sc{ansi} C mode by default, try to add an
+If the C compiler is not in @acronym{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
+various options that select @acronym{ANSI} C on some system or another. It
+considers the compiler to be in @acronym{ANSI} C mode if it handles function
prototypes correctly.
After calling this macro you can check whether the C compiler has been
-set to accept @sc{ansi} C; if not, the shell variable
+set to accept @acronym{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 @sc{ansi} C, you can make an address@hidden copy of it by
+code in @acronym{ANSI} C, you can make an address@hidden copy of it by
using the program @code{ansi2knr}, which comes with Automake. See also
under @code{AC_C_PROTOTYPES} below.
-If using the @sc{gnu} C compiler, set shell variable @code{GCC} to
+If using the @acronym{GNU} C compiler, set shell variable @code{GCC} to
@samp{yes}. If output variable @code{CFLAGS} was not already set, set
-it to @option{-g -O2} for the @sc{gnu} C compiler (@option{-O2} on systems
+it to @option{-g -O2} for the @acronym{GNU} C compiler (@option{-O2} on systems
where GCC does not accept @option{-g}), or @option{-g} for other compilers.
@end defmac
@@ -4982,7 +4989,7 @@ If the C compiler does not accept the @o
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 @sc{gnu} Make to choose the default C compilation
+macro was created for @acronym{GNU} Make to choose the default C compilation
rule.
@end defmac
@@ -5037,7 +5044,7 @@ to bypass this test.
@defmac AC_C_CONST
@acindex C_CONST
@cvindex const
-If the C compiler does not fully support the @sc{ansi} C qualifier
+If the C compiler does not fully support the @acronym{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
@@ -5079,7 +5086,7 @@ your code. However, given that the comp
@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 @sc{ansi} C, so
+In general, the @code{volatile} keyword is a feature of @acronym{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__}.
@@ -5157,10 +5164,10 @@ header files that cannot use macros that
@acindex PROG_GCC_TRADITIONAL
@ovindex CC
Add @option{-traditional} to output variable @code{CC} if using the
address@hidden C compiler and @code{ioctl} does not work properly without
address@hidden C compiler and @code{ioctl} does not work properly without
@option{-traditional}. That usually happens when the fixed header files
have not been installed on an old system. Since recent versions of the
address@hidden C compiler fix the header files automatically when installed,
address@hidden C compiler fix the header files automatically when installed,
this is becoming a less prevalent problem.
@end defmac
@@ -5193,9 +5200,9 @@ like this:
AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc)
@end example
-If using the @sc{gnu} C++ compiler, set shell variable @code{GXX} to
+If using the @acronym{GNU} C++ compiler, set shell variable @code{GXX} to
@samp{yes}. If output variable @code{CXXFLAGS} was not already set, set
-it to @option{-g -O2} for the @sc{gnu} C++ compiler (@option{-O2} on
+it to @option{-g -O2} for the @acronym{GNU} C++ compiler (@option{-O2} on
systems where G++ does not accept @option{-g}), or @option{-g} for other
compilers.
@end defmac
@@ -5240,7 +5247,7 @@ example, if you didn't like the default
AC_PROG_F77(fl32 f77 fort77 xlf g77 f90 xlf90)
@end example
-If using @code{g77} (the @sc{gnu} Fortran 77 compiler), then
+If using @code{g77} (the @acronym{GNU} Fortran 77 compiler), then
@code{AC_PROG_F77} will set the shell variable @code{G77} to @samp{yes}.
If the output variable @code{FFLAGS} was not already set in the
environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
@@ -5275,7 +5282,7 @@ variable @code{FLIBS} is set to these fl
This macro is intended to be used in those situations when it is
necessary to mix, e.g., C++ and Fortran 77 source code into a single
program or shared library (@pxref{Mixing Fortran 77 With C and C++,,,
-automake, GNU Automake}).
+automake, @acronym{GNU} Automake}).
For example, if object files from a C++ and Fortran 77 compiler must be
linked together, then the C++ compiler/linker must be used for linking
@@ -5391,7 +5398,7 @@ void FOOBAR_F77(double *x, double *y);
Note that we pass both the lowercase and uppercase versions of the
function name to @code{F77_FUNC} so that it can select the right one.
Note also that all parameters to Fortran 77 routines are passed as
-pointers (@pxref{Mixing Fortran 77 With C and C++,,, automake, GNU
+pointers (@pxref{Mixing Fortran 77 With C and C++,,, automake, @acronym{GNU}
Automake}).
Although Autoconf tries to be intelligent about detecting the
@@ -5534,24 +5541,24 @@ available or the environments they provi
@defmac AC_AIX
@acindex AIX
@cvindex _ALL_SOURCE
-If on AIX, define @code{_ALL_SOURCE}. Allows the use of some @sc{bsd}
+If on @acronym{AIX}, define @code{_ALL_SOURCE}. Allows the use of some
@acronym{BSD}
functions. Should be called before any macros that run the C compiler.
@end defmac
@defmac AC_GNU_SOURCE
@acindex GNU_SOURCE
@cvindex _GNU_SOURCE
-If using the GNU C library, define @code{_GNU_SOURCE}. Allows the use
-of some @acronym{GNU} functions. Should be called before any macros
-that run the C compiler.
+If using the @acronym{GNU} C library, define @code{_GNU_SOURCE}.
+Allows the use of some @acronym{GNU} functions. Should be called
+before any macros that run the C compiler.
@end defmac
@defmac AC_ISC_POSIX
@acindex ISC_POSIX
@ovindex LIBS
-For @sc{interactive unix} (@sc{isc}), add @option{-lcposix} to output
-variable @code{LIBS} if necessary for @sc{posix} facilities. Call this
-after @code{AC_PROG_CC} and before any other macros that use @sc{posix}
+For @sc{interactive unix} (@acronym{ISC}), add @option{-lcposix} to output
+variable @code{LIBS} if necessary for @acronym{POSIX} facilities. Call this
+after @code{AC_PROG_CC} and before any other macros that use @acronym{POSIX}
interfaces. @sc{interactive unix} is no longer sold, and Sun says that
they will drop support for it on 2006-07-23, so this macro is becoming
obsolescent.
@@ -5563,7 +5570,7 @@ obsolescent.
@cvindex _POSIX_SOURCE
@cvindex _POSIX_1_SOURCE
If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
address@hidden to be 2. This allows the use of @sc{posix}
address@hidden to be 2. This allows the use of @acronym{POSIX}
facilities. Should be called before any macros that run the C compiler.
@end defmac
@@ -5686,7 +5693,7 @@ This section is dedicated to these sourc
@menu
* Guidelines:: General rules for writing test programs
* Test Functions:: Avoiding pitfalls in test programs
-* Generating Sources:: Source Program Boilerplates
+* Generating Sources:: Source program boilerplate
@end menu
@node Guidelines
@@ -5722,7 +5729,7 @@ Test programs can use @code{#if} or @cod
preprocessor macros defined by tests that have already run. For
example, if you call @code{AC_HEADER_STDC}, then later on in
@file{configure.ac} you can have a test program that includes an
address@hidden C header file conditionally:
address@hidden C header file conditionally:
@example
@group
@@ -6036,17 +6043,6 @@ checking a function's run-time behavior
it can be slower than scanning the libraries once, but accuracy is more
important than speed.
address@hidden FIXME: Errr.... I doubt this matters today... --akim, 2002.
address@hidden A few systems have linkers that do not return a failure exit
status when
address@hidden there are unresolved functions in the link. This bug makes the
address@hidden configuration scripts produced by Autoconf unusable on those
systems.
address@hidden However, some of them can be given options that make the exit
status
address@hidden correct. This is a problem that Autoconf does not currently
handle
address@hidden automatically. If users encounter this problem, they might be
able to
address@hidden solve it by setting @code{LDFLAGS} in the environment to pass
whatever
address@hidden options the linker needs (for example, @option{-Wl,-dn} on
@sc{mips
address@hidden risc/os}).
-
@code{AC_LINK_IFELSE} is used to compile test programs to test for
functions and global variables. It is also used by @code{AC_CHECK_LIB}
to check for libraries (@pxref{Libraries}), by adding the library being
@@ -6165,16 +6161,16 @@ software which really need to be built o
Darwin to have both UFS and HFS+ available (and put the /local/build
tree on the UFS).
address@hidden @sc{qnx 4.25}
address@hidden @sc{qnx 4.25}
address@hidden @acronym{QNX} 4.25
address@hidden @acronym{QNX} 4.25
@c FIXME: Please, if you feel like writing something more precise,
@c it'd be great. In particular, I can't understand the difference with
@c QNX Neutrino.
address@hidden is a realtime operating system running on Intel architecture
address@hidden is a realtime operating system running on Intel architecture
meant to be scalable from the small embedded systems to the hundred
-processor super-computer. It claims to be @sc{posix} certified. More
-information is available on the @href{www.qnx.com, @sc{qnx} home page},
-including the @href{http://support.qnx.com/support/docs/qnx4/, @sc{qnx}
+processor super-computer. It claims to be @acronym{POSIX} certified. More
+information is available on the @href{www.qnx.com, @acronym{QNX} home page},
+including the @href{http://support.qnx.com/support/docs/qnx4/, @acronym{QNX}
man pages}.
@item Tru64
@@ -6835,12 +6831,12 @@ To fully understand where proper quotati
to know what the special characters are in Autoconf: @samp{#} introduces
a comment inside which no macro expansion is performed, @samp{,}
separates arguments, @samp{[} and @samp{]} are the quotes themselves,
-and finally @samp{(} and @samp{)} (which @code{m4} tries to match by
+and finally @samp{(} and @samp{)} (which M4 tries to match by
pairs).
In order to understand the delicate case of macro calls, we first have
to present some obvious failures. Below they are ``obvious-ified'',
-btu when you find them in real life, they are usually in disguise.
+but when you find them in real life, they are usually in disguise.
Comments, introduced by a hash and running up to the newline, are opaque
tokens to the top level: active characters are turned off, and there is
@@ -6979,7 +6975,7 @@ car([[active]])
@end example
In the first case, the top level looks for the arguments of @code{car},
-and finds @samp{active}. Because @code{m4} evaluates its arguments
+and finds @samp{active}. Because M4 evaluates its arguments
before applying the macro, @samp{active} is expanded, which results in:
@example
@@ -7022,7 +7018,7 @@ car([[int tab[10];]])
@noindent
Huh? The first case is easily understood, but why is the second wrong,
and the third right? To understand that, you must know that after
address@hidden expands a macro, the resulting text is immediately subjected
+M4 expands a macro, the resulting text is immediately subjected
to macro expansion and quote removal. This means that the quote removal
occurs twice---first before the argument is passed to the @code{car}
macro, and second after the @code{car} macro expands to the first
@@ -7079,7 +7075,7 @@ qar(my_includes)
This macro, @code{qar}, because it double quotes its arguments, forces
its users to leave their macro calls unquoted, which is dangerous.
-Commas and other active symbols are interpreted by @code{m4} before
+Commas and other active symbols are interpreted by M4 before
they are given to the macro, often not in the way the users expect.
Also, because @code{qar} behaves differently from the other macros,
it's an exception that should be avoided in Autoconf.
@@ -7256,7 +7252,7 @@ extern char *tzname[]; /* RS6000 and oth
@noindent
The M4-fluent reader will note that these two examples are rigorously
-equivalent, since @code{m4} swallows both the @samp{changequote(<<, >>)}
+equivalent, since M4 swallows both the @samp{changequote(<<, >>)}
and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
quotes are not part of the arguments!
@@ -7295,7 +7291,7 @@ where quoting does not suffice.
When you create a @command{configure} script using newly written macros,
examine it carefully to check whether you need to add more quotes in
-your macros. If one or more words have disappeared in the @code{m4}
+your macros. If one or more words have disappeared in the M4
output, you need more quotes. When in doubt, quote.
However, it's also possible to put on too many layers of quotes. If
@@ -7322,7 +7318,7 @@ Yet another great name from Lars J. Aas.
@command{m4} itself.
@menu
-* autom4te Invocation:: A GNU M4 wrapper
+* autom4te Invocation:: A @acronym{GNU} M4 wrapper
* Customizing autom4te:: Customizing the Autoconf package
@end menu
@@ -7520,16 +7516,17 @@ Set the mode of the non-traces output to
@cindex @file{autom4te.cache}
As another additional feature over @command{m4}, @command{autom4te}
-caches its results. GNU M4 is able to produce a regular output and
-traces at the same time. Traces are heavily used in the GNU Build
-System: @command{autoheader} uses them to build @file{config.h.in},
address@hidden to determine what GNU Build System components are
-used, @command{automake} to ``parse'' @file{configure.ac} etc. To save
-the long runs of @command{m4}, traces are cached while performing
-regular expansion, and conversely. This cache is (actually, the caches
-are) stored in the directory @file{autom4te.cache}. @emph{It can safely
-be removed} at any moment (especially if for some reason
address@hidden considers it is trashed).
+caches its results. @acronym{GNU} M4 is able to produce a regular
+output and traces at the same time. Traces are heavily used in the
address@hidden Build System: @command{autoheader} uses them to build
address@hidden, @command{autoreconf} to determine what
address@hidden Build System components are used, @command{automake} to
+``parse'' @file{configure.ac} etc. To save the long runs of
address@hidden, traces are cached while performing regular expansion,
+and conversely. This cache is (actually, the caches are) stored in
+the directory @file{autom4te.cache}. @emph{It can safely be removed}
+at any moment (especially if for some reason @command{autom4te}
+considers it is trashed).
@table @option
@item address@hidden
@@ -7548,7 +7545,7 @@ If a cache is used, consider it obsolete
@sp 1
-Because traces are so important to the GNU Build System,
+Because traces are so important to the @acronym{GNU} Build System,
@command{autom4te} provides high level tracing features as compared to
M4, and helps exploiting the cache:
@@ -7762,7 +7759,7 @@ to recover the behavior of the builtin.
@defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
@msindex bpatsubst
This macro corresponds to @code{patsubst}. The name @code{m4_patsubst}
-is kept for future versions of M4sh, on top of @sc{gnu} M4 which will
+is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
provide extended regular expression syntax via @code{epatsubst}.
@end defmac
@@ -7775,7 +7772,7 @@ defined. See @code{m4_undefine}.
@defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
@msindex bregexp
This macro corresponds to @code{regexp}. The name @code{m4_regexp}
-is kept for future versions of M4sh, on top of @sc{gnu} M4 which will
+is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
provide extended regular expression syntax via @code{eregexp}.
@end defmac
@@ -7902,7 +7899,7 @@ that unfortunately are not portable in p
@defmac AS_DIRNAME (@var{pathname})
@msindex DIRNAME
Return the directory portion of @var{pathname}, using the algorithm
-required by @sc{posix}. @xref{Limitations of Usual Tools}, for more
+required by @acronym{POSIX}. @xref{Limitations of Usual Tools}, for more
details about what this returns and why it is more portable than the
@command{dirname} command.
@end defmac
@@ -7951,7 +7948,7 @@ AC_DEFUN(@var{macro-name}, @var{macro-bo
You can refer to any arguments passed to the macro as @samp{$1},
@samp{$2}, etc. @xref{Definitions,, How to define new macros, m4.info,
-GNU m4}, for more complete information on writing M4 macros.
address@hidden m4}, for more complete information on writing M4 macros.
Be sure to properly quote both the @var{macro-body} @emph{and} the
@var{macro-name} to avoid any problems if the macro happens to have
@@ -7975,7 +7972,7 @@ using @samp{#} to introduce comments.
@cindex @code{dnl}
If you have some very special comments about pure M4 code, comments
that make no sense in @file{configure} and in the header comment, then
-use the builtin @code{dnl}: it causes @code{m4} to discard the text
+use the builtin @code{dnl}: it causes M4 to discard the text
through the next newline.
Keep in mind that @code{dnl} is rarely needed to introduce comments;
@@ -8060,8 +8057,8 @@ when @command{configure} is run, see @re
@defmac AC_DIAGNOSE (@var{category}, @var{message})
@acindex DIAGNOSE
Report @var{message} as a warning (or as an error if requested by the
-user) if warnings of the @var{category} are turned on. You are encouraged to
use
-standard categories, which currently include:
+user) if warnings of the @var{category} are turned on. You are
+encouraged to use standard categories, which currently include:
@table @samp
@item all
@@ -8235,7 +8232,7 @@ when @code{AC_PROG_CC} is called.
@defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
@acindex BEFORE
-Make @code{m4} print a warning message to the standard error output if
+Make M4 print a warning message to the standard error output if
@var{called-macro-name} has already been called. @var{this-macro-name}
should be the name of the macro that is calling @code{AC_BEFORE}. The
macro @var{called-macro-name} must have been defined using
@@ -8500,7 +8497,7 @@ after the exclamation point in interpret
@end example
@noindent
-If you omit the space before the path, then address@hidden based systems
+If you omit the space before the path, then address@hidden based systems
(such as DYNIX) will ignore the line, because they interpret
@samp{#! /} as a 4-byte magic number. Some old systems have quite
small limits on the length of the @samp{#!} line too, for instance 32
@@ -8508,7 +8505,7 @@ bytes (not including the newline) on Sun
The set of external programs you should run in a @command{configure} script
is fairly small. @xref{Utilities in Makefiles,, Utilities in
-Makefiles, standards, GNU Coding Standards}, for the list. This
+Makefiles, standards, @acronym{GNU} Coding Standards}, for the list. This
restriction allows users to start out with a fairly small set of
programs and build the rest, avoiding too many interdependencies between
packages.
@@ -8547,11 +8544,11 @@ Below we describe some of the members of
@table @asis
@item Ash
@cindex Ash
address@hidden is often used on @sc{gnu}/Linux and @sc{bsd} systems as a
-light-weight Bourne-compatible shell. Ash 0.2 has some bugs that are
-fixed in the 0.3.x series, but portable shell scripts should work around
-them, since version 0.2 is still shipped with many @sc{gnu}/Linux
-distributions.
address@hidden is often used on @acronym{GNU}/Linux and @acronym{BSD}
+systems as a light-weight Bourne-compatible shell. Ash 0.2 has some
+bugs that are fixed in the 0.3.x series, but portable shell scripts
+should work around them, since version 0.2 is still shipped with many
address@hidden/Linux distributions.
To be compatible with Ash 0.2:
@@ -8583,9 +8580,9 @@ Substitutions}, item ``Command Substitut
@cindex Bash
To detect whether you are running @command{bash}, test if
@code{BASH_VERSION} is set. To disable its extensions and require
address@hidden compatibility, run @samp{set -o posix}. @xref{Bash POSIX
-Mode,, Bash @sc{posix} Mode, bash, The GNU Bash Reference Manual}, for
-details.
address@hidden compatibility, run @samp{set -o posix}. @xref{Bash POSIX
+Mode,, Bash @acronym{POSIX} Mode, bash, The @acronym{GNU} Bash Reference
+Manual}, for details.
@item Bash 2.05 and later
@cindex Bash 2.05 and later
@@ -8598,7 +8595,7 @@ you'll need to use @command{bash} 2.05 f
@item @command{/usr/xpg4/bin/sh} on Solaris
@prindex @command{/usr/xpg4/bin/sh} on Solaris
-The @sc{posix}-compliant Bourne shell on a Solaris system is
+The @acronym{POSIX}-compliant Bourne shell on a Solaris system is
@command{/usr/xpg4/bin/sh} and is part of an extra optional package.
There is no extra charge for this package, but it is also not part of a
minimal OS install and therefore some folks may not have it.
@@ -8621,13 +8618,13 @@ reading:
Russ Allbery:
@quotation
-The @sc{gnu} assumption that @command{/bin/sh} is the one and only shell
+The @acronym{GNU} assumption that @command{/bin/sh} is the one and only shell
leads to a permanent deadlock. Vendors don't want to break users'
existing shell scripts, and there are some corner cases in the Bourne
-shell that are not completely compatible with a @sc{posix} shell. Thus,
+shell that are not completely compatible with a @acronym{POSIX} shell. Thus,
vendors who have taken this route will @emph{never} (address@hidden say
never'') replace the Bourne shell (as @command{/bin/sh}) with a
address@hidden shell.
address@hidden shell.
@end quotation
@noindent
@@ -8636,10 +8633,10 @@ Robert Lipe:
@quotation
This is exactly the problem. While most (at least most System V's) do
have a Bourne shell that accepts shell functions most vendor
address@hidden/bin/sh} programs are not the @sc{posix} shell.
address@hidden/bin/sh} programs are not the @acronym{POSIX} shell.
So while most modern systems do have a shell @emph{somewhere} that meets the
address@hidden standard, the challenge is to find it.
address@hidden standard, the challenge is to find it.
@end quotation
@node Here-Documents
@@ -8647,11 +8644,11 @@ So while most modern systems do have a s
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}
-on OpenBSD 2.7 @samp{\"} expands to @samp{"} in here-documents with
+on address@hidden 2.7 @samp{\"} expands to @samp{"} in here-documents with
unquoted delimiter. As a general rule, if @samp{\\} expands to @samp{\}
use @samp{\\} to get @samp{\}.
-With OpenBSD 2.7's @command{/bin/sh}
+With address@hidden 2.7's @command{/bin/sh}
@example
@group
@@ -8791,7 +8788,7 @@ bar}; see @ref{Limitations of Builtins},
@section 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 @sc{dos}
+variety, it can and will be used on other systems, most notably @acronym{DOS}
variants. This impacts several assumptions regarding file and
path names.
@@ -8830,7 +8827,7 @@ use it as path separator. When creating
@code{PATH_SEPARATOR} output variable instead. @command{configure} sets this
to the appropriate value (@samp{:} or @samp{;}) when it starts up.
-File names need extra care as well. While @sc{dos}-based environments
+File names need extra care as well. While @acronym{DOS}-based environments
that are Unixy enough to run @command{autoconf} (such as DJGPP) will
usually be able to handle long file names properly, there are still
limitations that can seriously break packages. Several of these issues
@@ -8840,12 +8837,12 @@ package.
A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
indicate where they apply: @sc{sfn} means the issues are only relevant to
-plain @sc{dos}, not to @sc{dos} boxes under Windows, while @sc{lfn}
+plain @acronym{DOS}, not to @acronym{DOS} boxes under Windows, while @sc{lfn}
identifies problems that exist even under Windows.
@table @asis
@item No multiple dots (@sc{sfn})
address@hidden cannot handle multiple dots in filenames. This is an especially
address@hidden cannot handle multiple dots in filenames. This is an especially
important thing to remember when building a portable configure script,
as @command{autoconf} uses a .in suffix for template files.
@@ -8858,9 +8855,9 @@ AC_OUTPUT
@end example
@noindent
-but it causes problems on @sc{dos}, as it requires @samp{config.h.in},
+but it causes problems on @acronym{DOS}, as it requires @samp{config.h.in},
@samp{source.c.in} and @samp{foo.bar.in}. To make your package more portable
-to @sc{dos}-based environments, you should use this instead:
+to @acronym{DOS}-based environments, you should use this instead:
@example
AC_CONFIG_HEADERS([config.h:config.hin])
@@ -8869,18 +8866,18 @@ AC_OUTPUT
@end example
@item No leading dot (@sc{sfn})
address@hidden cannot handle filenames that start with a dot. This is usually
address@hidden cannot handle filenames that start with a dot. This is usually
not a very important issue for @command{autoconf}.
@item Case insensitivity (@sc{lfn})
address@hidden is case insensitive, so you cannot, for example, have both a
address@hidden is case insensitive, so you cannot, for example, have both a
file called @samp{INSTALL} and a directory called @samp{install}. This
also affects @command{make}; if there's a file called @samp{INSTALL} in
the directory, @samp{make install} will do nothing (unless the
@samp{install} target is marked as PHONY).
@item The 8+3 limit (@sc{sfn})
-Because the @sc{dos} file system only stores the first 8 characters of
+Because the @acronym{DOS} file system only stores the first 8 characters of
the filename and the first 3 of the extension, those must be unique.
That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
@file{foobar-prettybird.c} all resolve to the same filename
@@ -8895,7 +8892,7 @@ and @sc{lfn} environments, it also means
as well.
@item Invalid characters
-Some characters are invalid in @sc{dos} filenames, and should therefore
+Some characters are invalid in @acronym{DOS} filenames, and should therefore
be avoided. In a @sc{lfn} environment, these are @samp{/}, @samp{\},
@samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
In a @sc{sfn} environment, other characters are also invalid. These
@@ -8939,7 +8936,7 @@ strings inside double-quoted back-quoted
@item $@@
@cindex @samp{"$@@"}
One of the most famous shell-portability issues is related to
address@hidden"$@@"}. When there are no positional arguments, @sc{posix} says
address@hidden"$@@"}. When there are no positional arguments, @acronym{POSIX}
says
that @samp{"$@@"} is supposed to be equivalent to nothing, but the
original Unix Version 7 Bourne shell treated it as equivalent to
@samp{""} instead, and this behavior survives in later implementations
@@ -8991,7 +8988,7 @@ esac
@item address@hidden@var{var}:address@hidden@}
@c Info cannot handle `:' in index entries.
@c @cindex address@hidden@var{var}:address@hidden@}
-Old @sc{bsd} shells, including the Ultrix @code{sh}, don't accept the
+Old @acronym{BSD} shells, including the Ultrix @code{sh}, don't accept the
colon for any shell substitution, and complain and die.
@item address@hidden@address@hidden@}
@@ -9078,7 +9075,7 @@ bit set, hence no IFS splitting is perfo
One piece of good news is that Ultrix works fine with @samp{:
address@hidden@}}; i.e., if you @emph{don't} quote. The bad news is
-then that @sc{qnx} 4.25 then sets @var{list} to the @emph{last} item of
+then that @acronym{QNX} 4.25 then sets @var{list} to the @emph{last} item of
@var{default}!
The portable way out consists in using a double assignment, to switch
@@ -9176,7 +9173,7 @@ $ @kbd{false || foo=`:`; echo $?}
@end example
@noindent
-and to make things even worse, @sc{qnx 4.25} just sets the exit status
+and to make things even worse, @acronym{QNX} 4.25 just sets the exit status
to 0 in any case:
@example
@@ -9300,7 +9297,7 @@ Autoconf-generated scripts unset the var
@item LANGUAGE
@evindex LANGUAGE
address@hidden is not specified by @sc{posix}, but it is a @sc{gnu}
address@hidden is not specified by @acronym{POSIX}, but it is a @acronym{GNU}
extension that overrides @env{LC_ALL} in some cases, so
Autoconf-generated scripts set it too.
@@ -9470,7 +9467,7 @@ On DJGPP systems, the @code{PATH_SEPARAT
set to either @samp{:} or @samp{;} to control the path separator
@command{bash} uses to set up certain environment variables (such as
@code{PATH}). Since this only works inside @command{bash}, you want
address@hidden to detect the regular @sc{dos} path separator
address@hidden to detect the regular @acronym{DOS} path separator
(@samp{;}), so it can be safely substituted in files that may not support
@samp{;} as path separator. So it is recommended to either unset this
variable or set it to @samp{;}.
@@ -9478,9 +9475,9 @@ variable or set it to @samp{;}.
@item RANDOM
@evindex RANDOM
Many shells provide @code{RANDOM}, a variable that returns a different
-integer each time it is used. Most of the time, its value does not change
when it
-is not used, but on @sc{irix 6.5} the value changes all the time. This
-can be observed by using @command{set}.
+integer each time it is used. Most of the time, its value does not
+change when it is not used, but on @sc{irix} 6.5 the value changes all
+the time. This can be observed by using @command{set}.
@end table
@@ -9597,7 +9594,7 @@ etc.@: for a means to simulate @option{-
Do not use backslashes in the arguments, as there is no consensus on
their handling. On @samp{echo '\n' | wc -l}, the @command{sh} of
-Digital Unix 4.0 and @sc{mips risc/os} 4.52, answer 2, but the Solaris'
+Digital Unix 4.0 and @acronym{MIPS RISC/OS} 4.52, answer 2, but the Solaris'
@command{sh}, Bash, and Zsh (in @command{sh} emulation mode) report 1.
Please note that the problem is truly @command{echo}: all the shells
understand @samp{'\n'} as the string composed of a backslash and an
@@ -9655,11 +9652,11 @@ of the environment variables. Conversel
received by the shell when it is launched should be imported as a shell
variable marked as exported.
-Alas, many shells, such as Solaris 2.5, IRIX 6.3, IRIX 5.2, AIX 4.1.5,
-and DU 4.0, forget to @command{export} the environment variables they
-receive. As a result, two variables are coexisting: the environment
-variable and the shell variable. The following code demonstrates this
-failure:
+Alas, many shells, such as Solaris 2.5, @sc{irix} 6.3, @sc{irix} 5.2,
address@hidden 4.1.5, and Digital @sc{unix} 4.0, forget to
address@hidden the environment variables they receive. As a result,
+two variables coexist: the environment variable and the shell
+variable. The following code demonstrates this failure:
@example
#! /bin/sh
@@ -9829,14 +9826,14 @@ set -ex
@c ------------------
@prindex @command{shift}
Not only is @command{shift}ing a bad idea when there is nothing left to
-shift, but in addition it is not portable: the shell of @sc{mips
-risc/os} 4.52 refuses to do it.
+shift, but in addition it is not portable: the shell of @acronym{MIPS
+RISC/OS} 4.52 refuses to do it.
@item @command{source}
@c -------------------
@prindex @command{source}
-This command is not portable, as @sc{posix} does not require it; use
+This command is not portable, as @acronym{POSIX} does not require it; use
@command{.} instead.
@@ -9852,7 +9849,7 @@ If you need to make multiple checks usin
the shell operators @samp{&&} and @samp{||} instead of using the
@code{test} operators @option{-a} and @option{-o}. On System V, the
precedence of @option{-a} and @option{-o} is wrong relative to the unary
-operators; consequently, @sc{posix} does not specify them, so using them
+operators; consequently, @acronym{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.
@@ -9866,7 +9863,7 @@ To enable @command{configure} scripts to
shouldn't do anything that tests features of the build system instead of
the host system. But occasionally you may find it necessary to check
whether some arbitrary file exists. To do so, use @samp{test -f} or
address@hidden -r}. Do not use @samp{test -x}, because @sc{4.3bsd} does not
address@hidden -r}. Do not use @samp{test -x}, because address@hidden does not
have it. Do not use @samp{test -e} either, because Solaris 2.5 does not
have it.
@@ -9876,11 +9873,11 @@ Avoid @samp{test "@var{string}"}, in par
start with a dash, since @code{test} might interpret its argument as an
option (e.g., @address@hidden = "-n"}).
-Contrary to a common belief, @samp{test -n @var{string}} and @samp{test
--z @var{string}} @strong{are} portable. Nevertheless many shells (such
-as Solaris 2.5, AIX 3.2, UNICOS 10.0.0.6, Digital Unix 4 etc.) have
-bizarre precedence and may be confused if @var{string} looks like an
-operator:
+Contrary to a common belief, @samp{test -n @var{string}} and
address@hidden -z @var{string}} @strong{are} portable. Nevertheless many
+shells (such as Solaris 2.5, @acronym{AIX} 3.2, @sc{unicos} 10.0.0.6,
+Digital Unix 4 etc.) have bizarre precedence and may be confused if
address@hidden looks like an operator:
@example
$ @kbd{test -n =}
@@ -9917,7 +9914,7 @@ esac
@end example
Alas, negated character classes are probably not portable, although no
-shell is known to not support the @sc{posix.2} syntax @address@hidden
+shell is known to not support the @acronym{POSIX} syntax @address@hidden
(when in interactive mode, @command{zsh} is confused by the
@address@hidden syntax and looks for an event in its history because of
@samp{!}). Many shells do not support the alternative syntax
@@ -9950,7 +9947,7 @@ It is safe to trap at least the signals
trap 0, i.e., have the @command{trap} run when the script ends (either via an
explicit @command{exit}, or the end of the script).
-Although @sc{posix} is not absolutely clear on this point, it is widely
+Although @acronym{POSIX} is not absolutely clear on this point, it is widely
admitted that when entering the trap @samp{$?} should be set to the exit
status of the last command run before the trap. The ambiguity can be
summarized as: ``when the trap is launched by an @command{exit}, what is
@@ -9977,8 +9974,8 @@ run @samp{(exit 42); exit 42}, the first
set the exit status to 42 for Zsh, and the second to trigger the trap
and pass 42 as exit status for Bash.
-The shell in FreeBSD 4.0 has the following bug: @samp{$?} is reset to 0
-by empty lines if the code is inside @command{trap}.
+The shell in address@hidden 4.0 has the following bug: @samp{$?} is
+reset to 0 by empty lines if the code is inside @command{trap}.
@example
$ @kbd{trap 'false}
@@ -10043,7 +10040,7 @@ include some limitations you should be a
@c ----------------
@prindex @command{awk}
Don't leave white spaces before the parentheses in user functions calls;
address@hidden awk will reject it:
address@hidden awk will reject it:
@example
$ @kbd{gawk 'function die () @{ print "Aaaaarg!" @}
@@ -10206,7 +10203,7 @@ dir=`AS_DIRNAME(["$file"])` # This is mo
@noindent
This handles a few subtleties in the standard way required by
address@hidden For example, under UN*X, should @samp{dirname //1} give
address@hidden For example, under UN*X, should @samp{dirname //1} give
@samp{/}? Paul Eggert answers:
@quotation
@@ -10217,11 +10214,12 @@ to @samp{/}; but leading @samp{//} is sp
started with Apollo Domain/OS, an OS that is still in use on some older
hosts.
address@hidden allows but does not require the special treatment for @samp{//}.
-It says that the behavior of dirname on path names of the form
address@hidden//([^/]+/*)?} is implementation defined. In these cases, GNU
address@hidden returns @samp{/}, but it's more portable to return
address@hidden//} as this works even on those older flavors of Unix.
address@hidden allows but does not require the special treatment for
address@hidden//}. It says that the behavior of dirname on path names of the
+form @samp{//([^/]+/*)?} is implementation defined. In these cases,
address@hidden @command{dirname} returns @samp{/}, but it's more
+portable to return @samp{//} as this works even on those older flavors
+of Unix.
@end quotation
@@ -10259,7 +10257,7 @@ Don't use @code{length}, @code{substr},
@item @command{expr} (@samp{|})
@prindex @command{expr} (@samp{|})
-You can use @samp{|}. Although @sc{posix} does require that @samp{expr
+You can use @samp{|}. Although @acronym{POSIX} does require that @samp{expr
''} return the empty string, it does not specify the result when you
@samp{|} together the empty string (or zero) with the empty string. For
example:
@@ -10268,12 +10266,13 @@ example:
expr '' \| ''
@end example
address@hidden/Linux and @sc{posix.2-1992} return the empty string for this
-case, but traditional Unix returns @samp{0} (Solaris is one such
-example). In the latest @sc{posix} draft, the specification has been
-changed to match traditional Unix's behavior (which is bizarre, but it's
-too late to fix this). Please note that the same problem does arise
-when the empty string results from a computation, as in:
address@hidden/Linux and @acronym{POSIX}.2-1992 return the empty string
+for this case, but traditional @sc{unix} returns @samp{0} (Solaris is
+one such example). In @acronym{POSIX}.1-2001, the specification has
+been changed to match traditional @sc{unix}'s behavior (which is
+bizarre, but it's too late to fix this). Please note that the same
+problem does arise when the empty string results from a computation,
+as in:
@example
expr bar : foo \| foo : bar
@@ -10286,24 +10285,24 @@ Avoid this portability problem by avoidi
@item @command{expr} (@samp{:})
@c ----------------------------
@prindex @command{expr}
-Don't use @samp{\?}, @samp{\+} and @samp{\|} in patterns, they are
+Don't use @samp{\?}, @samp{\+} and @samp{\|} in patterns, as they are
not supported on Solaris.
-The @sc{posix.2-1992} standard is ambiguous as to whether @samp{expr a :
-b} (and @samp{expr 'a' : '\(b\)'}) output @samp{0} or the empty string.
+The @acronym{POSIX} standard is ambiguous as to whether
address@hidden 'a' : '\(b\)'} outputs @samp{0} or the empty string.
In practice, it outputs the empty string on most platforms, but portable
-scripts should not assume this. For instance, the @sc{qnx} 4.25 native
+scripts should not assume this. For instance, the @acronym{QNX} 4.25 native
@command{expr} returns @samp{0}.
-You may believe that one means to get a uniform behavior would be to use
+One might think that a way to get a uniform behavior would be to use
the empty string as a default value:
@example
-expr a : b \| ''
+expr a : '\(b\)' \| ''
@end example
@noindent
-unfortunately this behaves exactly as the original expression, see the
+Unfortunately this behaves exactly as the original expression; see the
@address@hidden (@samp{:})} entry for more information.
Older @command{expr} implementations (e.g., SunOS 4 @command{expr} and
@@ -10314,7 +10313,7 @@ bytes. In this case, you might want to
Don't leave, there is some more!
-The @sc{qnx} 4.25 @command{expr}, in addition of preferring @samp{0} to
+The @acronym{QNX} 4.25 @command{expr}, in addition of preferring @samp{0} to
the empty string, has a funny behavior in its exit status: it's always 1
when parentheses are used!
@@ -10340,7 +10339,7 @@ $ @kbd{expr 'a' : '\(a\)' || echo 'a' |
@end example
@noindent
-will output @samp{a} on most hosts, but @samp{aa} on @sc{qnx} 4.25. A
+will output @samp{a} on most hosts, but @samp{aa} on @acronym{QNX} 4.25. A
simple workaround consists in testing @command{expr} and use a variable
set to @command{expr} or to @command{false} according to the result.
@@ -10356,8 +10355,9 @@ replacement @code{grep -F}. To work aro
@item @command{find}
@c -----------------
-The option @option{-maxdepth} seems to be GNU specific. Tru64 v5.1,
-NetBSD 1.5 and Solaris 2.5 @command{find} commands do not understand it.
+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.
The replacement of @address@hidden@}} is guaranteed only if the argument is
exactly @address@hidden@}}, not if it's only a part of an argument. For
@@ -10370,7 +10370,7 @@ $ @kbd{find . -name foo -exec echo "@address@hidden
@end example
@noindent
-while @sc{gnu} @command{find} reports @samp{./foo-./foo}.
+while @acronym{GNU} @command{find} reports @samp{./foo-./foo}.
@item @command{grep}
@@ -10383,7 +10383,7 @@ doesn't exist) of @code{grep} to @file{/
status of @code{grep} to determine whether it found a match.
Don't use multiple regexps with @option{-e}, as some @code{grep} will only
-honor the last pattern (e.g., IRIX 6.5 and Solaris 2.5.1). Anyway,
+honor the last pattern (e.g., @sc{irix} 6.5 and Solaris 2.5.1). Anyway,
Stardent Vistra SVR4 @code{grep} lacks @address@hidden Instead, use
extended regular expressions and alternation.
@@ -10505,13 +10505,13 @@ rm -f foo
@c ----------------
@prindex @command{sed}
Patterns should not include the separator (unless escaped), even as part
-of a character class. In conformance with @sc{posix}, the Cray
+of a character class. In conformance with @acronym{POSIX}, the Cray
@command{sed} will reject @samp{s/[^/]*$//}: use @samp{s,[^/]*$,,}.
Sed scripts should not use branch labels longer than 8 characters and
should not contain comments.
-Don't include extra @samp{;}, as some @command{sed}, such as NetBSD
+Don't include extra @samp{;}, as some @command{sed}, such as address@hidden
1.4.2's, try to interpret the second as a command:
@example
@@ -10522,7 +10522,7 @@ sed: 1: "s/x/x/;;s/x/x/": invalid comman
Input should have reasonably long lines, since some @command{sed} have
an input buffer limited to 4000 bytes.
-Alternation, @samp{\|}, is common but @sc{posix}.2 does not require its
+Alternation, @samp{\|}, is common but @acronym{POSIX} does not require its
support, so it should be avoided in portable scripts. Solaris 8
@command{sed} does not support alternation; e.g., @samp{sed '/a\|b/d'}
deletes only lines that contain the literal string @samp{a|b}.
@@ -10556,7 +10556,7 @@ matched''. All descendants of Bell Lab'
don't have first hand experience with older @command{sed}s) have
supported it.
address@hidden requires that you must not have any white space between
address@hidden requires that you must not have any white space between
@samp{!} and the following command. It is OK to have blanks between
the address and the @samp{!}. For instance, on Solaris 8:
@@ -10573,8 +10573,8 @@ foo
@c ---------------------------
@prindex @command{sed} (@samp{t})
Some old systems have @command{sed} that ``forget'' to reset their
address@hidden flag when starting a new cycle. For instance on @sc{mips
-risc/os}, and on @sc{irix} 5.3, if you run the following @command{sed}
address@hidden flag when starting a new cycle. For instance on @acronym{MIPS
+RISC/OS}, and on @sc{irix} 5.3, if you run the following @command{sed}
script (the line numbers are not actual part of the texts):
@example
@@ -10646,12 +10646,13 @@ s/.*/deleted/g
@item @command{touch}
@c ------------------
@prindex @command{touch}
-On some old @sc{bsd} systems, @command{touch} or any command that
+On some old @acronym{BSD} systems, @command{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.
-GNU @command{touch} 3.16r (and presumably all before that) fails to work
-on SunOS 4.1.3 when the empty file is on an @sc{nfs}-mounted 4.2 volume.
address@hidden @command{touch} 3.16r (and presumably all before that)
+fails to work on SunOS 4.1.3 when the empty file is on an
address@hidden 4.2 volume.
@end table
@@ -10665,7 +10666,7 @@ are executed by the shell, all its weakn
@table @asis
@item @code{$<}
address@hidden says that the @samp{$<} construct in makefiles can be used
address@hidden says that the @samp{$<} construct in makefiles can be used
only in inference rules and in the @samp{.DEFAULT} rule; its meaning in
ordinary rules is unspecified. Solaris 8's @command{make} for instance
will replace it with the argument.
@@ -10714,7 +10715,7 @@ line.
@item Escaped newline in comments
-According to @sc{posix}, @file{Makefile} comments start with @code{#}
+According to @acronym{POSIX}, @file{Makefile} comments start with @code{#}
and continue until an unescaped newline is reached.
@example
@@ -10754,9 +10755,9 @@ line with @code{#}, not only the first.
A command-line variable definition such as @code{foo=bar} overrides any
definition of @code{foo} in the @file{Makefile}. Some @command{make}
-implementations (such as @sc{gnu} @command{make}) will propagate this
+implementations (such as @acronym{GNU} @command{make}) will propagate this
override to sub-invocations of @command{make}. This is allowed but not
-required by @sc{posix}.
+required by @acronym{POSIX}.
@example
% @kbd{cat Makefile}
@@ -10816,7 +10817,7 @@ you do that.
@cindex @code{SHELL} and @command{make}
@cindex @command{make} and @code{SHELL}
address@hidden @command{make}s internally use the @code{$(SHELL)}
address@hidden @command{make}s internally use the @code{$(SHELL)}
macro to spawn shell processes and execute @file{Makefile} rules. This
is a builtin macro supplied by @command{make}, but it can be modified
from the @file{Makefile} or a command-line argument.
@@ -10830,7 +10831,7 @@ your @file{Makefile}s. If you use Autoc
SHELL = @@SHELL@@
@end example
address@hidden @command{make}s should never acquire the value of
address@hidden @command{make}s should never acquire the value of
$(SHELL) from the environment, even when @code{make -e} is used
(otherwise, think about what would happen to your rules if
@code{SHELL=/bin/tcsh}).
@@ -10920,7 +10921,7 @@ exit status: 0
@item @code{VPATH}
@cindex @code{VPATH}
-There is no @code{VPATH} support specified in @sc{posix}. Many
+There is no @code{VPATH} support specified in @acronym{POSIX}. Many
@command{make}s have a form of @code{VPATH} support, but its
implementation is not consistent amongst @command{make}s.
@@ -11156,15 +11157,15 @@ directory that was created in the curren
@item target lookup
@cindex @code{VPATH}, resolving target pathnames
-GNU @command{make} uses a rather complex algorithm to decide when it
address@hidden @command{make} uses a rather complex algorithm to decide when it
should use files found via a @code{VPATH} search. @xref{Search
-Algorithm,, How Directory Searches are Performed, make, The GNU Make
+Algorithm,, How Directory Searches are Performed, make, The @acronym{GNU} Make
Manual}.
-If a target needs to be rebuilt, GNU @command{make} discards the
+If a target needs to be rebuilt, @acronym{GNU} @command{make} discards the
filename found during the @code{VPATH} search for this target, and
builds the file locally using the filename given in the @file{Makefile}.
-If a target does not need to be rebuilt, GNU @command{make} uses the
+If a target does not need to be rebuilt, @acronym{GNU} @command{make} uses the
filename found during the @code{VPATH} search.
Other @command{make} implementations, like BSD @command{make}, are
@@ -11174,7 +11175,7 @@ new files are created locally, but exist
@code{VPATH} location.
When attempting a @code{VPATH} build for an autoconfiscated package
-(e.g, @code{mkdir build; ../configure}), this means the GNU
+(e.g, @code{mkdir build; ../configure}), this means the @acronym{GNU}
@command{make} will build everything locally in the @file{build}
directory, while BSD @command{make} will build new files locally and
update existing files in the source directory.
@@ -11195,12 +11196,12 @@ Building foo.x
Building ../bar.x
@end example
-Another point worth mentioning is that once GNU @command{make} has
+Another point worth mentioning is that once @acronym{GNU} @command{make} has
decided to ignore a @code{VPATH} filename (e.g., it ignored
@file{../bar.x} in the above example) it will continue to ignore it when
the target occurs as a prerequisite of another rule.
-The following example shows that GNU @command{make} does not look up
+The following example shows that @acronym{GNU} @command{make} does not look up
@file{bar.x} in @code{VPATH} before performing the @code{.x.y} rule,
because it ignored the @code{VPATH} result of @file{bar.x} while running
the @code{bar.x: newer.x} rule.
@@ -11227,9 +11228,10 @@ cp ../bar.x bar.y
@end example
Note that if you drop away the command from the @code{bar.x: newer.x}
-rule, things will magically start to work: GNU @command{make} knows that
address@hidden hasn't been updated, therefore it doesn't discard the
-result from @code{VPATH} (@file{../bar.x}) in succeeding uses.
+rule, things will magically start to work: @acronym{GNU}
address@hidden knows that @code{bar.x} hasn't been updated, therefore
+it doesn't discard the result from @code{VPATH} (@file{../bar.x}) in
+succeeding uses.
@example
% @kbd{cat Makefile}
@@ -11339,7 +11341,7 @@ Autoconf provides a uniform method for h
@node Specifying Names
@section Specifying the System Type
-Like other @sc{gnu} @command{configure} scripts, Autoconf-generated
+Like other @acronym{GNU} @command{configure} scripts, Autoconf-generated
@command{configure} scripts can make decisions based on a canonical name
for the system type, which has the form:
@address@hidden@address@hidden, where @var{os} can be
@@ -11567,7 +11569,7 @@ The options have one of these forms:
address@hidden
@end example
-For example, @option{--with-gnu-ld} means work with the @sc{gnu} linker
+For example, @option{--with-gnu-ld} means work with the @acronym{GNU} linker
instead of some other linker. @option{--with-x} means work with The X
Window System.
@@ -11618,9 +11620,10 @@ looks like this:
@noindent
@var{help-string} may be more than one line long, if more detail is
-needed. Just make sure the columns line up in @samp{configure --help}.
-Avoid tabs in the help string. You'll need to enclose the help string in
@samp{[}
-and @samp{]} in order to produce the leading spaces.
+needed. Just make sure the columns line up in @samp{configure
+--help}. Avoid tabs in the help string. You'll need to enclose the
+help string in @samp{[} and @samp{]} in order to produce the leading
+spaces.
You should format your @var{help-string} with the macro
@code{AC_HELP_STRING} (@pxref{Pretty Help Strings}).
@@ -11770,7 +11773,7 @@ by an environment variable. The program
run time, rather than at compile time. Run-time configuration is more
convenient for users and makes the configuration process simpler than
getting the information while configuring. @xref{Directory Variables,,
-Variables for Installation Directories, standards, GNU Coding
+Variables for Installation Directories, standards, @acronym{GNU} Coding
Standards}, for more information on where to put data files.
@node Transforming Names
@@ -11827,8 +11830,8 @@ cross-assembler running on a Sun 4 confi
with a native Sun 4 assembler.
You can force a program name to begin with @file{g}, if you don't want
address@hidden programs installed on your system to shadow other programs with
-the same name. For example, if you configure @sc{gnu} @code{diff} with
address@hidden programs installed on your system to shadow other programs with
+the same name. For example, if you configure @acronym{GNU} @code{diff} with
@option{--program-prefix=g}, then when you run @samp{make install} it is
installed as @file{/usr/local/bin/gdiff}.
@@ -11841,7 +11844,7 @@ As a more sophisticated example, you cou
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
address@hidden and @code{lesskey} that aren't @sc{gnu} programs. (That is
address@hidden and @code{lesskey} that aren't @acronym{GNU} programs. (That is
assuming that you have a source tree containing those programs that is
set up to use this feature.)
@@ -12128,9 +12131,10 @@ The calling convention of @file{config.s
@node Obsolete Constructs
@chapter Obsolete Constructs
-Autoconf changes, and throughout the years some constructs have been obsoleted.
-Most of the changes involve the macros, but in some cases the tools
themselves, or
-even some concepts, are now considered obsolete.
+Autoconf changes, and throughout the years some constructs have been
+obsoleted. Most of the changes involve the macros, but in some cases
+the tools themselves, or even some concepts, are now considered
+obsolete.
You may completely skip this chapter if you are new to Autoconf. Its
intention is mainly to help maintainers updating their packages by
@@ -12622,7 +12626,7 @@ Use @samp{AC_CHECK_SIZEOF(int)} instead.
@defmac AC_IRIX_SUN
@acindex IRIX_SUN
-If on IRIX (Silicon Graphics @sc{unix}), add @option{-lsun} to output
+If on @sc{irix} (Silicon Graphics @sc{unix}), add @option{-lsun} to output
@code{LIBS}. 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,
@@ -12757,7 +12761,7 @@ this automatically.
@defmac AC_OBSOLETE (@var{this-macro-name}, @ovar{suggestion})
@acindex OBSOLETE
-Make @code{m4} print a message to the standard error output warning that
+Make M4 print a message to the standard error output warning that
@var{this-macro-name} is obsolete, and giving the file and line number
where it was called. @var{this-macro-name} should be the name of the
macro that is calling @code{AC_OBSOLETE}. If @var{suggestion} is given,
@@ -13081,7 +13085,7 @@ Same as @samp{AC_CHECK_HEADERS(unistd.h)
@defmac AC_USG
@acindex USG
@cvindex USG
-Define @code{USG} if the @sc{bsd} string functions are defined in
+Define @code{USG} if the @acronym{BSD} string functions are defined in
@file{strings.h}. You should no longer depend upon @code{USG}, but on
@code{HAVE_STRING_H}; see @ref{Standard Symbols}.
@end defmac
@@ -13534,10 +13538,11 @@ too.
@sp 1
For backward compatibility, @command{configure} will accept a system
-type as an option by itself. Such an option will override the defaults
-for build, host, and target system types. The following configure
-statement will configure a cross toolchain that will run on NetBSD/alpha
-but generate code for GNU Hurd/sparc, which is also the build platform.
+type as an option by itself. Such an option will override the
+defaults for build, host, and target system types. The following
+configure statement will configure a cross toolchain that will run on
address@hidden/alpha but generate code for @acronym{GNU} Hurd/sparc, which is
+also the build platform.
@example
./configure --host=alpha-netbsd sparc-gnu
@@ -13610,7 +13615,7 @@ variable @code{LIBOBJS}. Since Autoconf
@code{AC_LIBOBJ} should be used instead (@pxref{Generic Functions}).
Starting at Autoconf 2.53, the use of @code{LIBOBJS} is an error.
-This change is mandated by the unification of the GNU Build System
+This change is mandated by the unification of the @acronym{GNU} Build System
components. In particular, the various fragile techniques used to parse
a @file{configure.ac} are all replaced with the use of traces. As a
consequence, any action must be traceable, which obsoletes critical
@@ -13764,13 +13769,14 @@ might change in the future: do not depen
subscribing to the Autoconf mailing lists.}
@end display
-It is paradoxical that portable projects depend on nonportable tools to
-run their test suite. Autoconf by itself is the paragon of this
-problem: although it aims at perfectly portability, up to 2.13, its test
-suite was using DejaGNU, a rich and complex testing framework, but which
-is far from being standard on Unix systems. Worse yet, it was likely to
-be missing on the most fragile platforms, the very platforms that are
-most likely to torture Autoconf and exhibit deficiencies.
+It is paradoxical that portable projects depend on nonportable tools
+to run their test suite. Autoconf by itself is the paragon of this
+problem: although it aims at perfectly portability, up to 2.13, its
+test suite was using address@hidden, a rich and complex testing
+framework, but which is far from being standard on Unix systems.
+Worse yet, it was likely to be missing on the most fragile platforms,
+the very platforms that are most likely to torture Autoconf and
+exhibit deficiencies.
To circumvent this problem many package maintainers have developed their
own testing framework, based on simple shell scripts whose sole output
@@ -13787,12 +13793,12 @@ diminish the interaction with bug report
Autoconf itself has been using Autotest for years, and we do attest that
it has considerably improved the strength of the test suite, and the
quality of bug reports. Other projects are known to use some generation
-of Autotest, such as Bison, Free Recode, Free Wdiff, GNU Tar, each of
+of Autotest, such as Bison, Free Recode, Free Wdiff, @acronym{GNU} Tar, each of
them having different needs, what slowly polishes Autotest as a general
testing framework.
-Nonetheless, compared to DejaGNU, Autotest is inadequate for interactive
-tool testing, which is probably its main limitation.
+Nonetheless, compared to address@hidden, Autotest is inadequate for
+interactive tool testing, which is probably its main limitation.
@menu
* Using an Autotest Test Suite:: Autotest and the user
@@ -13816,9 +13822,9 @@ tool testing, which is probably its main
Generating testing or validation suites using Autotest is rather easy.
The whole validation suite is held in a file to be processed through
address@hidden, itself using GNU @code{m4} under the scene, to
address@hidden, itself using @acronym{GNU} M4 under the scene, to
produce a stand-alone Bourne shell script which then gets distributed.
-Neither @command{autom4te} nor GNU @code{m4} are not needed anymore at
+Neither @command{autom4te} nor @acronym{GNU} M4 are not needed anymore at
the installer end.
@cindex test group
@@ -14034,7 +14040,7 @@ End the current test group.
@atindex DATA
Initialize an input data @var{file} with given @var{contents}. Of
course, the @var{contents} have to be properly quoted between square
-brackets to protect against included commas or spurious @code{m4}
+brackets to protect against included commas or spurious M4
expansion. The contents ought to end with an end of line.
@end defmac
@@ -14265,8 +14271,8 @@ are addressed.
@menu
* Distributing:: Distributing @command{configure} scripts
* Why GNU m4:: Why not use the standard M4?
-* Bootstrapping:: Autoconf and GNU M4 require each other?
-* Why Not Imake:: Why GNU uses @command{configure} instead of
Imake
+* Bootstrapping:: Autoconf and @acronym{GNU} M4 require each
other?
+* Why Not Imake:: Why @acronym{GNU} uses @command{configure}
instead of Imake
* Defining Directories:: Passing @code{datadir} to program
* autom4te.cache:: What is it? Can I remove it?
@end menu
@@ -14282,7 +14288,7 @@ 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 @sc{gnu} General Public License. We still encourage
+covered by the @acronym{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.
@@ -14295,10 +14301,10 @@ same terms as the rest of your package.
Consortium and is not copyrighted.
@node Why GNU m4
address@hidden Why Require GNU M4?
address@hidden Why Require @acronym{GNU} M4?
@display
-Why does Autoconf require @sc{gnu} M4?
+Why does Autoconf require @acronym{GNU} M4?
@end display
Many M4 implementations have hard-coded limitations on the size and
@@ -14314,27 +14320,27 @@ __file__
__line__
@end example
-Autoconf requires version 1.4 or above of @sc{gnu} M4 because it uses
+Autoconf requires version 1.4 or above of @acronym{GNU} M4 because it uses
frozen state files.
-Since only software maintainers need to use Autoconf, and since @sc{gnu}
+Since only software maintainers need to use Autoconf, and since @acronym{GNU}
M4 is simple to configure and install, it seems reasonable to require
address@hidden M4 to be installed also. Many maintainers of @sc{gnu} and
-other free software already have most of the @sc{gnu} utilities
address@hidden M4 to be installed also. Many maintainers of @acronym{GNU} and
+other free software already have most of the @acronym{GNU} utilities
installed, since they prefer them.
@node Bootstrapping
@section How Can I Bootstrap?
@display
-If Autoconf requires @sc{gnu} M4 and @sc{gnu} M4 has an Autoconf
+If Autoconf requires @acronym{GNU} M4 and @acronym{GNU} M4 has an Autoconf
@command{configure} script, how do I bootstrap? It seems like a chicken
and egg problem!
@end display
-This is a misunderstanding. Although @sc{gnu} M4 does come with a
+This is a misunderstanding. Although @acronym{GNU} M4 does come with a
@command{configure} script produced by Autoconf, Autoconf is not required
-in order to run the script and install @sc{gnu} M4. Autoconf is only
+in order to run the script and install @acronym{GNU} M4. Autoconf is only
required if you want to change the M4 @command{configure} script, which few
people have to do (mainly its maintainer).
@@ -14359,20 +14365,20 @@ Imake uses a common database of host spe
sense because the distribution is made as a collection of tools, by one
central authority who has control over the database.
address@hidden tools are not released this way. Each @sc{gnu} tool has a
address@hidden tools are not released this way. Each @acronym{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 @sc{gnu} suite as a collection of native tools, then the
-problems are similar. But the @sc{gnu} development tools can be
+If you view the @acronym{GNU} suite as a collection of native tools, then the
+problems are similar. But the @acronym{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 @sc{gnu} coding
+Imake templates are a form of standardization. The @acronym{GNU} coding
standards address the same issues without necessarily imposing the same
restrictions.
@end quotation
@@ -14416,7 +14422,7 @@ Also, Imake often suffers from unexpecte
@command{make} and the installer's C preprocessor. The fundamental problem
here is that the C preprocessor was designed to preprocess C programs,
not @file{Makefile}s. This is much less of a problem with Autoconf,
-which uses the general-purpose preprocessor @code{m4}, and where the
+which uses the general-purpose preprocessor M4, and where the
package's author (rather than the installer) does the preprocessing in a
standard way.
@end quotation
@@ -14465,9 +14471,9 @@ I get
@end example
@end display
-As already explained, this behavior is on purpose, mandated by the GNU
-Coding Standards, see @ref{Installation Directory Variables}. There are
-several means to acheive a similar goal:
+As already explained, this behavior is on purpose, mandated by the
address@hidden Coding Standards, see @ref{Installation Directory
+Variables}. There are several means to achieve a similar goal:
@itemize @minus
@item
@@ -14499,7 +14505,7 @@ automate this task. For instance, the m
the @href{http://www.gnu.org/software/ac-archive/, Autoconf Macro
Archive}.
-This solution does not conform to the GNU Coding Standards.
+This solution does not conform to the @acronym{GNU} Coding Standards.
@item
Note that all the previous solutions hard wire the absolute path to
@@ -14520,14 +14526,14 @@ Some macros are already available to add
What is this directory @file{autom4te.cache}? Can I safely remove it?
@end display
-In the GNU Build System, @file{configure.ac} plays a central role and is
-read by many tools: @command{autoconf} to create @file{configure},
address@hidden to create @file{config.h.in}, @command{automake} to
-create @file{Makefile.in}, @command{autoscan} to check the completeness
-of @file{configure.ac}, @command{autoreconf} to check the GNU Build
-System components that are used. To ``read @file{configure.ac}''
-actually means to compile it with M4, which can be a very long process
-for complex @file{configure.ac}.
+In the @acronym{GNU} Build System, @file{configure.ac} plays a central
+role and is read by many tools: @command{autoconf} to create
address@hidden, @command{autoheader} to create @file{config.h.in},
address@hidden to create @file{Makefile.in}, @command{autoscan} to
+check the completeness of @file{configure.ac}, @command{autoreconf} to
+check the @acronym{GNU} Build System components that are used. To
+``read @file{configure.ac}'' actually means to compile it with M4,
+which can be a very long process for complex @file{configure.ac}.
This is why all these tools, instead of running directly M4, invoke
@command{autom4te} (@pxref{autom4te Invocation}) which, while answering to
@@ -14547,13 +14553,14 @@ But it is and remains being simply a cac
Can I permanently get rid of it?
@end display
-The creation of this cache can be disabled from @file{~/.autom4te.cfg},
-see @ref{Customizing autom4te}, for more details. You should be aware
-that disabling the cache slows down the Autoconf test suite by 40%. The
-more GNU Build System components are used, the more the cache is useful;
-for instance running @samp{autoreconf -f} on the Coreutils is twice
-slower without the cache @emph{although @option{--force} implies that
-the cache is not fully exploited}, and eight times slower than without
+The creation of this cache can be disabled from
address@hidden/.autom4te.cfg}, see @ref{Customizing autom4te}, for more
+details. You should be aware that disabling the cache slows down the
+Autoconf test suite by 40%. The more @acronym{GNU} Build System
+components are used, the more the cache is useful; for instance
+running @samp{autoreconf -f} on the Coreutils is twice slower without
+the cache @emph{although @option{--force} implies that the cache is
+not fully exploited}, and eight times slower than without
@option{--force}.
@@ -14579,7 +14586,7 @@ then let there be address@hidden
@node Genesis
@section Genesis
-In June 1991 I was maintaining many of the @sc{gnu} utilities for the
+In June 1991 I was maintaining many of the @acronym{GNU} utilities for the
Free Software Foundation. As they were ported to more platforms and
more programs were added, the number of @option{-D} options that users
had to select in the @file{Makefile} (around 20) became burdensome.
@@ -14588,11 +14595,11 @@ different systems. So I wrote a little
the correct settings for the fileutils package, and released it as part
of fileutils 2.0. That @command{configure} script worked well enough that
the next month I adapted it (by hand) to create similar @command{configure}
-scripts for several other @sc{gnu} utilities packages. Brian Berliner
-also adapted one of my scripts for his @sc{cvs} revision control system.
+scripts for several other @acronym{GNU} utilities packages. Brian Berliner
+also adapted one of my scripts for his @acronym{CVS} revision control system.
Later that summer, I learned that Richard Stallman and Richard Pixley
-were developing similar scripts to use in the @sc{gnu} compiler tools;
+were developing similar scripts to use in the @acronym{GNU} compiler tools;
so I adapted my @command{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
@@ -14603,9 +14610,9 @@ adding @samp{+srcdir}, the first option
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 @sc{gnu} utilities packages to use
+the scripts. As I adapted more @acronym{GNU} utilities packages to use
@command{configure} scripts, updating them all by hand became impractical.
-Rich Murphey, the maintainer of the @sc{gnu} graphics utilities, sent me
+Rich Murphey, the maintainer of the @acronym{GNU} graphics utilities, sent me
mail saying that the @command{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
@@ -14647,7 +14654,7 @@ I considered using Perl to generate my s
scripts, but decided that 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 @sc{gnu} extensions to M4.) Also, some of my friends at the
+the @acronym{GNU} extensions to M4.) Also, some of my friends at the
University of Maryland had recently been putting M4 front ends on
several programs, including @code{tvtwm}, and I was interested in trying
out a new language.
@@ -14666,14 +14673,14 @@ the Holy Grail of portability (er, that
feedback as I encapsulated pieces of my handwritten scripts in M4 macros
and continued to add features and improve the techniques used in the
checks. Prominent among the testers were Fran@,cois Pinard, who came up
-with the idea of making an Autoconf shell script to run @code{m4}
+with the idea of making an Autoconf shell script to run M4
and check for unresolved macro calls; Richard Pixley, who suggested
running the compiler instead of searching the file system to find
include files and symbols, for more accurate results; Karl Berry, who
got Autoconf to configure @TeX{} and added the macro index to the
documentation; and Ian Lance Taylor, who added support for creating a C
header file as an alternative to putting @option{-D} options in a
address@hidden, so he could use Autoconf for his @sc{uucp} package.
address@hidden, so he could use Autoconf for his @acronym{UUCP} package.
The alpha testers cheerfully adjusted their files again and again as the
names and calling conventions of the Autoconf macros changed from
release to release. They all contributed many specific checks, great
@@ -14683,18 +14690,18 @@ ideas, and bug fixes.
@section Numbers
In July 1992, after months of alpha testing, I released Autoconf 1.0,
-and converted many @sc{gnu} packages to use it. I was surprised by how
+and converted many @acronym{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 @sc{gnu} Project (such as TCL, FSP, and Kerberos V5).
+part of the @acronym{GNU} Project (such as TCL, FSP, and Kerberos V5).
Autoconf continued to improve rapidly, as many people using the
@command{configure} scripts reported problems they encountered.
Autoconf turned out to be a good torture test for M4 implementations.
address@hidden @code{m4} started to dump core because of the length of the
-macros that Autoconf defined, and several bugs showed up in @sc{gnu}
address@hidden as well. Eventually, we realized that we needed to use some
-features that only @sc{gnu} M4 has. address@hidden @code{m4}, in
address@hidden M4 started to dump core because of the length of the
+macros that Autoconf defined, and several bugs showed up in @acronym{GNU}
+M4 as well. Eventually, we realized that we needed to use some
+features that only @acronym{GNU} M4 has. address@hidden M4, in
particular, has an impoverished set of builtin macros; the System V
version is better, but still doesn't provide everything we need.
@@ -14702,8 +14709,8 @@ More development occurred as people put
(and to uses I hadn't anticipated). Karl Berry added checks for X11.
david zuhn contributed C++ support. Fran@,cois Pinard made it diagnose
invalid arguments. Jim Blandy bravely coerced it into configuring
address@hidden Emacs, laying the groundwork for several later improvements.
-Roland McGrath got it to configure the @sc{gnu} C Library, wrote the
address@hidden Emacs, laying the groundwork for several later improvements.
+Roland McGrath got it to configure the @acronym{GNU} C Library, wrote the
@command{autoheader} script to automate the creation of C header file
templates, and added a @option{--verbose} option to @command{configure}.
Noah Friedman added the @option{--autoconf-dir} option and
@@ -14726,7 +14733,7 @@ and Ken Raeburn. These features include
@file{config.sub}, @file{config.guess}, @option{--host}, and
@option{--target}; making links to files; and running @command{configure}
scripts in subdirectories. Adding these features enabled Ken to convert
address@hidden @code{as}, and Rob Savoye to convert DejaGNU, to using
address@hidden @code{as}, and Rob Savoye to convert address@hidden, to using
Autoconf.
I added more features in response to other peoples' requests. Many
@@ -14750,7 +14757,7 @@ macros and cleaned up coding style incon
auxiliary utilities that I had developed to help convert source code
packages to use Autoconf. With the help of Fran@,cois Pinard, I made
the macros not interrupt each others' messages. (That feature revealed
-some performance bottlenecks in @sc{gnu} @code{m4}, which he hastily
+some performance bottlenecks in @acronym{GNU} 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.
- minor documentation patches for Autoconf,
Paul Eggert <=