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

/* Define if using alloca.c.  */
#undef C_ALLOCA

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

/* 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 have alloca, as a function or macro.  */
#undef HAVE_ALLOCA

/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
#undef HAVE_ALLOCA_H

/* 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

/* If using the C implementation of alloca, 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

/* 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 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 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 <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 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

