These macros check for particular C functions--whether they exist, and in some cases how they respond when given certain arguments.
alloca
. Tries to get a builtin version by
checking for `alloca.h' or the predefined C preprocessor macros
__GNUC__
and _AIX
. If this macro finds `alloca.h',
it defines HAVE_ALLOCA_H
.
If those attempts fail, it looks for the function in the standard C
library. If any of those methods succeed, it defines
HAVE_ALLOCA
. Otherwise, it sets the output variable
ALLOCA
to `alloca.o' and defines C_ALLOCA
(so
programs can periodically call `alloca(0)' to garbage collect).
This variable is separate from LIBOBJS
so multiple programs can
share the value of ALLOCA
without needing to create an actual
library, in case only some of them use the code in LIBOBJS
.
This macro does not try to get alloca
from the System V R3
`libPW' or the System V R4 `libucb' because those libraries
contain some incompatible functions that cause trouble. Some versions
do not even contain alloca
or contain a buggy version. If you
still want to use their alloca
, use ar
to extract
`alloca.o' from them instead of compiling `alloca.c'.
Source files that use alloca
should start with a piece of code
like the following, to declare it properly. In some versions
of AIX, the declaration of alloca
must precede everything else
except for comments and preprocessor directives. The #pragma
directive is indented so that pre-ANSI C compilers will ignore it,
rather than choke on it.
/* AIX requires this to be the first thing in the file. */ #ifndef __GNUC__ # if HAVE_ALLOCA_H # include <alloca.h> # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif #endif
closedir
function does not return a meaningful value,
define CLOSEDIR_VOID
. Otherwise, callers ought to check its
return value for an error indicator.
fnmatch
function is available and works (unlike the one on
SunOS 5.4), define HAVE_FNMATCH
.
getloadavg
function, this macro defines HAVE_GETLOADAVG
,
and adds to LIBS
any libraries needed to get that function.
Otherwise, it adds `getloadavg.o' to the output variable
LIBOBJS
, and possibly defines several other C preprocessor
macros and output variables:
SVR4
, DGUX
, UMAX
, or UMAX4_3
if
on those systems.
NLIST_STRUCT
.
NLIST_NAME_UNION
.
LDAV_PRIVILEGED
,
programs need to be installed specially on this system for
getloadavg
to work, and this macro defines
GETLOADAVG_PRIVILEGED
.
NEED_SETGID
. The value is
`true' if special installation is required, `false' if not.
If NEED_SETGID
is `true', this macro sets KMEM_GROUP
to the name of the group that should own the installed program.
getmntent
in the `sun', `seq', and `gen'
libraries, for Irix 4, PTX, and Unixware, respectively. Then, if
getmntent
is available, define HAVE_GETMNTENT
.
getpgrp
takes no argument (the POSIX.1 version), define
GETPGRP_VOID
. Otherwise, it is the BSD version, which takes a
process ID as an argument. This macro does not check whether
getpgrp
exists at all; if you need to work in that situation,
first call AC_CHECK_FUNC
for getpgrp
.
memcmp
function is not available, or does not work on
8-bit data (like the one on SunOS 4.1.3), add `memcmp.o' to output
variable LIBOBJS
.
mmap
function exists and works correctly, define
HAVE_MMAP
. Only checks private fixed mapping of already-mapped
memory.
select
function's arguments, and defines those types
in SELECT_TYPE_ARG1
, SELECT_TYPE_ARG234
, and
SELECT_TYPE_ARG5
respectively. SELECT_TYPE_ARG1
defaults
to `int', SELECT_TYPE_ARG234
defaults to `int *',
and SELECT_TYPE_ARG5
defaults to `struct timeval *'.
setpgrp
takes no argument (the POSIX.1 version), define
SETPGRP_VOID
. Otherwise, it is the BSD version, which takes two
process ID as arguments. This macro does not check whether
setpgrp
exists at all; if you need to work in that situation,
first call AC_CHECK_FUNC
for setpgrp
.
setvbuf
takes the buffering type as its second argument and
the buffer pointer as the third, instead of the other way around, define
SETVBUF_REVERSED
. This is the case on System V before release 3.
strcoll
function exists and works correctly, define
HAVE_STRCOLL
. This does a bit more than
`AC_CHECK_FUNCS(strcoll)', because some systems have incorrect
definitions of strcoll
, which should not be used.
strftime
in the `intl' library, for SCO UNIX.
Then, if strftime
is available, define HAVE_STRFTIME
.
HAVE_UTIME_NULL
.
HAVE_VFORK_H
. If a working
vfork
is not found, define vfork
to be fork
. This
macro checks for several known errors in implementations of vfork
and considers the system to not have a working vfork
if it
detects any of them. It is not considered to be an implementation error
if a child's invocation of signal
modifies the parent's signal
handler, since child processes rarely change their signal handlers.
vprintf
is found, define HAVE_VPRINTF
. Otherwise, if
_doprnt
is found, define HAVE_DOPRNT
. (If vprintf
is available, you may assume that vfprintf
and vsprintf
are also available.)
wait3
is found and fills in the contents of its third argument
(a `struct rusage *'), which HP-UX does not do, define
HAVE_WAIT3
.
Go to the first, previous, next, last section, table of contents.