summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--README15
-rw-r--r--doc/autoconf.texi758
-rw-r--r--doc/install.texi15
4 files changed, 433 insertions, 383 deletions
diff --git a/ChangeLog b/ChangeLog
index d963409f..97171af4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2005-06-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * README: Recommend GNU M4 1.4.3 or later.
+ * doc/autoconf.texi (Introduction): Likewise.
+ Reword to avoid some formatting glitches.
+ Use "#!/bin/sh", not "#! /bin/sh"; the space isn't needed these days.
+ Clarify explanation of HP compiler bug.
+ Redo example output tp match current CVS snapshot.
+ Use @example.org in email addresses when the examples
+ might get inadvertently cut-and-pasted into user code.
+ Remove example of autom4te usage that doesn't seem to work now.
+ Use modern AC_INIT (except when the example is meant to be
+ shown with Autoconf 2.13).
+ Update ksh info for Solaris 9 and later.
+ KB -> kB.
+ Modernize description of Automake versions a bit.
+ Don't claim a future version of Autoconf is near.
+ * doc/install.texi: Reword to avoid some formatting glitches.
+
+2005-06-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/autoconf.texi: Add [] to examples, so that the manual
+ follows its own advice about quoting better.
+ Reword to avoid some formatting glitches.
+ * doc/installt.exi: Reword to avoid some formatting glitches.
+
2005-06-06 Stepan Kasal <kasal@ucw.cz>
m4_cdr of one-member list was [[]] (one-member list containing an
@@ -23,7 +49,7 @@
* doc/autoconf.texi (Limitations of Usual Tools): Solaris' awk cannot
swallow records with more than 99 fields.
- * lib/autotest/general.m4 (AT_INIT): Use the awk builtin `split' to
+ * lib/autotest/general.m4 (AT_INIT): Use the awk builtin `split' to
parse the long line.
2005-06-04 Stepan Kasal <kasal@ucw.cz>
diff --git a/README b/README
index f63b943f..a5db7113 100644
--- a/README
+++ b/README
@@ -11,18 +11,15 @@ operating system features that the package can use, in the form of M4
macro calls.
Producing configuration scripts using Autoconf requires GNU M4 and
-Perl. You must install GNU M4 (version 1.4 or later) and Perl (5.005_03
+Perl. You must install GNU M4 (version 1.4.3 or later) and Perl (5.005_03
or later) before configuring Autoconf, so that Autoconf's configure
script can find them. The configuration scripts produced by Autoconf
are self-contained, so their users do not need to have Autoconf (or
-GNU M4, Perl etc.).
+GNU M4, Perl, etc.).
-Vanilla GNU m4 1.4 has some serious bugs, so we recommend using m4 1.4
-as patched by the standard GNU/Linux distributions. If you're
-building GNU m4 1.4 from scratch we suggest using 1.4.2 or later.
-You can get 1.4.2 here:
+You can get GNU M4 1.4.3 here:
-ftp://ftp.gnu.org/gnu/m4/m4-1.4.2.tar.gz
+ftp://ftp.gnu.org/gnu/m4/m4-1.4.3.tar.gz
The file INSTALL should be distributed with packages that use
Autoconf-generated configure scripts and Makefiles that conform to the
@@ -43,8 +40,8 @@ similarly for the other mailing lists.
-----
-Copyright (C) 1992, 1993, 1994, 1998, 2000, 2001, 2002, 2003, 2004
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1998, 2000, 2001, 2002, 2003, 2004,
+2005 Free Software Foundation, Inc.
This file is part of GNU Autoconf.
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 0457da1c..67255fa5 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -643,7 +643,7 @@ Autoconf imposes some restrictions on the names of macros used with
Autoconf requires @acronym{GNU} M4 in order to generate the scripts. It uses
features that some versions of M4, including @acronym{GNU} M4 1.3,
-do not have. You must use version 1.4 or later of @acronym{GNU} M4.
+do not have. You should use version 1.4.3 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},
@@ -654,25 +654,28 @@ Autoconf web page} for up-to-date information, details on the mailing
lists, pointers to a list of known bugs, etc.
Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
-list}.
+list}. Past suggestions are
+@uref{http://lists.gnu.org/archive/html/autoconf/, archived}.
-Bug reports should be emailed to @email{bug-autoconf@@gnu.org, the
-Autoconf Bugs mailing list}. If possible, first check that your bug is
+Mail bug reports to @email{bug-autoconf@@gnu.org, the
+Autoconf Bugs mailing list}. Past bug reports are
+@uref{http://lists.gnu.org/archive/html/bug-autoconf/, archived}.
+
+If possible, first check that your bug is
not already solved in current development versions, and that it has not
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 @acronym{CVS}; see the
+Autoconf's development tree is accessible via anonymous @acronym{CVS}; see the
@uref{http://savannah.gnu.org/projects/autoconf/, Autoconf
Summary} for details. Patches relative to the
current @acronym{CVS} version can be sent for review to the
@email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
+Past patches are
+@uref{http://lists.gnu.org/archive/html/autoconf-patches/, archived}.
-Archives of @email{bug-autoconf@@gnu.org} can be
-found in @uref{http://lists.gnu.org/archive/html/bug-autoconf/}, and
-similarly for the other mailing lists.
-
-Because of its mission, Autoconf includes only a set of often-used
+Because of its mission, the Autoconf package itself
+includes only a set of often-used
macros that have already demonstrated their usefulness. Nevertheless,
if you wish to share your macros, or find existing ones, see the
@uref{http://www.gnu.org/software/ac-archive/, @acronym{GNU} Autoconf Macro
@@ -1108,9 +1111,9 @@ argument explicit, or you may simply omit the trailing commas. The
three lines below are equivalent:
@example
-AC_CHECK_HEADERS(stdio.h, [], [], [])
-AC_CHECK_HEADERS(stdio.h,,,)
-AC_CHECK_HEADERS(stdio.h)
+AC_CHECK_HEADERS([stdio.h], [], [], [])
+AC_CHECK_HEADERS([stdio.h],,,)
+AC_CHECK_HEADERS([stdio.h])
@end example
It is best to put each macro call on its own line in
@@ -1343,7 +1346,7 @@ disable warnings falling into @var{category}
Warnings about @samp{syntax} are enabled by default, and the environment
variable @env{WARNINGS}, a comma separated list of categories, is
-honored. Passing @samp{-W @var{category}} will actually behave as if
+honored as well. Passing @samp{-W @var{category}} will actually behave as if
you had passed @samp{--warnings=syntax,$WARNINGS,@var{category}}. If
you want to disable the defaults and @env{WARNINGS}, but (for example)
enable the warnings about obsolete constructs, you would use @option{-W
@@ -1509,7 +1512,8 @@ newer than their input files (@file{configure.ac} and, if present,
Install the missing auxiliary files in the package. By default, files
are copied; this can be changed with @option{--symlink}.
-This option triggers calls to @samp{automake --add-missing},
+If deemed appropriate, this option triggers calls to
+@samp{automake --add-missing},
@samp{libtoolize}, @samp{autopoint}, etc.
@item --symlink
@@ -1565,7 +1569,7 @@ disable warnings falling into @var{category}
Warnings about @samp{syntax} are enabled by default, and the environment
variable @env{WARNINGS}, a comma separated list of categories, is
-honored. Passing @samp{-W @var{category}} will actually behave as if
+honored as well. Passing @samp{-W @var{category}} will actually behave as if
you had passed @samp{--warnings=syntax,$WARNINGS,@var{category}}. If
you want to disable the defaults and @env{WARNINGS}, but (for example)
enable the warnings about obsolete constructs, you would use @option{-W
@@ -1679,7 +1683,7 @@ earlier than @var{version}, print an error message to the standard
error output and exit with failure (exit status is 63). For example:
@example
-AC_PREREQ(@value{VERSION})
+AC_PREREQ([@value{VERSION}])
@end example
This macro is the only macro that may be used before @code{AC_INIT}, but
@@ -1712,14 +1716,14 @@ For example, this line in @file{configure.ac}:
@c The asis prevents RCS from changing the example in the manual.
@example
-AC_REVISION($@asis{Revision: 1.30 }$)
+AC_REVISION([$@asis{Revision: 1.30 }$])
@end example
@noindent
produces this in @command{configure}:
@example
-#! /bin/sh
+#!/bin/sh
# From configure.ac Revision: 1.30
@end example
@end defmac
@@ -1915,15 +1919,15 @@ should avoid
@example
@dots{} && my_foos="$my_foos fooo"
@dots{} && my_foos="$my_foos foooo"
-AC_CONFIG_FOOS($my_foos)
+AC_CONFIG_FOOS([$my_foos])
@end example
@noindent
and use this instead:
@example
-@dots{} && AC_CONFIG_FOOS(fooo)
-@dots{} && AC_CONFIG_FOOS(foooo)
+@dots{} && AC_CONFIG_FOOS([fooo])
+@dots{} && AC_CONFIG_FOOS([foooo])
@end example
The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
@@ -1931,8 +1935,8 @@ special @var{tag}s: they may have the form @samp{@var{output}} or
@samp{@var{output}:@var{inputs}}. The file @var{output} is instantiated
from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
-For instance
-@samp{AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)} asks for
+@samp{AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk)]},
+for example, asks for
the creation of @file{Makefile} that will be the expansion of the
output variables in the concatenation of @file{boiler/top.mk} and
@file{boiler/bot.mk}.
@@ -2143,7 +2147,7 @@ reference this variable in a comment at the top of each input file. For
example, an input shell script should begin like this:
@example
-#! /bin/sh
+#!/bin/sh
# @@configure_input@@
@end example
@@ -2441,7 +2445,7 @@ depend upon the current value of @code{prefix}.
A corollary is that you should not use these variables except in
Makefiles. For instance, instead of trying to evaluate @code{datadir}
in @file{configure} and hard-coding it in Makefiles using
-e.g., @samp{AC_DEFINE_UNQUOTED(DATADIR, "$datadir", [Data directory.])},
+e.g., @samp{AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])},
you should add
@samp{-DDATADIR="$(datadir)"} to your @code{CPPFLAGS}.
@@ -2618,10 +2622,15 @@ config.status: configure
(Be careful if you copy these lines directly into your Makefile, as you
will need to convert the indented lines to start with the tab character.)
-In addition, you should use @samp{AC_CONFIG_FILES([stamp-h], [echo
-timestamp > stamp-h])} so @file{config.status} will ensure that
-@file{config.h} is considered up to date. @xref{Output}, for more
-information about @code{AC_OUTPUT}.
+In addition, you should use
+
+@example
+AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
+@end example
+
+@noindent
+so @file{config.status} will ensure that @file{config.h} is considered up to
+date. @xref{Output}, for more information about @code{AC_OUTPUT}.
@xref{config.status Invocation}, for more examples of handling
configuration-related dependencies.
@@ -2991,8 +3000,8 @@ macros; see @ref{Configuration Actions}.
For example, this call:
@example
-AC_CONFIG_LINKS(host.h:config/$machine.h
- object.h:config/$obj_format.h)
+AC_CONFIG_LINKS([host.h:config/$machine.h
+ object.h:config/$obj_format.h])
@end example
@noindent
@@ -3035,7 +3044,7 @@ be a literal, i.e., please do not use:
if test "$package_foo_enabled" = yes; then
$my_subdirs="$my_subdirs foo"
fi
-AC_CONFIG_SUBDIRS($my_subdirs)
+AC_CONFIG_SUBDIRS([$my_subdirs])
@end example
@noindent
@@ -3045,7 +3054,7 @@ write:
@example
if test "$package_foo_enabled" = yes; then
- AC_CONFIG_SUBDIRS(foo)
+ AC_CONFIG_SUBDIRS([foo])
fi
@end example
@@ -3054,7 +3063,7 @@ subdirectory is optional, write:
@example
if test -d $srcdir/foo; then
- AC_CONFIG_SUBDIRS(foo)
+ AC_CONFIG_SUBDIRS([foo])
fi
@end example
@@ -3196,7 +3205,7 @@ that are not alphanumeric are converted to underscores.
For instance,
@example
-AC_CHECK_TYPES(struct $Expensive*)
+AC_CHECK_TYPES([struct $Expensive*])
@end example
@noindent
@@ -3416,8 +3425,8 @@ is suggested that you use this Autoconf snippet:
AC_PROG_LEX
if test "$LEX" != flex; then
LEX="$SHELL $missing_dir/missing flex"
- AC_SUBST(LEX_OUTPUT_ROOT, lex.yy)
- AC_SUBST(LEXLIB, '')
+ AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
+ AC_SUBST([LEXLIB], [''])
fi
@end example
@@ -3550,7 +3559,7 @@ with a prefix of the host type as determined by
For example, if the user runs @samp{configure --host=i386-gnu}, then
this call:
@example
-AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL([RANLIB], [ranlib], [:])
@end example
@noindent
sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
@@ -3688,8 +3697,8 @@ in some common cases. Many standard functions like @code{gethostbyname}
appear the standard C library on some hosts, and in special libraries
like @code{nsl} on other hosts. On some hosts the special libraries
contain variant implementations that you may not want to use. These
-days it is normally better to use @code{AC_SEARCH_LIBS(gethostbyname,
-nsl)} instead of @code{AC_CHECK_LIB(nsl, gethostbyname)}.
+days it is normally better to use @code{AC_SEARCH_LIBS([gethostbyname],
+[nsl])} instead of @code{AC_CHECK_LIB([nsl], [gethostbyname])}.
@end defmac
@@ -3774,7 +3783,7 @@ argument that is outside the range of @code{double}.
To work around this porting mess, you can use code like the following.
-@example
+@smallexample
#include <math.h>
#ifndef isnan
@@ -3796,7 +3805,7 @@ static inline int isinf_f (float x) @{ return isnan (x - x); @}
static inline int isinf_d (double x) @{ return isnan (x - x); @}
static inline int isinf_ld (long double x) @{ return isnan (x - x); @}
#endif
-@end example
+@end smallexample
Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
compilers that lack the @code{inline} keyword. Some optimizing
@@ -4169,7 +4178,7 @@ sure to set the @code{AC_LIBOBJ} replacement directory properly (see
If the system has the @code{getloadavg} function, define
@code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
-needed to get that function. Also add @code{GETLOADAVG_LIBS} to
+necessary to get that function. Also add @code{GETLOADAVG_LIBS} to
@code{LIBS}. Otherwise, require an @code{AC_LIBOBJ} replacement for
@samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
possibly define several other C preprocessor macros and output
@@ -4538,8 +4547,8 @@ about selecting the language for checks.)
@defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found})
@acindex{CHECK_FUNCS}
@cvindex HAVE_@var{function}
-For each @var{function} in the blank-or-newline-separated argument list,
-define @code{HAVE_@var{function}} (in all capitals) if it is available.
+For each @var{function} enumerated in the blank-or-newline-separated argument
+list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
If @var{action-if-found} is given, it is additional shell code to
execute when one of the functions is found. You can give it a value of
@samp{break} to break out of the loop on the first match. If
@@ -4582,9 +4591,9 @@ a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
@code{"foo"} or @code{"bar"}, you should do:
@example
-AC_LIBSOURCE(foo.c)
-AC_LIBSOURCE(bar.c)
-AC_LIBOBJ($foo_or_bar)
+AC_LIBSOURCE([foo.c])
+AC_LIBSOURCE([bar.c])
+AC_LIBOBJ([$foo_or_bar])
@end example
@noindent
@@ -4603,7 +4612,7 @@ comma-separated M4 list. Thus, the above example might be rewritten:
@example
AC_LIBSOURCES([foo.c, bar.c])
-AC_LIBOBJ($foo_or_bar)
+AC_LIBOBJ([$foo_or_bar])
@end example
@end defmac
@@ -4613,7 +4622,7 @@ Specify that @code{AC_LIBOBJ} replacement files are to be found in
@var{directory}, a name relative to the top level of the
source tree. The replacement directory defaults to @file{.}, the top
level directory, and the most typical value is @file{lib}, corresponding
-to @samp{AC_CONFIG_LIBOBJ_DIR(lib)}.
+to @samp{AC_CONFIG_LIBOBJ_DIR([lib])}.
@command{configure} might need to know the replacement directory for the
following reasons: (i) some checks use the replacement files, (ii) some
@@ -4972,7 +4981,7 @@ If you put the following in @file{configure.ac}:
@example
AC_HEADER_STDC
-AC_CHECK_FUNCS(strchr memcpy)
+AC_CHECK_FUNCS([strchr memcpy])
@end example
@noindent
@@ -5003,7 +5012,7 @@ 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}
for example, put it in @file{memchr.c} and use
-@samp{AC_REPLACE_FUNCS(memchr)}.
+@samp{AC_REPLACE_FUNCS([memchr])}.
@end defmac
@defmac AC_HEADER_SYS_WAIT
@@ -5069,7 +5078,7 @@ include both files. This macro is useful in programs that use, for
example, @code{struct timeval} as well as
@code{struct tm}. It is best used in conjunction with
@code{HAVE_SYS_TIME_H}, which can be checked for using
-@code{AC_CHECK_HEADERS(sys/time.h)}.
+@code{AC_CHECK_HEADERS([sys/time.h])}.
@example
@group
@@ -5223,7 +5232,7 @@ execute when one of the function declarations is needed, otherwise
This macro uses an m4 list as first argument:
@example
-AC_CHECK_DECLS(strdup)
+AC_CHECK_DECLS([strdup])
AC_CHECK_DECLS([strlen])
AC_CHECK_DECLS([malloc, realloc, calloc, free])
@end example
@@ -5352,7 +5361,7 @@ If no @var{includes} are specified, the default includes are used
(@pxref{Default Includes}).
@example
-AC_CHECK_MEMBER(struct passwd.pw_gecos,,
+AC_CHECK_MEMBER([struct passwd.pw_gecos], [],
[AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
[#include <pwd.h>])
@end example
@@ -5423,19 +5432,19 @@ Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
@defmac AC_TYPE_MODE_T
@acindex{TYPE_MODE_T}
@cvindex mode_t
-Equivalent to @samp{AC_CHECK_TYPE(mode_t, int)}.
+Equivalent to @samp{AC_CHECK_TYPE([mode_t], [int])}.
@end defmac
@defmac AC_TYPE_OFF_T
@acindex{TYPE_OFF_T}
@cvindex off_t
-Equivalent to @samp{AC_CHECK_TYPE(off_t, long int)}.
+Equivalent to @samp{AC_CHECK_TYPE([off_t], [long int])}.
@end defmac
@defmac AC_TYPE_PID_T
@acindex{TYPE_PID_T}
@cvindex pid_t
-Equivalent to @samp{AC_CHECK_TYPE(pid_t, int)}.
+Equivalent to @samp{AC_CHECK_TYPE([pid_t], [int])}.
@end defmac
@defmac AC_TYPE_SIGNAL
@@ -5462,7 +5471,7 @@ hup_handler ()
@defmac AC_TYPE_SIZE_T
@acindex{TYPE_SIZE_T}
@cvindex size_t
-Equivalent to @samp{AC_CHECK_TYPE(size_t, unsigned int)}.
+Equivalent to @samp{AC_CHECK_TYPE([size_t], [unsigned int])}.
@end defmac
@defmac AC_TYPE_UID_T
@@ -5497,7 +5506,7 @@ it is executed when one of the types is not found.
This macro uses m4 lists:
@example
-AC_CHECK_TYPES(ptrdiff_t)
+AC_CHECK_TYPES([ptrdiff_t])
AC_CHECK_TYPES([unsigned long long int, uintmax_t])
@end example
@@ -5564,14 +5573,10 @@ main (void)
@noindent
To our knowledge, there is a single compiler that does not support this
trick: the HP C compilers (the real one, not only the ``bundled'') on
-HP-UX 11.00:
-
-@example
-$ @kbd{cc -c -Ae +O2 +Onolimit conftest.c}
-cc: "conftest.c": error 1879: Variable-length arrays cannot \
- have static storage.
-@end example
-
+HP-UX 11.00. They incorrectly reject the above program with the diagnostic
+``Variable-length arrays cannot have static storage.''
+This bug comes from HP compilers' mishandling of @code{sizeof (int)},
+not from the @code{? 1 : -1}, and
Autoconf works around this problem by casting @code{sizeof (int)} to
@code{long int} before comparing it.
@end table
@@ -5593,7 +5598,7 @@ argument was used when cross-compiling.
For example, the call
@example
-AC_CHECK_SIZEOF(int *)
+AC_CHECK_SIZEOF([int *])
@end example
@noindent
@@ -5632,7 +5637,7 @@ being checked for, since they can easily be worked around.
@table @asis
@item Don't use lines containing solitary backslashes
They tickle a bug in the HP-UX C compiler (checked on HP-UX 10.20,
-11.00, and 11i). Running the compiler on the following source,
+11.00, and 11i). When given the following source:
@example
#ifdef __STDC__
@@ -5651,14 +5656,8 @@ char apostrophe = '\\
@end example
@noindent
-yields
-
-@example
-@error{}cpp: "foo.c", line 13: error 4048: Non-terminating comment at end of file.
-@error{}cpp: "foo.c", line 13: error 4033: Missing #endif at end of file.
-@end example
-
-@noindent
+the compiler incorrectly fails with the diagnostics ``Non-terminating
+comment at end of file'' and ``Missing @samp{#endif} at end of file.''
Removing the lines with solitary backslashes solves the problem.
@item Don't compile several files at once if output matters to you
@@ -5701,7 +5700,7 @@ like the default order, then you could invoke @code{AC_PROG_CC} like
this:
@example
-AC_PROG_CC(cl egcs gcc cc)
+AC_PROG_CC([cl egcs gcc cc])
@end example
If the C compiler is not in @acronym{ANSI} mode by default, try to add an
@@ -6009,7 +6008,7 @@ didn't like the default order, then you could invoke @code{AC_PROG_CXX}
like this:
@example
-AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc)
+AC_PROG_CXX([cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc])
@end example
If using the @acronym{GNU} C++ compiler, set shell variable @code{GXX} to
@@ -6072,7 +6071,7 @@ example, if you didn't like the default order, then you could invoke
@code{AC_PROG_F77} like this:
@example
-AC_PROG_F77(fl32 f77 fort77 xlf g77 f90 xlf90)
+AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90])
@end example
If using @code{g77} (the @acronym{GNU} Fortran 77 compiler), then
@@ -6128,7 +6127,7 @@ The following macros check for Fortran compiler characteristics.
To check for characteristics not listed here, use
@code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
@code{AC_RUN_IFELSE} (@pxref{Run Time}), making sure to first set the
-current language to Fortran 77 or Fortran via @code{AC_LANG(Fortran 77)}
+current language to Fortran 77 or Fortran via @code{AC_LANG([Fortran 77])}
or @code{AC_LANG(Fortran)} (@pxref{Language Choice}).
@@ -6436,7 +6435,7 @@ any found to the output variable @code{X_PRE_LIBS}.
@defmac AC_SYS_INTERPRETER
@acindex{SYS_INTERPRETER}
Check whether the system supports starting scripts with a line of the
-form @samp{#! /bin/csh} to select the interpreter to use for the script.
+form @samp{#!/bin/sh} to select the interpreter to use for the script.
After running this macro, shell code in @file{configure.ac} can check
the shell variable @code{interpval}; it will be set to @samp{yes}
if the system supports @samp{#!}, @samp{no} if not.
@@ -6634,10 +6633,10 @@ is a good idea to specify it when it's known (which should be the
case@dots{}), since Autoconf will detect inconsistencies.
@example
-AC_LANG_PUSH(Fortran 77)
+AC_LANG_PUSH([Fortran 77])
# Perform some tests on Fortran 77.
# @dots{}
-AC_LANG_POP(Fortran 77)
+AC_LANG_POP([Fortran 77])
@end example
@end defmac
@@ -6802,7 +6801,7 @@ all the @code{AC_DEFINE} performed so far.
For instance executing (observe the double quotation!):
@example
-AC_INIT(Autoconf Documentation, @value{VERSION}, bug-autoconf@@gnu.org)
+AC_INIT([Hello], [1.0], [bug-hello@@example.org])
AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
[Greetings string.])
AC_LANG_CONFTEST(
@@ -6814,18 +6813,15 @@ gcc -E -dD -o - conftest.c
results in:
@example
+@dots{}
# 1 "conftest.c"
-# 1169 "configure"
-# 1 "confdefs.h" 1
-
-#define PACKAGE_NAME "Autoconf Documentation"
-#define PACKAGE_TARNAME "autoconf-documentation"
-#define PACKAGE_VERSION "@value{VERSION}"
-#define PACKAGE_STRING "Autoconf Documentation @value{VERSION}"
-#define PACKAGE_BUGREPORT "bug-autoconf@@gnu.org"
+#define PACKAGE_NAME "Hello"
+#define PACKAGE_TARNAME "hello"
+#define PACKAGE_VERSION "1.0"
+#define PACKAGE_STRING "Hello 1.0"
+#define PACKAGE_BUGREPORT "bug-hello@@example.org"
#define HELLO_WORLD "Hello, World\n"
-# 1170 "configure" 2
const char hw[] = "Hello, World\n";
@end example
@@ -6841,7 +6837,7 @@ available.
For instance:
@example
-AC_INIT(Autoconf Documentation, @value{VERSION}, bug-autoconf@@gnu.org)
+AC_INIT([Hello], [1.0], [bug-hello@@example.org])
AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
[Greetings string.])
AC_LANG_CONFTEST(
@@ -6854,18 +6850,15 @@ gcc -E -dD -o - conftest.c
results in:
@example
+@dots{}
# 1 "conftest.c"
-# 1169 "configure"
-# 1 "confdefs.h" 1
-
-#define PACKAGE_NAME "Autoconf Documentation"
-#define PACKAGE_TARNAME "autoconf-documentation"
-#define PACKAGE_VERSION "@value{VERSION}"
-#define PACKAGE_STRING "Autoconf Documentation @value{VERSION}"
-#define PACKAGE_BUGREPORT "bug-autoconf@@gnu.org"
+#define PACKAGE_NAME "Hello"
+#define PACKAGE_TARNAME "hello"
+#define PACKAGE_VERSION "1.0"
+#define PACKAGE_STRING "Hello 1.0"
+#define PACKAGE_BUGREPORT "bug-hello@@example.org"
#define HELLO_WORLD "Hello, World\n"
-# 1170 "configure" 2
const char hw[] = "Hello, World\n";
int
@@ -6934,7 +6927,7 @@ It is customary to report unexpected failures with
For instance:
@example
-AC_INIT(Autoconf Documentation, @value{VERSION}, bug-autoconf@@gnu.org)
+AC_INIT([Hello], [1.0], [bug-hello@@example.org])
AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
[Greetings string.])
AC_PREPROC_IFELSE(
@@ -6949,14 +6942,14 @@ results in:
@example
checking for gcc... gcc
-checking for C compiler default output... a.out
+checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
-checking for gcc option to accept ANSI C... none needed
+checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
OK
@end example
@@ -7158,8 +7151,8 @@ information is available on the
@item Tru64
@cindex Tru64
-The @uref{http://h30097.www3.hp.com/docs/,
-documentation of several versions of Tru64} is available in different
+@uref{http://h30097.www3.hp.com/docs/,
+Documentation of several versions of Tru64} is available in different
formats.
@item Unix version 7
@@ -7193,20 +7186,20 @@ fstype=no
# The order of these tests is important.
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statvfs.h>
#include <sys/fstyp.h>]])],
- [AC_DEFINE(FSTYPE_STATVFS, 1,
+ [AC_DEFINE([FSTYPE_STATVFS], [1],
[Define if statvfs exists.])
fstype=SVR4])
if test $fstype = no; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
#include <sys/fstyp.h>]])],
- [AC_DEFINE(FSTYPE_USG_STATFS, 1,
+ [AC_DEFINE([FSTYPE_USG_STATFS], [1],
[Define if USG statfs.])
fstype=SVR3])
fi
if test $fstype = no; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
#include <sys/vmount.h>]])]),
- [AC_DEFINE(FSTYPE_AIX_STATFS, 1,
+ [AC_DEFINE([FSTYPE_AIX_STATFS], [1],
[Define if AIX statfs.])
fstype=AIX])
fi
@@ -7249,10 +7242,10 @@ already defined a certain C preprocessor symbol, test the value of the
appropriate cache variable, as in this example:
@example
-AC_CHECK_FUNC(vprintf, [AC_DEFINE(HAVE_VPRINTF, 1,
+AC_CHECK_FUNC([vprintf], [AC_DEFINE([HAVE_VPRINTF], [1],
[Define if vprintf exists.])])
if test "$ac_cv_func_vprintf" != yes; then
- AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT, 1,
+ AC_CHECK_FUNC([_doprnt], [AC_DEFINE([HAVE_DOPRNT], [1],
[Define if _doprnt exists.])])
fi
@end example
@@ -7278,7 +7271,7 @@ The following example defines the C preprocessor variable
@code{EQUATION} to be the string constant @samp{"$a > $b"}:
@example
-AC_DEFINE(EQUATION, "$a > $b",
+AC_DEFINE([EQUATION], ["$a > $b"],
[Equation string.])
@end example
@@ -7299,11 +7292,11 @@ special meaning. Use this macro instead of @code{AC_DEFINE} when
@var{variable} or @var{value} is a shell variable. Examples:
@example
-AC_DEFINE_UNQUOTED(config_machfile, "$machfile",
+AC_DEFINE_UNQUOTED([config_machfile], ["$machfile"],
[Configuration machine file.])
-AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups,
+AC_DEFINE_UNQUOTED([GETGROUPS_T], [$ac_cv_type_getgroups],
[getgroups return type.])
-AC_DEFINE_UNQUOTED($ac_tr_hdr, 1,
+AC_DEFINE_UNQUOTED([$ac_tr_hdr], [1],
[Translated header name.])
@end example
@end defmac
@@ -7315,16 +7308,16 @@ in the resulting @command{configure} script. Use either blanks or
newlines. That is, do this:
@example
-AC_CHECK_HEADER(elf.h,
- [AC_DEFINE(SVR4, 1, [System V Release 4]) LIBS="$LIBS -lelf"])
+AC_CHECK_HEADER([elf.h],
+ [AC_DEFINE([SVR4], [1], [System V Release 4]) LIBS="$LIBS -lelf"])
@end example
@noindent
or this:
@example
-AC_CHECK_HEADER(elf.h,
- [AC_DEFINE(SVR4, 1, [System V Release 4])
+AC_CHECK_HEADER([elf.h],
+ [AC_DEFINE([SVR4], [1], [System V Release 4])
LIBS="$LIBS -lelf"])
@end example
@@ -7332,8 +7325,8 @@ AC_CHECK_HEADER(elf.h,
instead of this:
@example
-AC_CHECK_HEADER(elf.h,
- [AC_DEFINE(SVR4, 1, [System V Release 4]); LIBS="$LIBS -lelf"])
+AC_CHECK_HEADER([elf.h],
+ [AC_DEFINE([SVR4], [1], [System V Release 4]); LIBS="$LIBS -lelf"])
@end example
@node Setting Output Variables
@@ -7530,7 +7523,7 @@ AC_DEFUN([AC_SHELL_TRUE],
[ac_cv_shell_true_works=no
true && ac_cv_shell_true_works=yes
if test $ac_cv_shell_true_works = yes; then
- AC_DEFINE([TRUE_WORKS], 1
+ AC_DEFINE([TRUE_WORKS], [1],
[Define if `true(1)' works properly.])
fi])
])
@@ -7549,7 +7542,7 @@ AC_DEFUN([AC_SHELL_TRUE],
[ac_cv_shell_true_works=no
true && ac_cv_shell_true_works=yes])
if test $ac_cv_shell_true_works = yes; then
- AC_DEFINE([TRUE_WORKS], 1
+ AC_DEFINE([TRUE_WORKS], [1],
[Define if `true(1)' works properly.])
fi
])
@@ -7621,8 +7614,8 @@ tests run on one system so they can be shared between configure scripts
and configure runs. It is not useful on other systems. If its contents
are invalid for some reason, the user may delete or edit it.
-By default, @command{configure} uses no cache file (technically, it uses
-@option{--cache-file=/dev/null}), to avoid problems caused by accidental
+By default, @command{configure} uses no cache file,
+to avoid problems caused by accidental
use of stale cache files.
To enable caching, @command{configure} accepts @option{--config-cache} (or
@@ -7689,16 +7682,16 @@ AC_CACHE_SAVE
@group
# Checks for libraries.
-AC_CHECK_LIB(nsl, gethostbyname)
-AC_CHECK_LIB(socket, connect)
+AC_CHECK_LIB([nsl], [gethostbyname])
+AC_CHECK_LIB([socket], [connect])
@r{ @dots{} more lib checks @dots{}}
AC_CACHE_SAVE
@end group
@group
# Might abort@dots{}
-AM_PATH_GTK(1.0.2,, [AC_MSG_ERROR([GTK not in path])])
-AM_PATH_GTKMM(0.9.5,, [AC_MSG_ERROR([GTK not in path])])
+AM_PATH_GTK([1.0.2], [], [AC_MSG_ERROR([GTK not in path])])
+AM_PATH_GTKMM([0.9.5], [], [AC_MSG_ERROR([GTK not in path])])
@end group
@r{ @dots{} AC_OUTPUT, etc. @dots{}}
@end example
@@ -8448,43 +8441,14 @@ autom4te --warnings=syntax,$WARNINGS,@var{category}
@end example
@noindent
-If you want to disable @command{autom4te}'s defaults and
-@env{WARNINGS}, but (for example) enable the warnings about obsolete
+For example, if you want to disable @command{autom4te}'s defaults and
+@env{WARNINGS}, but enable the warnings about obsolete
constructs, you would use @option{-W none,obsolete}.
@cindex Back trace
@cindex Macro invocation stack
@command{autom4te} displays a back trace for errors, but not for
-warnings; if you want them, just pass @option{-W error}. For instance,
-on this @file{configure.ac}:
-
-@example
-AC_DEFUN([INNER],
-[AC_RUN_IFELSE([AC_LANG_PROGRAM([exit (0)])])])
-
-AC_DEFUN([OUTER],
-[INNER])
-
-AC_INIT
-OUTER
-@end example
-
-@noindent
-you get:
-
-@example
-$ @kbd{autom4te -l autoconf -Wcross}
-configure.ac:8: warning: AC_RUN_IFELSE called without default \
-to allow cross compiling
-$ @kbd{autom4te -l autoconf -Wcross,error -f}
-configure.ac:8: error: AC_RUN_IFELSE called without default \
-to allow cross compiling
-acgeneral.m4:3044: AC_RUN_IFELSE is expanded from...
-configure.ac:2: INNER is expanded from...
-configure.ac:5: OUTER is expanded from...
-configure.ac:8: the top level
-@end example
-
+warnings; if you want them, just pass @option{-W error}.
@item --melt
@itemx -m
@@ -8689,14 +8653,26 @@ the language-specific files before any third-party macros.
@cindex @file{autom4te.cfg}
As an example, if Autoconf is installed in its default location,
-@file{/usr/local}, running @samp{autom4te -l m4sugar foo.m4} is
-strictly equivalent to running @samp{autom4te --prepend-include
-/usr/local/share/autoconf m4sugar/m4sugar.m4f --warnings syntax foo.m4}.
-Recursive expansion applies: running @samp{autom4te -l m4sh foo.m4}
+@file{/usr/local}, the command @samp{autom4te -l m4sugar foo.m4} is
+strictly equivalent to the command:
+
+@example
+autom4te --prepend-include /usr/local/share/autoconf \
+ m4sugar/m4sugar.m4f --warnings syntax foo.m4
+@end example
+
+@noindent
+Recursive expansion applies here: the command @samp{autom4te -l m4sh foo.m4}
is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
-foo.m4}, i.e., @samp{autom4te --prepend-include /usr/local/share/autoconf
-m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4}. The definition
-of the languages is stored in @file{autom4te.cfg}.
+foo.m4}, i.e.:
+
+@example
+autom4te --prepend-include /usr/local/share/autoconf \
+ m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4
+@end example
+
+@noindent
+The definition of the languages is stored in @file{autom4te.cfg}.
@node Customizing autom4te
@subsection Customizing @command{autom4te}
@@ -8945,7 +8921,7 @@ details about what this returns and why it is more portable than the
@defmac AS_IF (@var{test}, @ovar{RUN-IF-TRUE}, @ovar{RUN-IF-FALSE})
@asindex{IF}
-Run shell code TEST. If TEST exits with a zero status then run shell code
+Run shell code TEST@. If TEST exits with a zero status then run shell code
RUN-IF-TRUE, else run shell code RUN-IF-FALSE, with simplifications if either
RUN-IF-TRUE or RUN-IF-FALSE is empty.
@end defmac
@@ -9082,7 +9058,8 @@ the prototype. For example:
# AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
# --------------------------------------
m4_define([AC_MSG_ERROR],
-[@{ _AC_ECHO([configure: error: $1], 2); exit m4_default([$2], 1); @}])
+ [@{ AS_MESSAGE([error: $1], [2])
+ exit m4_default([$2], [1]); @}])
@end example
Comments about the macro should be left in the header comment. Most
@@ -9283,7 +9260,7 @@ fi])
with this @file{configure.ac}
@example
-AC_INIT
+AC_INIT([Dance Manager], [1.0], [bug-dance@@example.org])
RESERVE_DANCE_FLOOR
if test "$dance_floor" = occupied; then
AC_MSG_ERROR([cannot pick up here, let's move])
@@ -9646,20 +9623,14 @@ advantage of features that were added after Unix version 7, circa
You should not use shell functions, aliases, negated character
classes, or other features that are not found in all Bourne-compatible
shells; restrict yourself to the lowest common denominator. Even
-@code{unset} is not supported by all shells! Also, include a space
-after the exclamation point in interpreter specifications, like this:
-
-@example
-#! /usr/bin/perl
-@end example
+@code{unset} is not supported by all shells!
-@noindent
-If you omit the space before the absolute file name,
-then 4.2@acronym{BSD} 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
+Some old systems have quite
+small limits on the length of the @samp{#!} line; for instance, 32
bytes (not including the newline) on SunOS 4.
+A few ancient 4.2@acronym{BSD} based systems (such as Dynix circa 1984)
+required a single space between the @samp{#!} and the @samp{/}, but
+these are no longer of practical concern.
The set of external programs you should run in a @command{configure} script
is fairly small. @xref{Utilities in Makefiles,, Utilities in
@@ -9766,29 +9737,25 @@ called @samp{ksh88} and @samp{ksh93}, named after the years of initial
release. It is usually called @command{ksh}, but is called @command{sh}
on some hosts if you set your path appropriately.
-@itemize @minus
-@item
Solaris systems have three variants:
@prindex @command{/usr/bin/ksh} on Solaris
-@command{/usr/bin/ksh} is @samp{ksh88},
+@command{/usr/bin/ksh} is @samp{ksh88}; it is
+standard on Solaris 2.0 and later.
@prindex @command{/usr/xpg4/bin/sh} on Solaris
@command{/usr/xpg4/bin/sh} is a Posix-compliant variant of
-@samp{ksh88}, and
+@samp{ksh88}; it is standard on Solaris 9 and later.
@prindex @command{/usr/dt/bin/dtksh} on Solaris
-@command{/usr/dt/bin/dtksh} is @samp{ksh93}. @command{/usr/bin/ksh}
-is standard on Solaris; the other variants are parts of optional
+@command{/usr/dt/bin/dtksh} is @samp{ksh93}.
+Variants that are not standard may be parts of optional
packages. There is no extra charge for these packages, but they are
not part of a minimal OS install and therefore some installations may
not have it.
-@item
Starting with Tru64 Version 4.0, the Korn shell @command{/usr/bin/ksh}
is also available as @command{/usr/bin/posix/sh}. If the environment
variable @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
the standard shell conform to Posix.
-@end itemize
-
@item Pdksh
@prindex @samp{pdksh}
A public-domain clone of the Korn shell called @command{pdksh} is widely
@@ -10870,7 +10837,8 @@ is therefore not portable in practice. Typically it is easy to rewrite
such code, e.g.:
@example
-cmp file1 file2 >/dev/null 2>&1 || echo files differ or trouble
+cmp file1 file2 >/dev/null 2>&1 ||
+ echo files differ or trouble
@end example
More generally, one can always rewrite @samp{! @var{command}} as:
@@ -11050,7 +11018,7 @@ two variables coexist: the environment variable and the shell
variable. The following code demonstrates this failure:
@example
-#! /bin/sh
+#!/bin/sh
echo $FOO
FOO=bar
echo $FOO
@@ -11517,7 +11485,7 @@ or use a simple test to reject such AWK@.
expressions and literal strings in the program to 399.
Some @command{awk}, such as Solaris 9's native one, have a limit of 99
-fields in a record. You may be able to circumvent this problem by using
+fields in a record. You may be able to circumvent this problem by using
the builtin function @code{split}.
@item @command{cat}
@@ -12028,30 +11996,25 @@ but it is not always atomic: when doing @samp{mv new existing}, there's
a critical section where neither the old nor the new version of
@file{existing} actually exists.
-Be aware that moving files from @file{/tmp} can sometimes cause
+On some systems moving files from @file{/tmp} can sometimes cause
undesirable (but perfectly valid) warnings, even if you created these
-files. On some systems, creating the file in @file{/tmp} is setting a
-guid @code{wheel} which you may not be part of. So the file is copied,
-and then the @code{chgrp} fails:
+files. This is because @file{/tmp} belongs to a group that ordinary
+users are not members of, and files created in @file{/tmp} inherit
+@file{/tmp}'s group. When the file is copied, @command{mv} issues
+a diagnostic without failing:
-@example
+@smallexample
$ @kbd{touch /tmp/foo}
$ @kbd{mv /tmp/foo .}
-@error{}mv: ./foo: set owner/group (was: 3830/0): Operation not permitted
+@error{}mv: ./foo: set owner/group (was: 100/0): Operation not permitted
$ @kbd{echo $?}
0
$ @kbd{ls foo}
foo
-@end example
+@end smallexample
@noindent
-This behavior conforms to Posix:
-
-@quotation
-If the duplication of the file characteristics fails for any reason, mv
-shall write a diagnostic message to standard error, but this failure
-shall not cause mv to modify its exit status.''
-@end quotation
+This annoying behavior conforms to Posix, unfortunately.
Moving directories across mount points is not portable, use @command{cp}
and @command{rm}.
@@ -12371,7 +12334,7 @@ line with @code{#}, not only the first.
OSF/1 4.0d's @command{make} cannot process @file{Makefile}s with lines
longer than 38912 bytes. It exits with a @code{Line too long}
diagnostic. A later version, Tru64 5.1's @command{make} has been
-reported to crash with lines around 20KB.
+reported to crash with lines around 20 kB.
@item @code{make macro=value} and sub-@command{make}s.
@@ -12417,7 +12380,7 @@ invocations, the @code{foo} macro will be overridden in
sub-@code{make}s as expected.
This syntax (@code{foo=bar make -e}) is portable only when used
-outside a @file{Makefile}, for instance from a script or from the
+outside of a @file{Makefile}, for instance from a script or from the
command line. When run inside a @command{make} rule, GNU
@command{make} 3.80 and prior versions forget to propagate the
@code{-e} option to sub-@command{make}s.
@@ -12593,8 +12556,8 @@ whole thing manually. For instance, using the following pattern:
@example
VPATH = ../pkg/src
-foo.c: ifoo.c
- cp `test -f ifoo.c || echo ../pkg/src/`ifoo.c foo.c
+f.c: if.c
+ cp `test -f if.c || echo $(VPATH)/`if.c f.c
@end example
@item Automatic rule rewriting
@@ -12609,123 +12572,140 @@ For instance
@example
VPATH = ../pkg/src
-foo.c: ifoo.c
- cp ifoo.c foo.c
+f.c: if.c
+ cp if.c f.c
@end example
@noindent
-would execute @code{cp ../pkg/src/ifoo.c foo.c} if @file{ifoo.c} was
+would execute @code{cp ../pkg/src/if.c f.c} if @file{if.c} was
found in @file{../pkg/src}. That sounds great.
However, for the sake of other @command{make} implementations, we can't
rely on this, and we have to search @code{VPATH} manually:
-@example
+@smallexample
VPATH = ../pkg/src
-foo.c: ifoo.c
- cp `test -f ifoo.c || echo ../pkg/src/`ifoo.c foo.c
-@end example
+f.c: if.c
+ cp `test -f if.c || echo $(VPATH)/`if.c f.c
+@end smallexample
@noindent
However the "prerequisite rewriting" still applies here. So if
-@file{ifoo.c} is in @file{../pkg/src}, SunOS @command{make} and OSF1/Tru64
+@file{if.c} is in @file{../pkg/src}, SunOS @command{make} and OSF1/Tru64
@command{make} will execute
-@example
-@code{cp `test -f ../pkg/src/ifoo.c || echo ../pkg/src/`ifoo.c foo.c}
-@end example
+@smallexample
+@code{cp `test -f ../pkg/src/if.c || echo ../pkg/src/`if.c f.c}
+@end smallexample
@noindent
which reduces to
@example
-cp ifoo.c foo.c
+cp if.c f.c
@end example
@noindent
and thus fails. Oops.
-One workaround is to make sure that ifoo.c never appears as a plain word
+One workaround is to make sure that @file{if.c} never appears as a plain word
in the rule. For instance these three rules would be safe.
-@example
+@smallexample
VPATH = ../pkg/src
-foo.c: ifoo.c
- cp `test -f ./ifoo.c || echo ../pkg/src/`ifoo.c foo.c
-foo2.c: ifoo2.c
- cp `test -f 'ifoo2.c' || echo ../pkg/src/`ifoo2.c foo2.c
-foo3.c: ifoo3.c
- cp `test -f "ifoo3.c" || echo ../pkg/src/`ifoo3.c foo3.c
-@end example
+f.c: if.c
+ cp `test -f ./if.c || echo $(VPATH)/`if.c f.c
+g.c: ig.c
+ cp `test -f 'ig.c' || echo $(VPATH)/`ig.c g.c
+h.c: ih.c
+ cp `test -f "ih.c" || echo $(VPATH)/`ih.c h.c
+@end smallexample
Things get worse when your prerequisites are in a macro.
@example
VPATH = ../pkg/src
-HEADERS = foo.h foo2.h foo3.h
+HEADERS = f.h g.h h.h
install-HEADERS: $(HEADERS)
for i in $(HEADERS); do \
- $(INSTALL) -m 644 `test -f $$i || echo ../pkg/src/`$$i \
+ $(INSTALL) -m 644 \
+ `test -f $$i || echo $(VPATH)/`$$i \
$(DESTDIR)$(includedir)/$$i; \
done
@end example
The above @code{install-HEADERS} rule is not SunOS-proof because @code{for
-i in $(HEADERS);} will be expanded as @code{for i in foo.h foo2.h foo3.h;}
-where @code{foo.h} and @code{foo2.h} are plain words and are hence
+i in $(HEADERS);} will be expanded as @code{for i in f.h g.h h.h;}
+where @code{f.h} and @code{g.h} are plain words and are hence
subject to @code{VPATH} adjustments.
If the three files are in @file{../pkg/src}, the rule is run as:
@example
-for i in ../pkg/src/foo.h ../pkg/src/foo2.h foo3.h; do \
- install -m 644 `test -f $i || echo ../pkg/src/`$i \
+for i in ../pkg/src/f.h ../pkg/src/g.h h.h; do \
+ install -m 644 \
+ `test -f $i || echo ../pkg/src/`$i \
/usr/local/include/$i; \
done
@end example
where the two first @command{install} calls will fail. For instance,
-consider the @code{foo.h} installation:
+consider the @code{f.h} installation:
@example
-install -m 644 `test -f ../pkg/src/foo.h || echo ../pkg/src/`../pkg/src/foo.h \
- /usr/local/include/../pkg/src/foo.h;
+install -m 644 \
+ `test -f ../pkg/src/f.h || \
+ echo ../pkg/src/ \
+ `../pkg/src/f.h \
+ /usr/local/include/../pkg/src/f.h;
@end example
@noindent
It reduces to:
@example
-install -m 644 ../pkg/src/foo.h /usr/local/include/../pkg/src/foo.h;
+install -m 644 \
+ ../pkg/src/f.h \
+ /usr/local/include/../pkg/src/f.h;
@end example
Note that the manual @code{VPATH} search did not cause any problems here;
-however this command installs @file{foo.h} in an incorrect directory.
+however this command installs @file{f.h} in an incorrect directory.
Trying to quote @code{$(HEADERS)} in some way, as we did for
@code{foo.c} a few @file{Makefile}s ago, does not help:
@example
install-HEADERS: $(HEADERS)
- headers='$(HEADERS)'; for i in $$headers; do \
- $(INSTALL) -m 644 `test -f $$i || echo ../pkg/src/`$$i \
+ headers='$(HEADERS)'; \
+ for i in $$headers; do \
+ $(INSTALL) -m 644 \
+ `test -f $$i || echo $(VPATH)/`$$i \
$(DESTDIR)$(includedir)/$$i; \
done
@end example
-Indeed, @code{headers='$(HEADERS)'} expands to @code{headers='foo.h
-foo2.h foo3.h'} where @code{foo2.h} is still a plain word. (Aside: the
-@code{headers='$(HEADERS)'; for i in $$headers;} idiom is a good
+Now, @code{headers='$(HEADERS)'} macroexpands to:
+
+@example
+headers='f.h g.h h.h'
+@end example
+
+@noindent
+but @code{g.h} is still a plain word. (As an aside, the idiom
+@code{headers='$(HEADERS)'; for i in $$headers;} is a good
idea if @code{$(HEADERS)} can be empty, because some shells diagnose a
syntax error on @code{for i in;}.)
One workaround is to strip this unwanted @file{../pkg/src/} prefix manually:
@example
VPATH = ../pkg/src
-HEADERS = foo.h foo2.h foo3.h
+HEADERS = f.h g.h h.h
install-HEADERS: $(HEADERS)
- headers='$(HEADERS)'; for i in $$headers; do \
- i=`expr "$$i" : '../pkg/src/\(.*\)'`;
- $(INSTALL) -m 644 `test -f $$i || echo ../pkg/src/`$$i \
+ headers='$(HEADERS)'; \
+ for i in $$headers; do \
+ i=`expr "$$i" : '$(VPATH)/\(.*\)'`;
+ $(INSTALL) -m 644 \
+ `test -f $$i || echo $(VPATH)/`$$i \
$(DESTDIR)$(includedir)/$$i; \
done
@end example
@@ -12733,11 +12713,11 @@ install-HEADERS: $(HEADERS)
Automake does something similar. However the above hack works only if
the files listed in @code{HEADERS} are in the current directory or a
subdirectory; they should not be in an enclosing directory. If we had
-@code{HEADERS = ../foo.h}, the above fragment would fail in a VPATH
+@code{HEADERS = ../f.h}, the above fragment would fail in a VPATH
build with OSF1/Tru64 @command{make}. The reason is that not only does
OSF1/Tru64 @command{make} rewrite dependencies, but it also simplifies
-them. Hence @code{../foo.h} will become @code{../pkg/foo.h} instead of
-@code{../pkg/src/../foo.h}. This obviously defeats any attempt to strip
+them. Hence @code{../f.h} will become @code{../pkg/f.h} instead of
+@code{../pkg/src/../f.h}. This obviously defeats any attempt to strip
a leading @file{../pkg/src/} component.
The following example makes the behavior of OSF1/Tru64 @command{make}
@@ -12759,16 +12739,16 @@ Dependency @file{../foo} was found in @file{sub/../foo}, but OSF1/Tru64
directory does not even exist, this just means that the simplification
occurred before the file was checked for.)
-For the records here is how SunOS @command{make} behaves on this
+For the record here is how SunOS @command{make} behaves on this
very same example.
-@example
+@smallexample
% make
make: Fatal error: Don't know how to make target `../foo'
% mkdir sub
% make
echo sub/../foo
sub/../foo
-@end example
+@end smallexample
@item OSF/Tru64 @command{make} creates prerequisite directories magically
@@ -13239,7 +13219,7 @@ case $host in
i?86-*-*) CYCLE_OBJ=rdtsc.o ;;
*) CYCLE_OBJ= ;;
esac
-AC_SUBST(CYCLE_OBJ)
+AC_SUBST([CYCLE_OBJ])
@end example
@code{AC_CONFIG_LINKS} (@pxref{Configuration Links}) is another good way
@@ -13249,9 +13229,9 @@ so some run-time capability checks may be necessary too.
@example
case $host in
- alpha*-*-*) AC_CONFIG_LINKS(dither.c:alpha/dither.c) ;;
- powerpc*-*-*) AC_CONFIG_LINKS(dither.c:powerpc/dither.c) ;;
- *-*-*) AC_CONFIG_LINKS(dither.c:generic/dither.c) ;;
+ alpha*-*-*) AC_CONFIG_LINKS([dither.c:alpha/dither.c]) ;;
+ powerpc*-*-*) AC_CONFIG_LINKS([dither.c:powerpc/dither.c]) ;;
+ *-*-*) AC_CONFIG_LINKS([dither.c:generic/dither.c]) ;;
esac
@end example
@@ -13397,20 +13377,22 @@ on the system.
@c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
@example
-AC_ARG_WITH(readline,
- [AS_HELP_STRING(--with-readline,
+AC_ARG_WITH([readline],
+ [AS_HELP_STRING([--with-readline],
[support fancy command line editing @@<:@@default=check@@:>@@])],
[],
- with_readline=check)
+ [with_readline=check])
LIBREADLINE=
AS_IF([test "x$with_readline" != xno],
- [AC_CHECK_LIB(readline, main,
- [AC_SUBST(LIBREADLINE, "-lreadline -lncurses")
- AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have libreadline])
+ [AC_CHECK_LIB([readline], [main],
+ [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
+ AC_DEFINE([HAVE_LIBREADLINE], [1],
+ [Define if you have libreadline])
],
[if test "x$with_readline" != xcheck; then
- AC_MSG_FAILURE([--with-readline was given, but test for readline failed])
+ AC_MSG_FAILURE(
+ [--with-readline was given, but test for readline failed])
fi
], -lncurses)])
@end example
@@ -13421,20 +13403,22 @@ experimental and not well tested, and is therefore disabled by default.
@c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
@example
-AC_ARG_WITH(readline,
- [AS_HELP_STRING(--with-readline,
+AC_ARG_WITH([readline],
+ [AS_HELP_STRING([--with-readline],
[enable experimental support for readline])],
[],
- with_readline=no)
+ [with_readline=no])
LIBREADLINE=
AS_IF([test "x$with_readline" != xno],
- [AC_CHECK_LIB(readline, main,
- [AC_SUBST(LIBREADLINE, "-lreadline -lncurses")
- AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have libreadline])
+ [AC_CHECK_LIB([readline], [main],
+ [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
+ AC_DEFINE([HAVE_LIBREADLINE], [1],
+ [Define if you have libreadline])
],
- [AC_MSG_FAILURE([--with-readline was given, but test for readline failed])],
- -lncurses)])
+ [AC_MSG_FAILURE(
+ [--with-readline was given, but test for readline failed])],
+ [-lncurses])])
@end example
The last example shows how to use @code{AC_ARG_WITH} to give the user the
@@ -13443,20 +13427,22 @@ an important feature and that it should be enabled by default.
@c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
@example
-AC_ARG_WITH(readline,
- [AS_HELP_STRING(--without-readline,
+AC_ARG_WITH([readline],
+ [AS_HELP_STRING([--without-readline],
[disable support for readline])],
[],
- with_readline=yes)
+ [with_readline=yes])
LIBREADLINE=
AS_IF([test "x$with_readline" != xno],
- [AC_CHECK_LIB(readline, main,
- [AC_SUBST(LIBREADLINE, "-lreadline -lncurses")
- AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have libreadline])
+ [AC_CHECK_LIB([readline], [main],
+ [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
+ AC_DEFINE([HAVE_LIBREADLINE], [1],
+ [Define if you have libreadline])
],
- [AC_MSG_FAILURE([test for readline failed, use --without-readline if you want to force readline support off])],
- -lncurses)])
+ [AC_MSG_FAILURE(
+ [readline test failed (--without-readline to disable)])],
+ [-lncurses])])
@end example
These three examples can be easily adapted to the case where
@@ -13565,8 +13551,8 @@ Expands into an help string that looks pretty when the user executes
Options}). The following example will make this clearer.
@example
-AC_ARG_WITH(foo,
- [AS_HELP_STRING(--with-foo,
+AC_ARG_WITH([foo],
+ [AS_HELP_STRING([--with-foo],
[use foo (default is no)])],
[ac_cv_use_foo=$withval],
[ac_cv_use_foo=no])
@@ -14232,10 +14218,10 @@ builtin type @var{default}, e.g., @samp{short int} or @samp{unsigned int}.
This macro is equivalent to:
@example
-AC_CHECK_TYPE([@var{type}],,
- [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
- [Define to `@var{default}' if
- <sys/types.h> does not define.])])
+AC_CHECK_TYPE([@var{type}], [],
+ [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
+ [Define to `@var{default}'
+ if <sys/types.h> does not define.])])
@end example
In order to keep backward compatibility, the two versions of
@@ -14325,7 +14311,7 @@ not to use this macro.
Same as:
@example
-AC_CHECK_DECLS([sys_siglist],,,
+AC_CHECK_DECLS([sys_siglist], [], [],
[#include <signal.h>
/* NetBSD declares sys_siglist in unistd.h. */
#if HAVE_UNISTD_H
@@ -14365,7 +14351,7 @@ If on DYNIX/ptx, add @option{-lseq} to output variable
@code{LIBS}. This macro used to be defined as
@example
-AC_CHECK_LIB(seq, getmntent, LIBS="-lseq $LIBS")
+AC_CHECK_LIB([seq], [getmntent], [LIBS="-lseq $LIBS"])
@end example
@noindent
@@ -14503,7 +14489,7 @@ of the password and group functions, use @samp{AC_CHECK_LIB(sun,
getpwnam)}. Up to Autoconf 2.13, it used to be
@example
-AC_CHECK_LIB(sun, getmntent, LIBS="-lsun $LIBS")
+AC_CHECK_LIB([sun], [getmntent], [LIBS="-lsun $LIBS"])
@end example
@noindent
@@ -14511,23 +14497,23 @@ now it is defined as
@example
AC_FUNC_GETMNTENT
-AC_CHECK_LIB(sun, getpwnam)
+AC_CHECK_LIB([sun], [getpwnam])
@end example
@end defmac
@defmac AC_LANG_C
@acindex{LANG_C}
-Same as @samp{AC_LANG(C)}.
+Same as @samp{AC_LANG([C])}.
@end defmac
@defmac AC_LANG_CPLUSPLUS
@acindex{LANG_CPLUSPLUS}
-Same as @samp{AC_LANG(C++)}.
+Same as @samp{AC_LANG([C++])}.
@end defmac
@defmac AC_LANG_FORTRAN77
@acindex{LANG_FORTRAN77}
-Same as @samp{AC_LANG(Fortran 77)}.
+Same as @samp{AC_LANG([Fortran 77])}.
@end defmac
@defmac AC_LANG_RESTORE
@@ -14557,8 +14543,8 @@ AC_LINK_FILES(config/$machine.h config/$obj_format.h,
is:
@example
-AC_CONFIG_LINKS(host.h:config/$machine.h
- object.h:config/$obj_format.h)
+AC_CONFIG_LINKS([host.h:config/$machine.h
+ object.h:config/$obj_format.h])
@end example
@end defmac
@@ -14594,7 +14580,7 @@ Use the generic macro @samp{AC_CHECK_SIZEOF([long int])} instead.
@cvindex NEED_MEMORY_H
Used to define @code{NEED_MEMORY_H} if the @code{mem} functions were
defined in @file{memory.h}. Today it is equivalent to
-@samp{AC_CHECK_HEADERS(memory.h)}. Adjust your code to depend upon
+@samp{AC_CHECK_HEADERS([memory.h])}. Adjust your code to depend upon
@code{HAVE_MEMORY_H}, not @code{NEED_MEMORY_H}; see @ref{Standard
Symbols}.
@end defmac
@@ -14771,7 +14757,7 @@ If on SCO Unix, add @option{-lintl} to output variable @code{LIBS}. This
macro used to do this:
@example
-AC_CHECK_LIB(intl, strftime, LIBS="-lintl $LIBS")
+AC_CHECK_LIB([intl], [strftime], [LIBS="-lintl $LIBS"])
@end example
@noindent
@@ -14872,9 +14858,18 @@ issue.
@defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
@acindex{TRY_COMPILE}
-Same as @samp{AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@var{includes}]],
-[[@var{function-body}]])], [@var{action-if-true}],
-[@var{action-if-false}])} (@pxref{Running the Compiler}).
+Same as:
+
+@example
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[@var{includes}]],
+ [[@var{function-body}]])],
+ [@var{action-if-true}],
+ [@var{action-if-false}])
+@end example
+
+@noindent
+@xref{Running the Compiler}.
This macro double quotes both @var{includes} and @var{function-body}.
@@ -14887,18 +14882,35 @@ and compilation flags are determined by the current language
@defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
@acindex{TRY_CPP}
-Same as @samp{AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@var{input}]])],
-[@var{action-if-true}], [@var{action-if-false}])} (@pxref{Running the
-Preprocessor}).
+Same as:
+
+@example
+AC_PREPROC_IFELSE(
+ [AC_LANG_SOURCE([[@var{input}]])],
+ [@var{action-if-true}],
+ [@var{action-if-false}])
+@end example
+
+@noindent
+@xref{Running the Preprocessor}.
This macro double quotes the @var{input}.
@end defmac
@defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
@acindex{TRY_LINK}
-Same as @samp{AC_LINK_IFELSE([AC_LANG_PROGRAM([[@var{includes}]],
-[[@var{function-body}]])], [@var{action-if-true}],
-[@var{action-if-false}])} (@pxref{Running the Compiler}).
+Same as:
+
+@example
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[@var{includes}]],
+ [[@var{function-body}]])],
+ [@var{action-if-true}],
+ [@var{action-if-false}])
+@end example
+
+@noindent
+@xref{Running the Compiler}.
This macro double quotes both @var{includes} and @var{function-body}.
@@ -14928,11 +14940,19 @@ This macro is equivalent to
@defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
@acindex{TRY_RUN}
-Same as @samp{AC_RUN_IFELSE([AC_LANG_SOURCE([[@var{program}]],
-[@var{action-if-true}], [@var{action-if-false}],
-[@var{action-if-cross-compiling}])} (@pxref{Run Time}).
-@end defmac
+Same as:
+@example
+AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[@var{program}]])],
+ [@var{action-if-true}],
+ [@var{action-if-false}],
+ [@var{action-if-cross-compiling}])
+@end example
+
+@noindent
+@xref{Run Time}).
+@end defmac
@defmac AC_UID_T
@acindex{UID_T}
@@ -14941,7 +14961,7 @@ Same as @samp{AC_RUN_IFELSE([AC_LANG_SOURCE([[@var{program}]],
@defmac AC_UNISTD_H
@acindex{UNISTD_H}
-Same as @samp{AC_CHECK_HEADERS(unistd.h)}.
+Same as @samp{AC_CHECK_HEADERS([unistd.h])}.
@end defmac
@defmac AC_USG
@@ -15005,7 +15025,7 @@ running @sc{xenix} on which you should not depend:
@example
AC_MSG_CHECKING([for Xenix])
-AC_EGREP_CPP(yes,
+AC_EGREP_CPP([yes],
[#if defined M_XENIX && !defined M_UNIX
yes
#endif],
@@ -15155,11 +15175,11 @@ esac
Here is a way to write it for version 2:
@example
-AC_CHECK_FUNCS(syslog)
+AC_CHECK_FUNCS([syslog])
if test $ac_cv_func_syslog = no; then
# syslog is not in the default libraries. See if it's in some other.
for lib in bsd socket inet; do
- AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG)
+ AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG])
LIBS="$LIBS -l$lib"; break])
done
fi
@@ -15247,7 +15267,7 @@ quoted:
@example
AC_INIT
AC_CHECK_HEADERS(foo.h,,
-AC_MSG_ERROR(cannot find foo.h, bailing out))
+ AC_MSG_ERROR(cannot find foo.h, bailing out))
AC_OUTPUT
@end example
@@ -15276,9 +15296,9 @@ The message needs to be quoted, and the @code{AC_MSG_ERROR} invocation
too!
@example
-AC_INIT
-AC_CHECK_HEADERS(foo.h,,
- [AC_MSG_ERROR([cannot find foo.h, bailing out])])
+AC_INIT([Example], [1.0], [bug-example@@example.org])
+AC_CHECK_HEADERS([foo.h], [],
+ [AC_MSG_ERROR([cannot find foo.h, bailing out])])
AC_OUTPUT
@end example
@@ -15310,13 +15330,15 @@ $
@cindex undefined macro
@cindex @code{_m4_divert_diversion}
-Because Autoconf has been dormant for years, Automake provided
-Autoconf-like macros for a while. Autoconf 2.50 now provides better
+While Autoconf was relatively dormant in the late 1990s, Automake
+provided Autoconf-like macros for a while. Starting with Autoconf 2.50
+in 2001, Autoconf provided
versions of these macros, integrated in the @code{AC_} namespace,
instead of @code{AM_}. But in order to ease the upgrading via
@command{autoupdate}, bindings to such @code{AM_} macros are provided.
-Unfortunately Automake did not quote the names of these macros!
+Unfortunately older versions of Automake (e.g., Automake 1.4)
+did not quote the names of these macros.
Therefore, when @command{m4} finds something like
@samp{AC_DEFUN(AM_TYPE_PTRDIFF_T, @dots{})} in @file{aclocal.m4},
@code{AM_TYPE_PTRDIFF_T} is
@@ -15326,32 +15348,32 @@ Fortunately Autoconf catches pre-@code{AC_INIT} expansions, and will
complain, in its own words:
@example
-$ @kbd{cat configure.in}
-AC_INIT
+$ @kbd{cat configure.ac}
+AC_INIT([Example], [1.0], [bug-example@@example.org])
AM_TYPE_PTRDIFF_T
$ @kbd{aclocal-1.4}
$ @kbd{autoconf}
-./aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
-actypes.m4:289: AM_TYPE_PTRDIFF_T is expanded from...
-./aclocal.m4:17: the top level
+aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
+aclocal.m4:17: the top level
+autom4te: m4 failed with exit status: 1
$
@end example
-Future versions of Automake will simply no longer define most of these
+Modern versions of Automake no longer define most of these
macros, and will properly quote the names of the remaining macros.
-But you don't have to wait for it to happen to do the right thing right
-now: do not depend upon macros from Automake as it is simply not its job
+If you must use an old Automake, do not depend upon macros from Automake
+as it is simply not its job
to provide macros (but the one it requires itself):
@example
-$ @kbd{cat configure.in}
-AC_INIT
+$ @kbd{cat configure.ac}
+AC_INIT([Example], [1.0], [bug-example@@example.org])
AM_TYPE_PTRDIFF_T
$ @kbd{rm aclocal.m4}
$ @kbd{autoupdate}
-autoupdate: `configure.in' is updated
-$ @kbd{cat configure.in}
-AC_INIT
+autoupdate: `configure.ac' is updated
+$ @kbd{cat configure.ac}
+AC_INIT([Example], [1.0], [bug-example@@example.org])
AC_CHECK_TYPES([ptrdiff_t])
$ @kbd{aclocal-1.4}
$ @kbd{autoconf}
@@ -15525,7 +15547,7 @@ suffixes are mapped to @samp{.lo}. People used to run snippets such as:
# the ANSI2KNR-filtering rules.
LIBOBJS=`echo "$LIBOBJS" | sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/\.lo/g'`
-AC_SUBST(LTLIBOBJS)
+AC_SUBST([LTLIBOBJS])
@end example
@noindent
@@ -15543,7 +15565,7 @@ LIB@@&t@@OBJS=`echo "$LIB@@&t@@OBJS" |
sed 's,\.[[^.]]* ,$U&,g;s,\.[[^.]]*$,$U&,'`
LTLIBOBJS=`echo "$LIB@@&t@@OBJS" |
sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`
-AC_SUBST(LTLIBOBJS)
+AC_SUBST([LTLIBOBJS])
@end example
@sp 1
@@ -16146,7 +16168,8 @@ check-local: atconfig atlocal $(TESTSUITE)
$(SHELL) $(TESTSUITE) $(TESTSUITEFLAGS)
installcheck-local: atconfig atlocal $(TESTSUITE)
- $(SHELL) $(TESTSUITE) AUTOTEST_PATH="$(bindir)" $(TESTSUITEFLAGS)
+ $(SHELL) $(TESTSUITE) AUTOTEST_PATH="$(bindir)" \
+ $(TESTSUITEFLAGS)
AUTOTEST = $(AUTOM4TE) --language=autotest
$(TESTSUITE): $(srcdir)/testsuite.at
@@ -16240,8 +16263,7 @@ __file__
__line__
@end example
-Autoconf requires version 1.4 or above of @acronym{GNU} M4 because it uses
-frozen state files.
+Autoconf requires version 1.4.3 or later of @acronym{GNU} M4.
Since only software maintainers need to use Autoconf, and since @acronym{GNU}
M4 is simple to configure and install, it seems reasonable to require
@@ -16381,8 +16403,8 @@ similar. If I use
@example
AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
- [Define to the read-only architecture-independent
- data directory.])
+ [Define to the read-only architecture-independent
+ data directory.])
@end example
@noindent
@@ -16502,31 +16524,32 @@ elsewhere.
As of Autoconf 2.56 both checks are performed, and @code{configure}
complains loudly if the compiler and the preprocessor do not agree.
For the time being the result used is that of the preprocessor, to give
-maintainers time to adjust their @file{configure.ac}, but in the near
+maintainers time to adjust their @file{configure.ac}, but in the
future, only the compiler will be considered.
Consider the following example:
-@example
+@smallexample
$ @kbd{cat number.h}
typedef int number;
$ @kbd{cat pi.h}
const number pi = 3;
$ @kbd{cat configure.ac}
-AC_INIT
-AC_CHECK_HEADERS(pi.h)
+AC_INIT([Example], [1.0], [bug-example@@example.org])
+AC_CHECK_HEADERS([pi.h])
$ @kbd{autoconf -Wall}
$ @kbd{./configure}
checking for gcc... gcc
-checking for C compiler default output... a.out
+checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
-checking for gcc option to accept ANSI C... none needed
+checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
+checking for grep that handles long lines and -e... grep
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
@@ -16541,13 +16564,16 @@ checking for unistd.h... yes
checking pi.h usability... no
checking pi.h presence... yes
configure: WARNING: pi.h: present but cannot be compiled
-configure: WARNING: pi.h: check for missing prerequisite headers?
+configure: WARNING: pi.h: check for missing prerequisite headers?
+configure: WARNING: pi.h: see the Autoconf documentation
+configure: WARNING: pi.h: section "Present But Cannot Be Compiled"
configure: WARNING: pi.h: proceeding with the preprocessor's result
-configure: WARNING: ## ------------------------------------ ##
-configure: WARNING: ## Report this to bug-autoconf@@gnu.org. ##
-configure: WARNING: ## ------------------------------------ ##
+configure: WARNING: pi.h: in the future, the compiler will take precedence
+configure: WARNING: ## -------------------------------------- ##
+configure: WARNING: ## Report this to bug-example@@example.org ##
+configure: WARNING: ## -------------------------------------- ##
checking for pi.h... yes
-@end example
+@end smallexample
@noindent
The proper way the handle this case is using the fourth argument
@@ -16555,8 +16581,8 @@ The proper way the handle this case is using the fourth argument
@example
$ @kbd{cat configure.ac}
-AC_INIT
-AC_CHECK_HEADERS(number.h pi.h,,,
+AC_INIT([Example], [1.0], [bug-example@@example.org])
+AC_CHECK_HEADERS([number.h pi.h], [], [],
[[#if HAVE_NUMBER_H
# include <number.h>
#endif
diff --git a/doc/install.texi b/doc/install.texi
index 5b54a0f2..6d0fed74 100644
--- a/doc/install.texi
+++ b/doc/install.texi
@@ -120,16 +120,17 @@ before reconfiguring for another architecture.
@node Installation Names
@section Installation Names
-By default, @samp{make install} will install the package's files in
-@file{/usr/local/bin}, @file{/usr/local/man}, etc. You can specify an
+By default, @samp{make install} installs the package's commands under
+@file{/usr/local/bin}, include files under @file{/usr/local/include}, etc.
+You can specify an
installation prefix other than @file{/usr/local} by giving
@command{configure} the option @option{--prefix=@var{prefix}}.
You can specify separate installation prefixes for architecture-specific
-files and architecture-independent files. If you give
-@command{configure} the option @option{--exec-prefix=@var{prefix}}, the
-package will use @var{prefix} as the prefix for installing programs and
-libraries. Documentation and other data files will still use the
+files and architecture-independent files. If you pass the option
+@option{--exec-prefix=@var{prefix}} to @command{configure}, the
+package uses @var{prefix} as the prefix for installing programs and
+libraries. Documentation and other data files still use the
regular prefix.
In addition, if you use an unusual directory layout you can give options
@@ -187,7 +188,7 @@ If @file{config.sub} isn't included in this package, then this package
doesn't need to know the machine type.
If you are @emph{building} compiler tools for cross-compiling, you
-should use the @option{--target=@var{type}} option to select the type of
+should use the option @option{--target=@var{type}} to select the type of
system they will produce code for.
If you want to @emph{use} a cross compiler, that generates code for a