Copyright (C) 2000-2012 |
GNU Info (autoconf.info)Particular FunctionsParticular Function Checks -------------------------- These macros check for particular C functions--whether they exist, and in some cases how they respond when given certain arguments. - Macro: AC_FUNC_ALLOCA Check how to get `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 - Macro: AC_FUNC_CHOWN If the `chown' function is available and works (in particular, it should accept `-1' for `uid' and `gid'), define `HAVE_CHOWN'. - Macro: AC_FUNC_CLOSEDIR_VOID If the `closedir' function does not return a meaningful value, define `CLOSEDIR_VOID'. Otherwise, callers ought to check its return value for an error indicator. - Macro: AC_FUNC_ERROR_AT_LINE If the `error_at_line' function is not found, require an `AC_LIBOBJ' replacement of `error'. - Macro: AC_FUNC_FNMATCH If the `fnmatch' function is available and works (unlike the one on Solaris 2.4), define `HAVE_FNMATCH'. - Macro: AC_FUNC_FORK This macro checks for the `fork' and `vfork' functions. If a working `fork' is found, define `HAVE_WORKING_FORK'. This macro checks whether `fork' is just a stub by trying to run it. If `vfork.h' is found, define `HAVE_VFORK_H'. If a working `vfork' is found, define `HAVE_WORKING_VFORK'. Otherwise, define `vfork' to be `fork' for backward compatibility with previous versions of `autoconf'. 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. Since this macro defines `vfork' only for backward compatibility with previous versions of `autoconf' you're encouraged to define it yourself in new code: #if !HAVE_WORKING_VFORK # define vfork fork #endif - Macro: AC_FUNC_FSEEKO If the `fseeko' function is available, define `HAVE_FSEEKO'. Define `_LARGEFILE_SOURCE' if necessary. - Macro: AC_FUNC_GETGROUPS If the `getgroups' function is available and works (unlike on Ultrix 4.3, where `getgroups (0, 0)' always fails), define `HAVE_GETGROUPS'. Set `GETGROUPS_LIBS' to any libraries needed to get that function. This macro runs `AC_TYPE_GETGROUPS'. - Macro: AC_FUNC_GETLOADAVG Check how to get the system load averages. If the system has the `getloadavg' function, define `HAVE_GETLOADAVG', and set `GETLOADAVG_LIBS' to any libraries needed to get that function. Also add `GETLOADAVG_LIBS' to `LIBS'. Otherwise, require an `AC_LIBOBJ' replacement (`getloadavg.c') of `getloadavg', and possibly define several other C preprocessor macros and output variables: 1. Define `C_GETLOADAVG'. 2. Define `SVR4', `DGUX', `UMAX', or `UMAX4_3' if on those systems. 3. If `nlist.h' is found, define `NLIST_STRUCT'. 4. If `struct nlist' has an `n_un.n_name' member, define `HAVE_STRUCT_NLIST_N_UN_N_NAME'. The obsolete symbol `NLIST_NAME_UNION' is still defined, but do not depend upon it. 5. Programs may need to be installed setgid (or setuid) for `getloadavg' to work. In this case, define `GETLOADAVG_PRIVILEGED', set the output variable `NEED_SETGID' to `true' (and otherwise to `false'), and set `KMEM_GROUP' to the name of the group that should own the installed program. - Macro: AC_FUNC_GETMNTENT Check for `getmntent' in the `sun', `seq', and `gen' libraries, for Irix 4, PTX, and Unixware, respectively. Then, if `getmntent' is available, define `HAVE_GETMNTENT'. - Macro: AC_FUNC_GETPGRP Define `GETPGRP_VOID' if it is an error to pass 0 to `getpgrp'; this is the POSIX.1 behavior. On older BSD systems, you must pass 0 to `getpgrp', as it takes an argument and behaves like POSIX.1's `getpgid'. #if GETPGRP_VOID pid = getpgrp (); #else pid = getpgrp (0); #endif 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'. - Macro: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK If `link' is a symbolic link, then `lstat' should treat `link/' the same as `link/.'. However, many older `lstat' implementations incorrectly ignore trailing slashes. It is safe to assume that if `lstat' incorrectly ignores trailing slashes, then other symbolic-link-aware functions like `unlink' and `unlink' also incorrectly ignore trailing slashes. If `lstat' behaves properly, define `LSTAT_FOLLOWS_SLASHED_SYMLINK', otherwise require an `AC_LIBOBJ' replacement of `lstat'. - Macro: AC_FUNC_MALLOC If the `malloc' works correctly (`malloc (0)' returns a valid pointer), define `HAVE_MALLOC'. - Macro: AC_FUNC_MEMCMP If the `memcmp' function is not available, or does not work on 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary (such as the one on NeXT x86 OpenStep), require an `AC_LIBOBJ' replacement for `memcmp'. - Macro: AC_FUNC_MKTIME If the `mktime' function is not available, or does not work correctly, require an `AC_LIBOBJ' replacement for `mktime'. - Macro: AC_FUNC_MMAP If the `mmap' function exists and works correctly, define `HAVE_MMAP'. Only checks private fixed mapping of already-mapped memory. - Macro: AC_FUNC_OBSTACK If the obstacks are found, define `HAVE_OBSTACK', else require an `AC_LIBOBJ' replacement for `obstack'. - Macro: AC_FUNC_SELECT_ARGTYPES Determines the correct type to be passed for each of the `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 *'. - Macro: AC_FUNC_SETPGRP If `setpgrp' takes no argument (the POSIX.1 version), define `SETPGRP_VOID'. Otherwise, it is the BSD version, which takes two process IDs 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'. - Macro: AC_FUNC_STAT - Macro: AC_FUNC_LSTAT Determine whether `stat' or `lstat' have the bug that it succeeds when given the zero-length file name argument. The `stat' and `lstat' from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do this. If it does, then define `HAVE_STAT_EMPTY_STRING_BUG' (or `HAVE_LSTAT_EMPTY_STRING_BUG') and ask for an `AC_LIBOBJ' replacement of it. - Macro: AC_FUNC_SETVBUF_REVERSED If `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'. - Macro: AC_FUNC_STRCOLL If the `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' that should not be used. - Macro: AC_FUNC_STRTOD If the `strtod' function does not exist or doesn't work correctly, ask for an `AC_LIBOBJ' replacement of `strtod'. In this case, because `strtod.c' is likely to need `pow', set the output variable `POW_LIB' to the extra library needed. - Macro: AC_FUNC_STRERROR_R If `strerror_r' is available, define `HAVE_STRERROR_R', and if it is declared, define `HAVE_DECL_STRERROR_R'. If it returns a `char *' message, define `STRERROR_R_CHAR_P'; otherwise it returns an `int' error number. The Thread-Safe Functions option of POSIX-200X requires `strerror_r' to return `int', but many systems (including, for example, version 2.2.4 of the GNU C Library) return a `char *' value that is not necessarily equal to the buffer argument. - Macro: AC_FUNC_STRFTIME Check for `strftime' in the `intl' library, for SCO UNIX. Then, if `strftime' is available, define `HAVE_STRFTIME'. - Macro: AC_FUNC_STRNLEN Check for a working `strnlen', and ask for its replacement. Some architectures are know to provide broken versions of `strnlen', such as AIX 4.3. - Macro: AC_FUNC_UTIME_NULL If `utime(FILE, NULL)' sets FILE's timestamp to the present, define `HAVE_UTIME_NULL'. - Macro: AC_FUNC_VPRINTF If `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.) automatically generated by info2www version 1.2.2.9 |