/* config.in.  Generated automatically from configure.in by autoheader 2.13.  */

/* Define to empty if the keyword does not work.  */
#undef const

/* Define if you have a working `mmap' system call.  */
#undef HAVE_MMAP

/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
#undef HAVE_SYS_WAIT_H

/* Define if you have <vfork.h>.  */
#undef HAVE_VFORK_H

/* Define as __inline if that's what the C compiler calls it.  */
#undef inline

/* Define to `int' if <sys/types.h> doesn't define.  */
#undef pid_t

/* Define if you need to in order for stat and other things to work.  */
#undef _POSIX_SOURCE

/* Define if you have the ANSI C header files.  */
#undef STDC_HEADERS

/* Define if you can safely include both <sys/time.h> and <time.h>.  */
#undef TIME_WITH_SYS_TIME

/* Define vfork as fork if vfork does not work.  */
#undef vfork

/* Define if you have the _doprnt function.  */
#undef HAVE__DOPRNT

/* Define if you have the asprintf function.  */
#undef HAVE_ASPRINTF

/* Define if you have the atexit function.  */
#undef HAVE_ATEXIT

/* Define if you have the basename function.  */
#undef HAVE_BASENAME

/* Define if you have the bcmp function.  */
#undef HAVE_BCMP

/* Define if you have the bcopy function.  */
#undef HAVE_BCOPY

/* Define if you have the bsearch function.  */
#undef HAVE_BSEARCH

/* Define if you have the bzero function.  */
#undef HAVE_BZERO

/* Define if you have the calloc function.  */
#undef HAVE_CALLOC

/* Define if you have the clock function.  */
#undef HAVE_CLOCK

/* Define if you have the ffs function.  */
#undef HAVE_FFS

/* Define if you have the getcwd function.  */
#undef HAVE_GETCWD

/* Define if you have the getpagesize function.  */
#undef HAVE_GETPAGESIZE

/* Define if you have the getrusage function.  */
#undef HAVE_GETRUSAGE

/* Define if you have the gettimeofday function.  */
#undef HAVE_GETTIMEOFDAY

/* Define if you have the index function.  */
#undef HAVE_INDEX

/* Define if you have the insque function.  */
#undef HAVE_INSQUE

/* Define if you have the memchr function.  */
#undef HAVE_MEMCHR

/* Define if you have the memcmp function.  */
#undef HAVE_MEMCMP

/* Define if you have the memcpy function.  */
#undef HAVE_MEMCPY

/* Define if you have the memmove function.  */
#undef HAVE_MEMMOVE

/* Define if you have the memset function.  */
#undef HAVE_MEMSET

/* Define if you have the mkstemps function.  */
#undef HAVE_MKSTEMPS

/* Define if you have the on_exit function.  */
#undef HAVE_ON_EXIT

/* Define if you have the psignal function.  */
#undef HAVE_PSIGNAL

/* Define if you have the putenv function.  */
#undef HAVE_PUTENV

/* Define if you have the random function.  */
#undef HAVE_RANDOM

/* Define if you have the rename function.  */
#undef HAVE_RENAME

/* Define if you have the rindex function.  */
#undef HAVE_RINDEX

/* Define if you have the sbrk function.  */
#undef HAVE_SBRK

/* Define if you have the setenv function.  */
#undef HAVE_SETENV

/* Define if you have the sigsetmask function.  */
#undef HAVE_SIGSETMASK

/* Define if you have the strcasecmp function.  */
#undef HAVE_STRCASECMP

/* Define if you have the strchr function.  */
#undef HAVE_STRCHR

/* Define if you have the strdup function.  */
#undef HAVE_STRDUP

/* Define if you have the strerror function.  */
#undef HAVE_STRERROR

/* Define if you have the strncasecmp function.  */
#undef HAVE_STRNCASECMP

/* Define if you have the strrchr function.  */
#undef HAVE_STRRCHR

/* Define if you have the strsignal function.  */
#undef HAVE_STRSIGNAL

/* Define if you have the strstr function.  */
#undef HAVE_STRSTR

/* Define if you have the strtod function.  */
#undef HAVE_STRTOD

/* Define if you have the strtol function.  */
#undef HAVE_STRTOL

/* Define if you have the strtoul function.  */
#undef HAVE_STRTOUL

/* Define if you have the sysconf function.  */
#undef HAVE_SYSCONF

/* Define if you have the times function.  */
#undef HAVE_TIMES

/* Define if you have the tmpnam function.  */
#undef HAVE_TMPNAM

/* Define if you have the vasprintf function.  */
#undef HAVE_VASPRINTF

/* Define if you have the vfprintf function.  */
#undef HAVE_VFPRINTF

/* Define if you have the vprintf function.  */
#undef HAVE_VPRINTF

/* Define if you have the vsprintf function.  */
#undef HAVE_VSPRINTF

/* Define if you have the waitpid function.  */
#undef HAVE_WAITPID

/* Define if you have the <alloca.h> header file.  */
#undef HAVE_ALLOCA_H

/* Define if you have the <fcntl.h> header file.  */
#undef HAVE_FCNTL_H

/* Define if you have the <limits.h> header file.  */
#undef HAVE_LIMITS_H

/* Define if you have the <stdlib.h> header file.  */
#undef HAVE_STDLIB_H

/* Define if you have the <string.h> header file.  */
#undef HAVE_STRING_H

/* Define if you have the <strings.h> header file.  */
#undef HAVE_STRINGS_H

/* Define if you have the <sys/file.h> header file.  */
#undef HAVE_SYS_FILE_H

/* Define if you have the <sys/mman.h> header file.  */
#undef HAVE_SYS_MMAN_H

/* Define if you have the <sys/param.h> header file.  */
#undef HAVE_SYS_PARAM_H

/* Define if you have the <sys/resource.h> header file.  */
#undef HAVE_SYS_RESOURCE_H

/* Define if you have the <sys/stat.h> header file.  */
#undef HAVE_SYS_STAT_H

/* Define if you have the <sys/time.h> header file.  */
#undef HAVE_SYS_TIME_H

/* Define if you have the <time.h> header file.  */
#undef HAVE_TIME_H

/* Define if you have the <unistd.h> header file.  */
#undef HAVE_UNISTD_H

/* Define if errno must be declared even when <errno.h> is included. */
#undef NEED_DECLARATION_ERRNO

/* Define if you have the `uintptr_t' type. */
#undef HAVE_UINTPTR_T

/* Define if you have the sys_errlist variable. */
#undef HAVE_SYS_ERRLIST

/* Define if you have the sys_nerr variable. */
#undef HAVE_SYS_NERR

/* Define if you have the sys_siglist variable. */
#undef HAVE_SYS_SIGLIST

/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP
   systems. This function is required for alloca.c support on those
   systems. */
#undef CRAY_STACKSEG_END

/* Define if you know the direction of stack growth for your system;
   otherwise it will be automatically deduced at run-time.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION

