* NEWS: AC_C_TYPE_LONG_DOUBLE is now obsolete.
New macros AC_CHECK_DECLS_ONCE, AC_CHECK_FUNCS_ONCE,
AC_CHECK_HEADERS_ONCE, AC_FUNC_STRTOLD, AC_HEADER_ASSERT,
AC_STRUCT_DIRENT_D_INO, AC_STRUCT_DIRENT_D_TYPE,
AC_TYPE_LONG_DOUBLE, AC_TYPE_LONG_DOUBLE_WIDER, AC_TYPE_INT8_T,
AC_TYPE_INT16_T, AC_TYPE_INT32_T, AC_TYPE_INT64_T,
AC_TYPE_INTMAX_T, AC_TYPE_INTPTR_T, AC_TYPE_LONG_LONG_INT,
AC_TYPE_UINT8_T, AC_TYPE_UINT16_T, AC_TYPE_UINT32_T,
AC_TYPE_UINT64_T, AC_TYPE_UINTMAX_T, AC_TYPE_UINTPTR_T,
AC_TYPE_UNSIGNED_LONG_LONG_INT, AC_USE_SYSTEM_EXTENSIONS.
The manual mentions Gnulib more prominently.
* doc/autoconf.texi (Gnulib): New node.
(Pointers): Add Gnulib URL.
(Particular Functions): Alphabetize. Add AC_FUNC_STRTOLD.
(Generic Functions): Add AC_CHECK_FUNCS_ONCE. Refer to new
Gnulib section.
(Particular Headers): Add AC_HEADER_ASSERT. For stdbool.h,
suggest a #define rather than a typedef for _Bool, and mention
Gnulib rather than trying to substitute stdbool code.
(Generic Headers): Add AC_CHECK_HEADERS_ONCE.
(Generic Declarations): Add AC_CHECK_DECLS_ONCE.
(Particular Structures): Add AC_STRUCT_DIRENT_D_INO,
AC_STRUCT_DIRENT_D_TYPE.
(Particular Types): Mention stdint.h and inttypes.h as standard
headers too.
Add AC_TYPE_INT8_T, AC_TYPE_INT16_T, AC_TYPE_INT32_T, AC_TYPE_INT64_T,
AC_TYPE_INTMAX_T, AC_TYPE_INTPTR_T, AC_TYPE_LONG_DOUBLE,
AC_TYPE_LONG_DOUBLE_WIDER, AC_TYPE_LONG_LONG_INT, AC_TYPE_UINT8_T,
AC_TYPE_UINT16_T, AC_TYPE_UINT32_T, AC_TYPE_UINT64_T, AC_TYPE_UINTMAX_T,
AC_TYPE_UINTPTR_T, AC_TYPE_UNSIGNED_LONG_LONG_INT.
(C Compiler): Move AC_C_LONG_DOUBLE to ...
(Obsolete Macros): here. Under AC_LONG_DOUBLE, mention
AC_TYPE_LONG_DOUBLE or AC_TYPE_LONG_DOUBLE_WIDER instead.
(Posix Variants): Add AC_USE_SYSTEM_EXTENSIONS.
(Coding Style). Don't mention m4_expand_once.
* lib/autoconf/c.m4 (AC_C_LONG_DOUBLE): Implement via
AC_TYPE_LONG_DOUBLE_WIDER. Now obsolete.
* lib/autoconf/functions.m4 (_AH_CHECK_FUNCS): New macro.
(AC_CHECK_FUNCS): Use it.
(AC_CHECK_FUNCS_ONCE, AC_FUNC_STRTOLD): New macros.
(AC_FUNC_WAIT3): "the Open Group standards" -> "POSIX".
* lib/autoconf/general.m4 (AC_CHECK_DECLS_ONCE): New macro.
* lib/autoconf/headers.m4 (AC_CHECK_HEADERS_ONCE): New macro.
(AC_HEADER_ASSERT): New macro.
(AC_HEADER_STDBOOL): Don't assume "#error" works.
Catch a bug in IBM AIX xlc compiler version 6.0.0.0.
Catch a bug in an HP-UX C compiler.
* lib/autoconf/specific.m4 (AC_USE_SYSTEM_EXTENSIONS): New macro.
* lib/autoconf/types.m4 (AC_TYPE_INTMAX_T. AC_TYPE_UINTMAX_T):
(AC_TYPE_INTPTR_T, AC_TYPE_UINTPTR_T. AC_TYPE_LONG_DOUBLE):
(AC_TYPE_LONG_DOUBLE_WIDER, AC_C_LONG_DOUBLE, AC_TYPE_LONG_LONG_INT):
(AC_TYPE_UNSIGNED_LONG_LONG_INT, _AC_TYPE_INT, _AC_TYPE_UNSIGNED_INT):
(_AC_STRUCT_DIRENT, AC_STRUCT_DIRENT_D_INO, AC_STRUCT_DIRENT_D_TYPE):
New macros.
+2006-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Import macros from gnulib (often changing their name).
+
+ * NEWS: AC_C_TYPE_LONG_DOUBLE is now obsolete.
+ New macros AC_CHECK_DECLS_ONCE, AC_CHECK_FUNCS_ONCE,
+ AC_CHECK_HEADERS_ONCE, AC_FUNC_STRTOLD, AC_HEADER_ASSERT,
+ AC_STRUCT_DIRENT_D_INO, AC_STRUCT_DIRENT_D_TYPE,
+ AC_TYPE_LONG_DOUBLE, AC_TYPE_LONG_DOUBLE_WIDER, AC_TYPE_INT8_T,
+ AC_TYPE_INT16_T, AC_TYPE_INT32_T, AC_TYPE_INT64_T,
+ AC_TYPE_INTMAX_T, AC_TYPE_INTPTR_T, AC_TYPE_LONG_LONG_INT,
+ AC_TYPE_UINT8_T, AC_TYPE_UINT16_T, AC_TYPE_UINT32_T,
+ AC_TYPE_UINT64_T, AC_TYPE_UINTMAX_T, AC_TYPE_UINTPTR_T,
+ AC_TYPE_UNSIGNED_LONG_LONG_INT, AC_USE_SYSTEM_EXTENSIONS.
+ The manual mentions Gnulib more prominently.
+ * doc/autoconf.texi (Gnulib): New node.
+ (Pointers): Add Gnulib URL.
+ (Particular Functions): Alphabetize. Add AC_FUNC_STRTOLD.
+ (Generic Functions): Add AC_CHECK_FUNCS_ONCE. Refer to new
+ Gnulib section.
+ (Particular Headers): Add AC_HEADER_ASSERT. For stdbool.h,
+ suggest a #define rather than a typedef for _Bool, and mention
+ Gnulib rather than trying to substitute stdbool code.
+ (Generic Headers): Add AC_CHECK_HEADERS_ONCE.
+ (Generic Declarations): Add AC_CHECK_DECLS_ONCE.
+ (Particular Structures): Add AC_STRUCT_DIRENT_D_INO,
+ AC_STRUCT_DIRENT_D_TYPE.
+ (Particular Types): Mention stdint.h and inttypes.h as standard
+ headers too.
+ Add AC_TYPE_INT8_T, AC_TYPE_INT16_T, AC_TYPE_INT32_T, AC_TYPE_INT64_T,
+ AC_TYPE_INTMAX_T, AC_TYPE_INTPTR_T, AC_TYPE_LONG_DOUBLE,
+ AC_TYPE_LONG_DOUBLE_WIDER, AC_TYPE_LONG_LONG_INT, AC_TYPE_UINT8_T,
+ AC_TYPE_UINT16_T, AC_TYPE_UINT32_T, AC_TYPE_UINT64_T, AC_TYPE_UINTMAX_T,
+ AC_TYPE_UINTPTR_T, AC_TYPE_UNSIGNED_LONG_LONG_INT.
+ (C Compiler): Move AC_C_LONG_DOUBLE to ...
+ (Obsolete Macros): here. Under AC_LONG_DOUBLE, mention
+ AC_TYPE_LONG_DOUBLE or AC_TYPE_LONG_DOUBLE_WIDER instead.
+ (Posix Variants): Add AC_USE_SYSTEM_EXTENSIONS.
+ (Coding Style). Don't mention m4_expand_once.
+ * lib/autoconf/c.m4 (AC_C_LONG_DOUBLE): Implement via
+ AC_TYPE_LONG_DOUBLE_WIDER. Now obsolete.
+ * lib/autoconf/functions.m4 (_AH_CHECK_FUNCS): New macro.
+ (AC_CHECK_FUNCS): Use it.
+ (AC_CHECK_FUNCS_ONCE, AC_FUNC_STRTOLD): New macros.
+ (AC_FUNC_WAIT3): "the Open Group standards" -> "POSIX".
+ * lib/autoconf/general.m4 (AC_CHECK_DECLS_ONCE): New macro.
+ * lib/autoconf/headers.m4 (AC_CHECK_HEADERS_ONCE): New macro.
+ (AC_HEADER_ASSERT): New macro.
+ (AC_HEADER_STDBOOL): Don't assume "#error" works.
+ Catch a bug in IBM AIX xlc compiler version 6.0.0.0.
+ Catch a bug in an HP-UX C compiler.
+ * lib/autoconf/specific.m4 (AC_USE_SYSTEM_EXTENSIONS): New macro.
+ * lib/autoconf/types.m4 (AC_TYPE_INTMAX_T. AC_TYPE_UINTMAX_T):
+ (AC_TYPE_INTPTR_T, AC_TYPE_UINTPTR_T. AC_TYPE_LONG_DOUBLE):
+ (AC_TYPE_LONG_DOUBLE_WIDER, AC_C_LONG_DOUBLE, AC_TYPE_LONG_LONG_INT):
+ (AC_TYPE_UNSIGNED_LONG_LONG_INT, _AC_TYPE_INT, _AC_TYPE_UNSIGNED_INT):
+ (_AC_STRUCT_DIRENT, AC_STRUCT_DIRENT_D_INO, AC_STRUCT_DIRENT_D_TYPE):
+ New macros.
+
+ * tests/mktests.sh (ac_exclude_list): Fix some typos in
+ recent changes: awk wants /^(a|b)$/, not /^a|b$/.
+
2006-04-08 Stepan Kasal <kasal@ucw.cz>
* lib/autoconf/general.m4 (_AC_INIT_PREPARE): Fix the wording
** AC_C_TYPEOF
New macro to check for support of 'typeof' syntax a la GNU C.
+** AC_CHECK_DECLS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_HEADERS_ONCE
+ New "once-only" variants of commonly-used macros, to make 'configure'
+ smaller and faster in common cases.
+
+** AC_FUNC_STRTOLD
+ New macro to check for strtold with C99 semantics.
+
+** AC_HEADER_ASSERT
+ New macro that lets builder disable assertions at 'configure'-time.
+
** AC_PATH_X
Now checks for X11/Xlib.h and XrmInitialize (X proper) rather than
X11/Intrinsic.h and XtMalloc (Xt).
ac_cv_prog_cc_c99 or ac_cv_prog_cc_c89 (whichever is valid, in
that order).
+** AC_STRUCT_DIRENT_D_INO, AC_STRUCT_DIRENT_D_TYPE
+ New macro for checking commonly-used members of struct dirent.
+
** AC_SUBST
The subtituted value can now contain newlines.
The substitution now occurs only when @variable@ is on a line by itself,
optionally surrounded by spaces and tabs. The whole line is replaced.
+** AC_TYPE_LONG_DOUBLE, AC_TYPE_LONG_DOUBLE_WIDER
+ New macros to check for long double, and whether it is wider than double.
+ The old macro AC_C_TYPE_LONG_DOUBLE has been marked as obsolete;
+ applications should switch to the new macro.
+
+** AC_TYPE_INT8_T, AC_TYPE_INT16_T, AC_TYPE_INT32_T, AC_TYPE_INT64_T,
+ AC_TYPE_INTMAX_T, AC_TYPE_INTPTR_T, AC_TYPE_LONG_LONG_INT, AC_TYPE_SSIZE_T,
+ AC_TYPE_UINT8_T, AC_TYPE_UINT16_T, AC_TYPE_UINT32_T, AC_TYPE_UINT64_T,
+ AC_TYPE_UINTMAX_T, AC_TYPE_UINTPTR_T, AC_TYPE_UNSIGNED_LONG_LONG_INT
+ New macros to check for C99 and POSIX types.
+
+** AC_USE_SYSTEM_EXTENSIONS
+ New macro to enable extensions to Posix.
+
** AH_HEADER
New macro which is defined to the name of the first declared config header
or undefined if no config headers have been declared yet.
New macros for configuring installation of Erlang libraries:
AC_ERLANG_SUBST_INSTALL_LIB_DIR, AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR.
+** The manual now mentions Gnulib more prominently.
+
** New macros to support Objective C.
AC_PROG_OBJC, AC_PROG_OBJCPP.
The @acronym{GNU} Build System
* Automake:: Escaping Makefile hell
+* Gnulib:: The @acronym{GNU} portability library
* Libtool:: Building libraries portably
* Pointers:: More info on the @acronym{GNU} build system
@menu
* Automake:: Escaping Makefile hell
+* Gnulib:: The @acronym{GNU} portability library
* Libtool:: Building libraries portably
* Pointers:: More info on the @acronym{GNU} build system
@end menu
with subdirectories), but even for small programs the added convenience
and portability can be substantial. And that's not all@enddots{}
+@node Gnulib
+@section Gnulib
+
+@acronym{GNU} software has a well-deserved reputation for running on
+many different types of systems. While our primary goal is to write
+software for the @acronym{GNU} system, many users and developers have
+been introduced to us through the systems that they were already using.
+
+@cindex Gnulib
+Gnulib is a central location for common @acronym{GNU} code, intended to
+be shared among free software packages. Its components are typically
+shared at the source level, rather than being a library that gets built,
+installed, and linked against. The idea is to copy files from Gnulib
+into your own source tree. There is no distribution tarball; developers
+should just grab source modules from the repository. The source files
+are available online, under various licenses, mostly @acronym{GNU}
+@acronym{GPL} or @acronym{GNU} @acronym{LGPL}.
+
+Gnulib modules typically contain C source code along with Autoconf
+macros used to configure the source code. For example, the Gnulib
+@code{stdbool} module implements a @file{stdbool.h} header that nearly
+conforms to C99, even on old-fashioned hosts that lack @file{stdbool.h}.
+This module contains a source file for the replacement header, along
+with an Autoconf macro that arranges to use the replacement header on
+old-fashioned systems.
+
@node Libtool
@section Libtool
The home pages for
@uref{http://www.gnu.org/software/autoconf/, Autoconf},
-@uref{http://www.gnu.org/software/automake/, Automake}, and
+@uref{http://www.gnu.org/software/automake/, Automake},
+@uref{http://www.gnu.org/software/gnulib/, Gnulib}, and
@uref{http://www.gnu.org/software/libtool/, Libtool}.
@item Automake Manual
definitions of @code{strcoll} that should not be used.
@end defmac
-@defmac AC_FUNC_STRTOD
-@acindex{FUNC_STRTOD}
-@ovindex POW_LIB
-@c @fuindex strtod
-@prindex @code{strtod}
-If the @code{strtod} function does not exist or doesn't work correctly,
-ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}. In this case,
-because @file{strtod.c} is likely to need @samp{pow}, set the output
-variable @code{POW_LIB} to the extra library needed.
-@end defmac
-
@defmac AC_FUNC_STRERROR_R
@acindex{FUNC_STRERROR_R}
@cvindex HAVE_STRERROR_R
Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
@end defmac
+@defmac AC_FUNC_STRTOD
+@acindex{FUNC_STRTOD}
+@ovindex POW_LIB
+@c @fuindex strtod
+@prindex @code{strtod}
+If the @code{strtod} function does not exist or doesn't work correctly,
+ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}. In this case,
+because @file{strtod.c} is likely to need @samp{pow}, set the output
+variable @code{POW_LIB} to the extra library needed.
+@end defmac
+
+@defmac AC_FUNC_STRTOLD
+@acindex{FUNC_STRTOLD}
+@prindex @code{strtold}
+If the @code{strtold} function exists and conforms to C99, define
+@code{HAVE_STRTOLD}.
+@end defmac
+
@defmac AC_FUNC_STRNLEN
@acindex{FUNC_STRNLEN}
@cvindex HAVE_STRNLEN
functions is not found.
@end defmac
+@defmac AC_CHECK_FUNCS_ONCE (@var{function}@dots{})
+@acindex{CHECK_FUNCS_ONCE}
+@cvindex HAVE_@var{function}
+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.
+This is a once-only variant of @code{AC_CHECK_FUNCS}. It generates the
+checking code at most once, so that @command{configure} is smaller and
+faster; but the checks cannot be conditionalized and are always done once,
+early during the @command{configure} run.
+@end defmac
+
@sp 1
Autoconf follows a philosophy that was formed over the years by those
package must be ready to replace them.
Suitable replacements for many such problem functions are available from
-@uref{http://www.gnu.org/software/gnulib/, Gnulib}, which aims to
-provide a centralized repository of such portability functions (among
-other things). The source files are available online, under various
-licenses, mostly @acronym{GNU} @acronym{GPL} or @acronym{GNU} @acronym{LGPL}.
+Gnulib (@pxref{Gnulib}).
@defmac AC_LIBOBJ (@var{function})
@acindex{LIBOBJ}
additions. Please help us keeping it as complete as possible.
@table @asis
+
+@item @file{limits.h}
+C99 says that @file{limits.h} defines @code{LLONG_MIN},
+@code{LLONG_MAX}, and @code{ULLONG_MAX}, but many almost-C99
+environments (e.g., default GCC 4.0.2 + glibc 2.4) do not define them.
+
@item @file{inttypes.h} vs.@: @file{stdint.h}
@hdrindex{inttypes.h}
@hdrindex{stdint.h}
These macros check for particular system header files---whether they
exist, and in some cases whether they declare certain symbols.
+@defmac AC_HEADER_ASSERT
+@acindex{HEADER_ASSERT}
+@cvindex NDEBUG
+@hdrindex{assert.h}
+Check whether to enable assertions in the style of @file{assert.h}.
+Assertions are enabled by default, but the user can override this by
+invoking @command{configure} with the @option{--disable-assert} option.
+@end defmac
+
@defmac AC_HEADER_DIRENT
@acindex{HEADER_DIRENT}
@cvindex HAVE_DIRENT_H
@code{struct dirent} to the @code{NAMLEN} macro.
This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
+
+Also see @code{AC_STRUCT_DIRENT_D_INO} and
+@code{AC_STRUCT_DIRENT_D_TYPE} (@pxref{Particular Structures}).
@end defmac
@defmac AC_HEADER_MAJOR
@cvindex HAVE__BOOL
@hdrindex{stdbool.h}
@hdrindex{system.h}
-If @file{stdbool.h} exists and is conformant to C99, define
+If @file{stdbool.h} exists and conforms to C99, define
@code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
@code{HAVE__BOOL} to 1. To fulfill the C99 requirements, your
@file{system.h} could contain the following code:
# ifdef __cplusplus
typedef bool _Bool;
# else
-typedef unsigned char _Bool;
+# define _Bool signed char
# endif
# endif
# define bool _Bool
#endif
@end verbatim
-Alternatively you can construct an output variable that includes only
-those headers and definitions needed. For example:
+Alternatively you can use the @samp{stdbool} package of Gnulib
+(@pxref{Gnulib}); it packages the above code into a replacement header
+and contains a few other bells and whistles.
-@verbatim
-AC_HEADER_STDBOOL
-AC_SUBST([stdbool])
-if test "x$ac_cv_header_stdbool_h" = xyes; then
- stdbool='
-#include <stdbool.h>
-'
-else
- if test "x$ac_cv_type__Bool" != xyes; then
- stdbool='
-#ifdef __cplusplus
-typedef bool _Bool;
-#else
-typedef unsigned char _Bool;
-#endif
-'
- else
- stdbool='
-'
- fi
- stdbool=$stdbool'
-#define bool _Bool
-#define false 0
-#define true 1
-#define __bool_true_false_are_defined 1
-'
-fi
-@end verbatim
@end defmac
])
@end verbatim
+The following variant generates smaller, faster @command{configure}
+files if you do not need the full power of @code{AC_CHECK_HEADERS}.
+
+@defmac AC_CHECK_HEADERS_ONCE (@var{header-file}@dots{})
+@acindex{CHECK_HEADERS_ONCE}
+@cvindex HAVE_@var{header}
+For each given system header file @var{header-file} in the
+blank-separated argument list that exists, define
+@code{HAVE_@var{header-file}} (in all capitals).
+This is a once-only variant of @code{AC_CHECK_HEADERS}. It generates the
+checking code at most once, so that @command{configure} is smaller and
+faster; but the checks cannot be conditionalized and are always done once,
+early during the @command{configure} run.
+@end defmac
+
@node Declarations
@section Declarations
@cindex Declaration, checking
the configuration. In most cases the traditional approach is enough.
@end defmac
+@defmac AC_CHECK_DECLS_ONCE (@var{symbols})
+@acindex{CHECK_DECLS_ONCE}
+@cvindex HAVE_DECL_@var{symbol}
+For each of the @var{symbols} (@emph{comma}-separated list), define
+@code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
+@var{symbol} is declared in the default include files, otherwise to
+@samp{0}. This is a once-only variant of @code{AC_CHECK_DECLS}. It
+generates the checking code at most once, so that @command{configure} is
+smaller and faster; but the checks cannot be conditionalized and are
+always done once, early during the @command{configure} run.
+@end defmac
+
@node Structures
@section Structures
The following macros check for certain structures or structure members.
+@defmac AC_STRUCT_DIRENT_D_INO
+@acindex{STRUCT_DIRENT_D_INO}
+@cvindex HAVE_STRUCT_DIRENT_D_INO
+Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
+Headers}). Then, if @code{struct dirent} contains a @code{d_ino}
+member, define @code{HAVE_STRUCT_DIRENT_D_INO}.
+
+@code{HAVE_STRUCT_DIRENT_D_INO} indicates only the presence of
+@code{d_ino}, not whether its contents are always reliable.
+Traditionally, a zero @code{d_ino} indicated a deleted directory entry,
+though modern systems hide this detail from the user and never return
+zero @code{d_ino} values.
+@end defmac
+
+@defmac AC_STRUCT_DIRENT_D_TYPE
+@acindex{STRUCT_DIRENT_D_TYPE}
+@cvindex HAVE_STRUCT_DIRENT_D_TYPE
+Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
+Headers}). Then, if @code{struct dirent} contains a @code{d_type}
+member, define @code{HAVE_STRUCT_DIRENT_D_TYPE}.
+@end defmac
+
@defmac AC_STRUCT_ST_BLKSIZE
@acindex{STRUCT_ST_BLKSIZE}
@cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
@hdrindex{sys/types.h}
@hdrindex{stdlib.h}
+@hdrindex{stdint.h}
+@hdrindex{inttypes.h}
These macros check for particular C types in @file{sys/types.h},
-@file{stdlib.h} and others, if they exist.
+@file{stdlib.h}, @file{stdint.h}, @file{inttypes.h} and others, if they
+exist.
+
+The Gnulib @code{stdint} module is an alternate way to define many of
+these symbols; it is useful if you prefer your code to assume a
+C99-or-better environment. @xref{Gnulib}.
@defmac AC_TYPE_GETGROUPS
@acindex{TYPE_GETGROUPS}
is the base type of the array argument to @code{getgroups}.
@end defmac
+@defmac AC_TYPE_INT8_T
+@acindex{TYPE_INT8_T}
+@cvindex HAVE_INT8_T
+@cvindex int8_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{int8_t},
+define @code{HAVE_INT8_T}. Otherwise, define @code{int8_t} to a signed
+integer type that is exactly 8 bits wide and that uses two's complement
+representation, if such a type exists.
+@end defmac
+
+@defmac AC_TYPE_INT16_T
+@acindex{TYPE_INT16_T}
+@cvindex HAVE_INT16_T
+@cvindex int16_t
+This is like @code{AC_TYPE_INT8_T}, except for 16-bit integers.
+@end defmac
+
+@defmac AC_TYPE_INT32_T
+@acindex{TYPE_INT32_T}
+@cvindex HAVE_INT32_T
+@cvindex int32_t
+This is like @code{AC_TYPE_INT8_T}, except for 32-bit integers.
+@end defmac
+
+@defmac AC_TYPE_INT64_T
+@acindex{TYPE_INT64_T}
+@cvindex HAVE_INT64_T
+@cvindex int64_t
+This is like @code{AC_TYPE_INT8_T}, except for 64-bit integers.
+@end defmac
+
+@defmac AC_TYPE_INTMAX_T
+@acindex{TYPE_INTMAX_T}
+@cvindex HAVE_INTMAX_T
+@cvindex intmax_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{intmax_t},
+define @code{HAVE_INTMAX_T}. Otherwise, define @code{intmax_t} to the
+widest signed integer type.
+@end defmac
+
+@defmac AC_TYPE_INTPTR_T
+@acindex{TYPE_INTPTR_T}
+@cvindex HAVE_INTPTR_T
+@cvindex intptr_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{intptr_t},
+define @code{HAVE_INTPTR_T}. Otherwise, define @code{intptr_t} to a
+signed integer type wide enough to hold a pointer, if such a type
+exists.
+@end defmac
+
+@defmac AC_TYPE_LONG_DOUBLE
+@acindex{TYPE_LONG_DOUBLE}
+@cvindex HAVE_LONG_DOUBLE
+If the C compiler supports a working @code{long double} type, define
+@code{HAVE_LONG_DOUBLE}. The @code{long double} type might have the
+same range and precision as @code{double}.
+@end defmac
+
+@defmac AC_TYPE_LONG_DOUBLE_WIDER
+@acindex{TYPE_LONG_DOUBLE_WIDER}
+@cvindex HAVE_LONG_DOUBLE_WIDER
+If the C compiler supports a working @code{long double} type with more
+range or precision than the @code{double} type, define
+@code{HAVE_LONG_DOUBLE_WIDER}.
+@end defmac
+
+@defmac AC_TYPE_LONG_LONG_INT
+@acindex{TYPE_LONG_LONG_INT}
+@cvindex HAVE_LONG_LONG_INT
+If the C compiler supports a working @code{long long int} type, define
+@code{HAVE_LONG_LONG_INT}.
+@end defmac
+
@defmac AC_TYPE_MBSTATE_T
@acindex{TYPE_MBSTATE_T}
@cvindex mbstate_t
Equivalent to @samp{AC_CHECK_TYPE([size_t], [unsigned int])}.
@end defmac
+@defmac AC_TYPE_SSIZE_T
+@acindex{TYPE_SSIZE_T}
+@cvindex ssize_t
+Equivalent to @samp{AC_CHECK_TYPE([ssize_t], [int])}.
+@end defmac
+
@defmac AC_TYPE_UID_T
@acindex{TYPE_UID_T}
@cvindex uid_t
@code{gid_t} to be @code{int}.
@end defmac
+@defmac AC_TYPE_UINT8_T
+@acindex{TYPE_UINT8_T}
+@cvindex HAVE_UINT8_T
+@cvindex uint8_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{uint8_t},
+define @code{HAVE_UINT8_T}. Otherwise, define @code{uint8_t} to an
+unsigned integer type that is exactly 8 bits wide, if such a type
+exists.
+@end defmac
+
+@defmac AC_TYPE_UINT16_T
+@acindex{TYPE_UINT16_T}
+@cvindex HAVE_UINT16_T
+@cvindex uint16_t
+This is like @code{AC_TYPE_UINT8_T}, except for 16-bit unsigned integers.
+@end defmac
+
+@defmac AC_TYPE_UINT32_T
+@acindex{TYPE_UINT32_T}
+@cvindex HAVE_UINT32_T
+@cvindex uint32_t
+This is like @code{AC_TYPE_UINT8_T}, except for 32-bit unsigned integers.
+@end defmac
+
+@defmac AC_TYPE_UINT64_T
+@acindex{TYPE_UINT64_T}
+@cvindex HAVE_UINT64_T
+@cvindex uint64_t
+This is like @code{AC_TYPE_UINT8_T}, except for 64-bit unsigned integers.
+@end defmac
+
+@defmac AC_TYPE_UINTMAX_T
+@acindex{TYPE_UINTMAX_T}
+@cvindex HAVE_UINTMAX_T
+@cvindex uintmax_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintmax_t},
+define @code{HAVE_UINTMAX_T}. Otherwise, define @code{uintmax_t} to the
+widest unsigned integer type.
+@end defmac
+
+@defmac AC_TYPE_UINTPTR_T
+@acindex{TYPE_UINTPTR_T}
+@cvindex HAVE_UINTPTR_T
+@cvindex uintptr_t
+If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintptr_t},
+define @code{HAVE_UINTPTR_T}. Otherwise, define @code{uintptr_t} to an
+unsigned integer type wide enough to hold a pointer, if such a type
+exists.
+@end defmac
+
+@defmac AC_TYPE_UNSIGNED_LONG_LONG_INT
+@acindex{TYPE_UNSIGNED_LONG_LONG_INT}
+@cvindex HAVE_UNSIGNED_LONG_LONG_INT
+If the C compiler supports a working @code{unsigned long long int} type,
+define @code{HAVE_UNSIGNED_LONG_LONG_INT}.
+@end defmac
+
@node Generic Types
@subsection Generic Type Checks
unless the C compiler predefines it.
@end defmac
-@defmac AC_C_LONG_DOUBLE
-@acindex{C_LONG_DOUBLE}
-@cvindex HAVE_LONG_DOUBLE
-If the C compiler supports a working @code{long double} type with more
-range or precision than the @code{double} type, define
-@code{HAVE_LONG_DOUBLE}.
-@end defmac
-
@defmac AC_C_STRINGIZE
@acindex{C_STRINGIZE}
@cvindex HAVE_STRINGIZE
facilities. Should be called before any macros that run the C compiler.
@end defmac
+@defmac AC_USE_SYSTEM_EXTENSIONS
+@acindex{USE_SYSTEM_EXTENSIONS}
+@cvindex _ALL_SOURCE
+@cvindex _GNU_SOURCE
+@cvindex _MINIX
+@cvindex _POSIX_1_SOURCE
+@cvindex _POSIX_PTHREAD_SEMANTICS
+@cvindex _POSIX_SOURCE
+@cvindex __EXTENSIONS__
+If possible, enable extensions to Posix on hosts that normally disable
+the extensions, typically due to standards-conformance namespace issues.
+This may involve defining @code{__EXTENSIONS__} and
+@code{_POSIX_PTHREAD_SEMANTICS}, which are macros used by Solaris. This
+macro also has the combined effects of @code{AC_GNU_SOURCE},
+@code{AC_AIX}, and @code{AC_MINIX}.
+@end defmac
+
@node Erlang Libraries
@section Erlang Libraries
But since there is a macro named @code{AC_SUBST_FILE}, it was just
impossible to @samp{AC_SUBST(FILE)}! In this case,
@code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
-have been used (yes, with the parentheses)@dots{}or better yet, high-level
-macros such as @code{AC_EXPAND_ONCE}.
+have been used (yes, with the parentheses).
+@c or better yet, high-level macros such as @code{m4_expand_once}
No Autoconf macro should ever enter the user-variable name space; i.e.,
except for the variables that are the actual result of running the
This macro is obsolete; it does nothing.
@end defmac
+@defmac AC_C_LONG_DOUBLE
+@acindex{C_LONG_DOUBLE}
+@cvindex HAVE_LONG_DOUBLE
+If the C compiler supports a working @code{long double} type with more
+range or precision than the @code{double} type, define
+@code{HAVE_LONG_DOUBLE}.
+
+You should use @code{AC_TYPE_LONG_DOUBLE} or
+@code{AC_TYPE_LONG_DOUBLE_WIDER} instead. @xref{Particular Types}.
+@end defmac
+
@defmac AC_CANONICAL_SYSTEM
@acindex{CANONICAL_SYSTEM}
Determine the system type and set output variables to the names of the
@defmac AC_LONG_DOUBLE
@acindex{LONG_DOUBLE}
-@code{AC_C_LONG_DOUBLE}
+If the C compiler supports a working @code{long double} type with more
+range or precision than the @code{double} type, define
+@code{HAVE_LONG_DOUBLE}.
+
+You should use @code{AC_TYPE_LONG_DOUBLE} or
+@code{AC_TYPE_LONG_DOUBLE_WIDER} instead. @xref{Particular Types}.
@end defmac
@defmac AC_LONG_FILE_NAMES
-# This file is part of Autoconf. -*- Autoconf -*-
+# This file is part of Autoconf. -*- Autoconf -*-
# Programming languages support.
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
[ac_cv_prog_cc_g=yes],
[CFLAGS=""
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
- [],
- [ac_c_werror_flag=$ac_save_c_werror_flag
+ [],
+ [ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
[ac_cv_prog_cc_g=yes])])])
[ac_cv_prog_cxx_g=yes],
[CXXFLAGS=""
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
- [],
- [ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ [],
+ [ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
[ac_cv_prog_cxx_g=yes])])])
[ac_cv_prog_objc_g=yes],
[OBJCFLAGS=""
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
- [],
- [ac_objc_werror_flag=$ac_save_objc_werror_flag
+ [],
+ [ac_objc_werror_flag=$ac_save_objc_werror_flag
OBJCFLAGS="-g"
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
[ac_cv_prog_objc_g=yes])])])
;;
*)
if test "x$ac_cv_prog_cc_stdc" = x; then
- AC_MSG_RESULT([none needed])
+ AC_MSG_RESULT([none needed])
else
- AC_MSG_RESULT([$ac_cv_prog_cc_stdc])
+ AC_MSG_RESULT([$ac_cv_prog_cc_stdc])
fi
;;
esac
])# AC_C_CHAR_UNSIGNED
-# AC_C_LONG_DOUBLE
-# ----------------
-AC_DEFUN([AC_C_LONG_DOUBLE],
-[AC_CACHE_CHECK(
- [for working long double with more range or precision than double],
- [ac_cv_c_long_double],
- [AC_COMPILE_IFELSE(
- [AC_LANG_BOOL_COMPILE_TRY(
- [[#include <float.h>
- long double const a[] =
- {
- 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON,
- LDBL_MIN, LDBL_MAX, LDBL_EPSILON
- };
- long double
- f (long double x)
- {
- return ((x + (unsigned long int) 10) * (-1 / x) + a[0]
- + (x ? f (x) : 'c'));
- }
- ]],
- [[(0 < ((DBL_MAX_EXP < LDBL_MAX_EXP)
- + (DBL_MANT_DIG < LDBL_MANT_DIG)
- - (LDBL_MAX_EXP < DBL_MAX_EXP)
- - (LDBL_MANT_DIG < DBL_MANT_DIG)))
- && (int) LDBL_EPSILON == 0
- ]])],
- ac_cv_c_long_double=yes,
- ac_cv_c_long_double=no)])
-if test $ac_cv_c_long_double = yes; then
- AC_DEFINE(HAVE_LONG_DOUBLE, 1,
- [Define to 1 if long double works and has more range or precision than double.])
-fi
-])# AC_C_LONG_DOUBLE
-
-
# AC_C_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
# -------------------------------------------------------------------------
AC_DEFUN([AC_C_BIGENDIAN],
-# This file is part of Autoconf. -*- Autoconf -*-
+# This file is part of Autoconf. -*- Autoconf -*-
# Checking for functions.
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
])# AC_CHECK_FUNC
+# _AH_CHECK_FUNCS(FUNCTION...)
+# ----------------------------
+m4_define([_AH_CHECK_FUNCS],
+[m4_foreach_w([AC_Func], [$1],
+ [AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([AC_Func])),
+ [Define to 1 if you have the `]m4_defn([AC_Func])[' function.])])])
+
+
# AC_CHECK_FUNCS(FUNCTION..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# ---------------------------------------------------------------------
AC_DEFUN([AC_CHECK_FUNCS],
-[m4_foreach_w([AC_Func], [$1],
- [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
- [Define to 1 if you have the `]AC_Func[' function.])])dnl
+[_AH_CHECK_FUNCS([$1])dnl
for ac_func in $1
do
AC_CHECK_FUNC($ac_func,
])
+# AC_CHECK_FUNCS_ONCE(FUNCTION...)
+# --------------------------------
+AC_DEFUN([AC_CHECK_FUNCS_ONCE],
+[
+ _AH_CHECK_FUNCS([$1])
+ m4_foreach_w([AC_Func], [$1],
+ [AC_DEFUN([_AC_Func_]m4_defn([AC_Func]),
+ [m4_divert_text([INIT_PREPARE],
+ [ac_func_list="$ac_func_list AC_Func"])
+ _AC_FUNCS_EXPANSION])
+ AC_REQUIRE([_AC_Func_]m4_defn([AC_Func]))])
+])
+m4_define([_AC_FUNCS_EXPANSION],
+[
+ m4_divert_text([DEFAULTS], [ac_func_list=])
+ AC_CHECK_FUNCS([$ac_func_list])
+ m4_define([_AC_FUNCS_EXPANSION], [])
+])
+
+
# AC_REPLACE_FUNCS(FUNCTION...)
# -----------------------------
AC_DEFUN([AC_REPLACE_FUNCS],
])
+# AC_FUNC_STRTOLD
+# ---------------
+AC_DEFUN([AC_FUNC_STRTOLD],
+[
+ AC_CACHE_CHECK([whether strtold conforms to C99],
+ [ac_cv_func_strtold],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* On HP-UX before 11.23, strtold returns a struct instead of
+ long double. Reject implementations like that, by requiring
+ compatibility with the C99 prototype. */
+# include <stdlib.h>
+ static long double (*p) (char const *, char **) = strtold;
+ static long double
+ test (char const *nptr, char **endptr)
+ {
+ long double r;
+ r = strtold (nptr, endptr);
+ return r;
+ }]],
+ [[return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;]])],
+ [ac_cv_func_strtold=yes],
+ [ac_cv_func_strtold=no])])
+ if test $ac_cv_func_strtold = yes; then
+ AC_DEFINE([HAVE_STRTOLD], 1,
+ [Define to 1 if strtold exists and conforms to C99.])
+ fi
+])# AC_FUNC_STRTOLD
+
+
# AU::AM_FUNC_STRTOD
# ------------------
AU_ALIAS([AM_FUNC_STRTOD], [AC_FUNC_STRTOD])
AN_FUNCTION([wait3], [AC_FUNC_WAIT3])
AC_DEFUN([AC_FUNC_WAIT3],
[AC_DIAGNOSE([obsolete],
-[$0: `wait3' is being removed from the Open Group standards.
+[$0: `wait3' has been removed from POSIX.
Remove this `AC_FUNC_WAIT3' and adjust your code to use `waitpid' instead.])dnl
AC_CACHE_CHECK([for wait3 that fills in rusage],
[ac_cv_func_wait3_rusage],
AC_SUBST([includedir], ['${prefix}/include'])dnl
AC_SUBST([oldincludedir], ['/usr/include'])dnl
AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
- ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
- ['${datarootdir}/doc/${PACKAGE}'])])dnl
+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+ ['${datarootdir}/doc/${PACKAGE}'])])dnl
AC_SUBST([infodir], ['${datarootdir}/info'])dnl
AC_SUBST([htmldir], ['${docdir}'])dnl
AC_SUBST([dvidir], ['${docdir}'])dnl
# It announces FILE is required in the auxdir.
m4_define([AC_REQUIRE_AUX_FILE],
[AS_LITERAL_IF([$1], [],
- [AC_FATAL([$0: requires a literal argument])])])
+ [AC_FATAL([$0: requires a literal argument])])])
])# AC_CHECK_DECLS
+# AC_CHECK_DECLS_ONCE(SYMBOLS)
+# ----------------------------
+# Like AC_CHECK_DECLS(SYMBOLS), but do it at most once.
+AC_DEFUN([AC_CHECK_DECLS_ONCE],
+[
+ m4_foreach([AC_Symbol], [$1],
+ [AC_DEFUN([_AC_Check_Decl_]m4_defn([AC_Symbol]),
+ [AC_CHECK_DECLS(m4_defn([AC_Symbol]))])
+ AC_REQUIRE([_AC_Check_Decl_]m4_defn([AC_Symbol]))])
+])
+
+
## ---------------------------------- ##
## Replacement of library functions. ##
## ----------------------------------- ##
-# _AC_COMPUTE_INT_COMPILE(EXPRESSION, VARIABLE, [INCLUDES], [IF-FAILS])
-# ---------------------------------------------------------------------
+# _AC_COMPUTE_INT_COMPILE(EXPRESSION, VARIABLE, PROLOGUE, [IF-FAILS])
+# -------------------------------------------------------------------
# Compute the integer EXPRESSION and store the result in the VARIABLE.
# Works OK if cross compiling, but assumes twos-complement arithmetic.
m4_define([_AC_COMPUTE_INT_COMPILE],
])# _AC_COMPUTE_INT_COMPILE
-# _AC_COMPUTE_INT_RUN(EXPRESSION, VARIABLE, [INCLUDES], [IF-FAILS])
-# -----------------------------------------------------------------
+# _AC_COMPUTE_INT_RUN(EXPRESSION, VARIABLE, PROLOGUE, [IF-FAILS])
+# ---------------------------------------------------------------
# Store the evaluation of the integer EXPRESSION in VARIABLE.
m4_define([_AC_COMPUTE_INT_RUN],
[_AC_RUN_IFELSE([AC_LANG_INT_SAVE([$3], [$1])],
[$2=`cat conftest.val`], [$4])])
-# _AC_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
+# _AC_COMPUTE_INT(EXPRESSION, VARIABLE, PROLOGUE, IF-FAILS)
# ---------------------------------------------------------
m4_define([_AC_COMPUTE_INT],
[AC_LANG_COMPILER_REQUIRE()dnl
-# This file is part of Autoconf. -*- Autoconf -*-
+# This file is part of Autoconf. -*- Autoconf -*-
# Checking for headers.
#
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 Free Software
+# Copyright (C) 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software
# Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# AC_CHECK_HEADER(HEADER-FILE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES])
# ---------------------------------------------------------
# We are slowly moving to checking headers with the compiler instead
# of the preproc, so that we actually learn about the usability of a
# _AC_CHECK_HEADER_MONGREL(HEADER-FILE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
-# --------------------------------------------------------------
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
+# ------------------------------------------------------------------
# Check using both the compiler and the preprocessor. If they disagree,
# warn, and the preproc wins.
#
# _AC_CHECK_HEADER_NEW(HEADER-FILE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
# --------------------------------------------------------------
# Check the compiler accepts HEADER-FILE. The INCLUDES are defaulted.
m4_define([_AC_CHECK_HEADER_NEW],
# _AC_CHECK_HEADER_OLD(HEADER-FILE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# --------------------------------------------------------------
# Check the preprocessor accepts HEADER-FILE.
m4_define([_AC_CHECK_HEADER_OLD],
# --------------------------------
m4_define([AH_CHECK_HEADERS],
[m4_foreach_w([AC_Header], [$1],
- [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),
- [Define to 1 if you have the <]AC_Header[> header file.])])])
+ [AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([AC_Header])),
+ [Define to 1 if you have the <]m4_defn([AC_Header])[> header file.])])])
-# AC_CHECK_HEADERS(HEADER-FILE...
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
+# AC_CHECK_HEADERS(HEADER-FILE...,
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES])
# ----------------------------------------------------------
AC_DEFUN([AC_CHECK_HEADERS],
[AH_CHECK_HEADERS([$1])dnl
])# AC_CHECK_HEADERS
+# AC_CHECK_HEADERS_ONCE(HEADER-FILE...)
+# -------------------------------------
+AC_DEFUN([AC_CHECK_HEADERS_ONCE],
+[
+ AH_CHECK_HEADERS([$1])
+ m4_foreach_w([AC_Header], [$1],
+ [AC_DEFUN([_AC_Header_]m4_quote(m4_translit(AC_Header, [./-], [___])),
+ [m4_divert_text([INIT_PREPARE],
+ [ac_header_list="$ac_header_list AC_Header"])
+ _AC_HEADERS_EXPANSION])
+ AC_REQUIRE([_AC_Header_]m4_quote(m4_translit(AC_Header, [./-], [___])))])
+])
+m4_define([_AC_HEADERS_EXPANSION],
+[
+ m4_divert_text([DEFAULTS], [ac_header_list=])
+ AC_CHECK_HEADERS([$ac_header_list])
+ m4_define([_AC_HEADERS_EXPANSION], [])
+])
+
+
## --------------------- ##
## 4. Tests for specific headers. ##
## ------------------------------- ##
+# AC_HEADER_ASSERT
+# ----------------
+# Check whether to enable assertions.
+AC_DEFUN([AC_HEADER_ASSERT],
+[
+ AC_MSG_CHECKING([whether to enable assertions])
+ AC_ARG_ENABLE([assert],
+ [ --disable-assert turn off assertions],
+ [AC_MSG_RESULT([no])
+ AC_DEFINE(NDEBUG, 1, [Define to 1 if assertions should be disabled.])],
+ [AC_MSG_RESULT(yes)])
+])
+
# _AC_CHECK_HEADER_DIRENT(HEADER-FILE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT_FOUND])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT_FOUND])
# -----------------------------------------------------------------
# Like AC_CHECK_HEADER, except also make sure that HEADER-FILE
# defines the type `DIR'. dirent.h on NextStep 3.2 doesn't.
[[
#include <stdbool.h>
#ifndef bool
-# error bool is not defined
+ "error: bool is not defined"
#endif
#ifndef false
-# error false is not defined
+ "error: false is not defined"
#endif
#if false
-# error false is not 0
+ "error: false is not 0"
#endif
#ifndef true
-# error true is not defined
+ "error: true is not defined"
#endif
#if true != 1
-# error true is not 1
+ "error: true is not 1"
#endif
#ifndef __bool_true_false_are_defined
-# error __bool_true_false_are_defined is not defined
+ "error: __bool_true_false_are_defined is not defined"
#endif
struct s { _Bool s: 1; _Bool t; } s;
enum { j = false, k = true, l = false * true, m = true * 256 };
_Bool n[m];
char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+# if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+# endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
]],
[[
- return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + !l
- + !m + !n + !o);
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
]])],
[ac_cv_header_stdbool_h=yes],
[ac_cv_header_stdbool_h=no])])
-# This file is part of Autoconf. -*- Autoconf -*-
+# This file is part of Autoconf. -*- Autoconf -*-
# Macros that test for specific, unclassified, features.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
-# CACHE-VAR,
-# DESCRIPTION,
-# [INCLUDES], [FUNCTION-BODY])
+# CACHE-VAR,
+# DESCRIPTION,
+# PROLOGUE, [FUNCTION-BODY])
# ----------------------------------------------------------
m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
[AC_CACHE_CHECK([for $1 value needed for large files], [$3],
matches *mingw32*])# AC_MINGW32
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS],
+[
+ AC_BEFORE([$0], [AC_COMPILE_IFELSE])
+ AC_BEFORE([$0], [AC_RUN_IFELSE])
+
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_REQUIRE([AC_AIX])
+ AC_REQUIRE([AC_MINIX])
+
+ AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif])
+ AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+ [ac_cv_safe_to_define___extensions__],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+# define __EXTENSIONS__ 1
+ AC_INCLUDES_DEFAULT])],
+ [ac_cv_safe_to_define___extensions__=yes],
+ [ac_cv_safe_to_define___extensions__=no])])
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ AC_DEFINE([__EXTENSIONS__])
+ AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+])
+
+
## -------------------------- ##
-# This file is part of Autoconf. -*- Autoconf -*-
+# This file is part of Autoconf. -*- Autoconf -*-
# Type related macros: existence, sizeof, and structure members.
-# Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+#
+# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# AC_CHECK_ families:
#
# AC_CHECK_TYPE(TYPE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
#
# In order to provide backward compatibility, the new scheme is
# implemented as _AC_CHECK_TYPE_NEW, the old scheme as _AC_CHECK_TYPE_OLD,
# AC_CHECK_TYPES(TYPES,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES = DEFAULT-INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
# --------------------------------------------------------
# TYPES is an m4 list. There are no ambiguities here, we mean the newer
# AC_CHECK_TYPE.
# AC_CHECK_TYPE(TYPE, DEFAULT)
# or
# AC_CHECK_TYPE(TYPE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES = DEFAULT-INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
# -------------------------------------------------------
#
# Dispatch respectively to _AC_CHECK_TYPE_OLD or _AC_CHECK_TYPE_NEW.
-# 1. More than two arguments => NEW
+# 1. More than two arguments => NEW
# 2. $2 seems to be replacement type => OLD
# See _AC_CHECK_TYPE_REPLACEMENT_TYPE_P for `replacement type'.
-# 3. $2 seems to be a type => NEW plus a warning
-# 4. default => NEW
+# 3. $2 seems to be a type => NEW plus a warning
+# 4. default => NEW
AC_DEFUN([AC_CHECK_TYPE],
[m4_if($#, 3,
[_AC_CHECK_TYPE_NEW($@)],
[AC_CHECK_TYPES(ptrdiff_t)])
+# AC_TYPE_INTMAX_T
+# -----------------
+AC_DEFUN([AC_TYPE_INTMAX_T],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_CHECK_TYPE([intmax_t],
+ [AC_DEFINE([HAVE_INTMAX_T], 1,
+ [Define to 1 if the system has the type `intmax_t'.])],
+ [test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long int' \
+ || ac_type='long int'
+ AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
+ [Define to the widest signed integer type
+ if <stdint.h> and <inttypes.h> do not define.])])
+])
+
+
+# AC_TYPE_UINTMAX_T
+# -----------------
+AC_DEFUN([AC_TYPE_UINTMAX_T],
+[
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ AC_CHECK_TYPE([uintmax_t],
+ [AC_DEFINE([HAVE_UINTMAX_T], 1,
+ [Define to 1 if the system has the type `uintmax_t'.])],
+ [test $ac_cv_type_unsigned_long_long_int = yes \
+ && ac_type='unsigned long long int' \
+ || ac_type='unsigned long int'
+ AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
+ [Define to the widest unsigned integer type
+ if <stdint.h> and <inttypes.h> do not define.])])
+])
+
+
+# AC_TYPE_INTPTR_T
+# -----------------
+AC_DEFUN([AC_TYPE_INTPTR_T],
+[
+ AC_CHECK_TYPE([intptr_t],
+ [AC_DEFINE([HAVE_INTPTR_T], 1,
+ [Define to 1 if the system has the type `intptr_t'.])],
+ [for ac_type in 'int' 'long int' 'long long int'; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT],
+ [[sizeof (void *) <= sizeof ($ac_type)]])],
+ [AC_DEFINE_UNQUOTED([intptr_t], [$ac_type],
+ [Define to the type of a signed integer type wide enough to
+ hold a pointer, if such a type exists, and if the system
+ does not define it.])
+ ac_type=])
+ test -z "$ac_type" && break
+ done])
+])
+
+
+# AC_TYPE_UINTPTR_T
+# -----------------
+AC_DEFUN([AC_TYPE_UINTPTR_T],
+[
+ AC_CHECK_TYPE([uintptr_t],
+ [AC_DEFINE([HAVE_UINTPTR_T], 1,
+ [Define to 1 if the system has the type `uintptr_t'.])],
+ [for ac_type in 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int'; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT],
+ [[sizeof (void *) <= sizeof ($ac_type)]])],
+ [AC_DEFINE_UNQUOTED([uintptr_t], [$ac_type],
+ [Define to the type of an unsigned integer type wide enough to
+ hold a pointer, if such a type exists, and if the system
+ does not define it.])
+ ac_type=])
+ test -z "$ac_type" && break
+ done])
+])
+
+
+# AC_TYPE_LONG_DOUBLE
+# -------------------
+AC_DEFUN([AC_TYPE_LONG_DOUBLE],
+[
+ AC_CACHE_CHECK([for long double], [ac_cv_type_long_double],
+ [if test "$GCC" = yes; then
+ ac_cv_type_long_double=yes
+ else
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [[/* The Stardent Vistra knows sizeof (long double), but does
+ not support it. */
+ long double foo = 0.0L;]],
+ [[/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ sizeof (double) <= sizeof (long double)]])],
+ [ac_cv_type_long_double=yes],
+ [ac_cv_type_long_double=no])
+ fi])
+ if test $ac_cv_type_long_double = yes; then
+ AC_DEFINE([HAVE_LONG_DOUBLE], 1,
+ [Define to 1 if the system has the type `long double'.])
+ fi
+])
+
+
+# AC_TYPE_LONG_DOUBLE_WIDER
+# -------------------------
+AC_DEFUN([AC_TYPE_LONG_DOUBLE_WIDER],
+[
+ AC_CACHE_CHECK(
+ [for long double with more range or precision than double],
+ [ac_cv_type_long_double_wider],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [[#include <float.h>
+ long double const a[] =
+ {
+ 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON,
+ LDBL_MIN, LDBL_MAX, LDBL_EPSILON
+ };
+ long double
+ f (long double x)
+ {
+ return ((x + (unsigned long int) 10) * (-1 / x) + a[0]
+ + (x ? f (x) : 'c'));
+ }
+ ]],
+ [[(0 < ((DBL_MAX_EXP < LDBL_MAX_EXP)
+ + (DBL_MANT_DIG < LDBL_MANT_DIG)
+ - (LDBL_MAX_EXP < DBL_MAX_EXP)
+ - (LDBL_MANT_DIG < DBL_MANT_DIG)))
+ && (int) LDBL_EPSILON == 0
+ ]])],
+ ac_cv_type_long_double_wider=yes,
+ ac_cv_type_long_double_wider=no)])
+ if test $ac_cv_type_long_double_wider = yes; then
+ AC_DEFINE([HAVE_LONG_DOUBLE_WIDER], 1,
+ [Define to 1 if the type `long double' works and has more range or
+ precision than `double'.])
+ fi
+])# AC_TYPE_LONG_DOUBLE_WIDER
+
+
+# AC_C_LONG_DOUBLE
+# ----------------
+AU_DEFUN([AC_C_LONG_DOUBLE],
+ [
+ AC_TYPE_LONG_DOUBLE_WIDER
+ ac_cv_c_long_double=$ac_cv_type_long_double_wider
+ if test $ac_cv_c_long_double = yes; then
+ AC_DEFINE([HAVE_LONG_DOUBLE], 1,
+ [Define to 1 if the type `long double' works and has more range or
+ precision than `double'.])
+ fi
+ ],
+ [The macro `AC_C_LONG_DOUBLE' is obsolete.
+You should use `AC_TYPE_LONG_DOUBLE' or `AC_TYPE_LONG_DOUBLE_WIDER' instead.]
+)
+
+
+# AC_TYPE_LONG_LONG_INT
+# ---------------------
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+ AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [long long int ll = 1LL; int i = 63;],
+ [long long int llmax = (long long int) -1;
+ return ll << i | ll >> i | llmax / ll | llmax % ll;])],
+ [ac_cv_type_long_long_int=yes],
+ [ac_cv_type_long_long_int=no])])
+ if test $ac_cv_type_long_long_int = yes; then
+ AC_DEFINE([HAVE_LONG_LONG_INT], 1,
+ [Define to 1 if the system has the type `long long int'.])
+ fi
+])
+
+
+# AC_TYPE_UNSIGNED_LONG_LONG_INT
+# ------------------------------
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
+[
+ AC_CACHE_CHECK([for unsigned long long int],
+ [ac_cv_type_unsigned_long_long_int],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [unsigned long long int ull = 1ULL; int i = 63;],
+ [unsigned long long int ullmax = (unsigned long long int) -1;
+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;])],
+ [ac_cv_type_unsigned_long_long_int=yes],
+ [ac_cv_type_unsigned_long_long_int=no])])
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], 1,
+ [Define to 1 if the system has the type `unsigned long long int'.])
+ fi
+])
+
+
# AC_TYPE_MBSTATE_T
# -----------------
AC_DEFUN([AC_TYPE_MBSTATE_T],
AN_IDENTIFIER([size_t], [AC_TYPE_SIZE_T])
AC_DEFUN([AC_TYPE_SIZE_T], [AC_CHECK_TYPE(size_t, unsigned int)])
+AN_IDENTIFIER([ssize_t], [AC_TYPE_SSIZE_T])
+AC_DEFUN([AC_TYPE_SSIZE_T], [AC_CHECK_TYPE(ssize_t, int)])
+
AN_IDENTIFIER([pid_t], [AC_TYPE_PID_T])
AC_DEFUN([AC_TYPE_PID_T], [AC_CHECK_TYPE(pid_t, int)])
AN_IDENTIFIER([mode_t], [AC_TYPE_MODE_T])
AC_DEFUN([AC_TYPE_MODE_T], [AC_CHECK_TYPE(mode_t, int)])
+AN_IDENTIFIER([int8_t], [AC_TYPE_INT8_T])
+AN_IDENTIFIER([int16_t], [AC_TYPE_INT16_T])
+AN_IDENTIFIER([int32_t], [AC_TYPE_INT32_T])
+AN_IDENTIFIER([int64_t], [AC_TYPE_INT64_T])
+AN_IDENTIFIER([uint8_t], [AC_TYPE_UINT8_T])
+AN_IDENTIFIER([uint16_t], [AC_TYPE_UINT16_T])
+AN_IDENTIFIER([uint32_t], [AC_TYPE_UINT32_T])
+AN_IDENTIFIER([uint64_t], [AC_TYPE_UINT64_T])
+AC_DEFUN([AC_TYPE_INT8_T], [_AC_TYPE_INT(8)])
+AC_DEFUN([AC_TYPE_INT16_T], [_AC_TYPE_INT(16)])
+AC_DEFUN([AC_TYPE_INT32_T], [_AC_TYPE_INT(32)])
+AC_DEFUN([AC_TYPE_INT64_T], [_AC_TYPE_INT(64)])
+AC_DEFUN([AC_TYPE_UINT8_T], [_AC_TYPE_UNSIGNED_INT(8)])
+AC_DEFUN([AC_TYPE_UINT16_T], [_AC_TYPE_UNSIGNED_INT(16)])
+AC_DEFUN([AC_TYPE_UINT32_T], [_AC_TYPE_UNSIGNED_INT(32)])
+AC_DEFUN([AC_TYPE_UINT64_T], [_AC_TYPE_UNSIGNED_INT(64)])
+
+# _AC_TYPE_INT(NBITS)
+# -------------------
+AC_DEFUN([_AC_TYPE_INT],
+[
+ AC_CACHE_CHECK([for int$1_t], [ac_cv_c_int$1_t],
+ [ac_cv_c_int$1_t=no
+ for ac_type in 'int$1_t' 'int' 'long int' \
+ 'long long int' 'short int' 'signed char'; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT],
+ [[0 < ($ac_type) (((($ac_type) 1 << ($1 - 2)) - 1) * 2 + 1)]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT],
+ [[($ac_type) (((($ac_type) 1 << ($1 - 2)) - 1) * 2 + 1)
+ < ($ac_type) (((($ac_type) 1 << ($1 - 2)) - 1) * 2 + 2)]])],
+ [],
+ [ac_cv_c_int$1_t=$ac_type])])
+ test "$ac_cv_c_int$1_t" != no && break
+ done])
+ case $ac_cv_c_int$1_t in #(
+ no|int$1_t) ;; #(
+ *)
+ AC_DEFINE_UNQUOTED([int$1_t], [$ac_cv_c_int$1_t],
+ [Define to the type of a signed integer type of width exactly $1 bits
+ if such a type exists and the standard includes do not define it.]);;
+ esac
+])# _AC_TYPE_INT
+
+# _AC_TYPE_UNSIGNED_INT(NBITS)
+# ----------------------------
+AC_DEFUN([_AC_TYPE_UNSIGNED_INT],
+[
+ AC_CACHE_CHECK([for uint$1_t], [ac_cv_c_uint$1_t],
+ [ac_cv_c_uint$1_t=no
+ for ac_type in 'uint$1_t' 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT],
+ [[($ac_type) -1 >> ($1 - 1) == 1]])],
+ [ac_cv_c_uint$1_t=$ac_type])
+ test "$ac_cv_c_uint$1_t" != no && break
+ done])
+ case $ac_cv_c_uint$1_t in #(
+ no|uint$1_t) ;; #(
+ *)
+ m4_if([$1], 32,
+ [AC_DEFINE([_UINT$1_T], 1,
+ [Define for Solaris 2.5.1 so the uint$1_t typedef from
+ <sys/synch.h>, <pthread.h>, or <semaphore.h> is not used.
+ If the typedef was allowed, the #define below would cause a
+ syntax error.])])
+ AC_DEFINE_UNQUOTED([uint$1_t], [$ac_cv_c_uint$1_t],
+ [Define to the type of an unsigned integer type of width exactly $1 bits
+ if such a type exists and the standard includes do not define it.]);;
+ esac
+])# _AC_TYPE_UNSIGNED_INT
# AC_TYPE_SIGNAL
# --------------
# ---------------- #
# AC_CHECK_MEMBER(AGGREGATE.MEMBER,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
-# [INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
# ---------------------------------------------------------
# AGGREGATE.MEMBER is for instance `struct passwd.pw_gecos', shell
# variables are not a valid argument.
# AC_CHECK_MEMBERS([AGGREGATE.MEMBER, ...],
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]
-# [INCLUDES])
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]
+# [INCLUDES = DEFAULT-INCLUDES])
# ---------------------------------------------------------
# The first argument is an m4 list.
AC_DEFUN([AC_CHECK_MEMBERS],
# Alphabetic order, please.
+# _AC_STRUCT_DIRENT(MEMBER)
+# -------------------------
+AC_DEFUN([_AC_STRUCT_DIRENT],
+[
+ AC_REQUIRE([AC_HEADER_DIRENT])
+ AC_CHECK_MEMBERS([struct dirent.$1], [], [],
+ [[
+#include <sys/types.h>
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# define dirent direct
+# ifdef HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+ ]])
+])
+
+# AC_STRUCT_DIRENT_D_INO
+# -----------------------------------
+AC_DEFUN([AC_STRUCT_DIRENT_D_INO], [_AC_STRUCT_DIRENT([d_ino])])
+
+# AC_STRUCT_DIRENT_D_TYPE
+# ------------------------------------
+AC_DEFUN([AC_STRUCT_DIRENT_D_TYPE], [_AC_STRUCT_DIRENT([d_type])])
+
+
# AC_STRUCT_ST_BLKSIZE
# --------------------
AU_DEFUN([AC_STRUCT_ST_BLKSIZE],
#
# AC_OBSOLETE([$0], [; replace it with
# AC_CHECK_MEMBERS([struct stat.st_blocks],
-# [AC_LIBOBJ([fileblocks])])
+# [AC_LIBOBJ([fileblocks])])
# Please note that it will define `HAVE_STRUCT_STAT_ST_BLOCKS',
# and not `HAVE_ST_BLOCKS'.])dnl
#