GNU Info

Info Node: (autoconf.info)Particular Functions

(autoconf.info)Particular Functions


Next: Generic Functions Prev: Library Functions Up: Library Functions
Enter node , (file) or (file)node

Particular 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_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_FNMATCH
     If the `fnmatch' function is available and works (unlike the one on
     SunOS 5.4), define `HAVE_FNMATCH'.

 - Macro: AC_FUNC_GETLOADAVG
     Check how to get the system load averages.  If the system has the
     `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:

       1. It defines `SVR4', `DGUX', `UMAX', or `UMAX4_3' if on those
          systems.

       2. If it finds `nlist.h', it defines `NLIST_STRUCT'.

       3. If `struct nlist' has an `n_un' member, it defines
          `NLIST_NAME_UNION'.

       4. If compiling `getloadavg.c' defines `LDAV_PRIVILEGED',
          programs need to be installed specially on this system for
          `getloadavg' to work, and this macro defines
          `GETLOADAVG_PRIVILEGED'.

       5. This macro sets the output variable `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.

 - 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
     If `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'.

 - 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), add `memcmp.o' to output
     variable `LIBOBJS'.

 - 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_SELECT_ARGTYPES
     Determines the correct type to be passed to 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 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'.

 - 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'.  This is the case on System V before
     release 3.

 - 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', which should not be used.

 - 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_UTIME_NULL
     If `utime(FILE, NULL)' sets FILE's timestamp to the present,
     define `HAVE_UTIME_NULL'.

 - Macro: AC_FUNC_VFORK
     If `vfork.h' is found, define `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.

 - 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.)

 - Macro: AC_FUNC_WAIT3
     If `wait3' is found and fills in the contents of its third argument
     (a `struct rusage *'), which HP-UX does not do, define
     `HAVE_WAIT3'.


automatically generated by info2www version 1.2.2.9