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

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

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

/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
#undef STAT_MACROS_BROKEN

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

/* Define if the X Window System is missing or not being used.  */
#undef X_DISPLAY_MISSING

/* Define if symbols declared in assembly code need an underscore prefix */
#undef NEED_UNDERSCORE_PREFIX

/* Define to use .string instead of .ascii */
#undef HAVE_ASM_STRING

/* Define if struct msghdr contains msg_accrights */
#undef HAVE_MSGHDR_ACCRIGHTS

/* Define if you have the Xxf86dga library (-lXxf86dga).  */
#undef HAVE_LIBXXF86DGA

/* Define if you have the X Shm extension */
#undef HAVE_LIBXXSHM

/* Define if you have the Xxf86vm library */
#undef HAVE_LIBXXF86VM

/* Define if you have the Xpm library */
#undef HAVE_LIBXXPM

/* Define if you have the Open Sound system.  */
#undef HAVE_OSS

/* Define if X libraries are not reentrant (compiled without -D_REENTRANT).  */
#undef NO_REENTRANT_X11

/* Define if libc is not reentrant  */
#undef NO_REENTRANT_LIBC

/* Define if libc uses __errno_location for reentrant errno */
#undef HAVE__ERRNO_LOCATION

/* Define if libc uses __error for reentrant errno */
#undef HAVE__ERROR

/* Define if libc uses ___errno for reentrant errno */
#undef HAVE___ERRNO

/* Define if all debug messages are to be compiled out */
#undef NO_DEBUG_MSGS

/* Define if TRACE messages are to be compiled out */
#undef NO_TRACE_MSGS

/* Define if the struct statfs has the member bavail */
#undef STATFS_HAS_BAVAIL

/* Define if the struct statfs has the member bfree */
#undef STATFS_HAS_BFREE

/* Define if we have a working sigaltstack */
#undef HAVE_WORKING_SIGALTSTACK

/* Define if the struct statfs is defined by <sys/vfs.h> */
#undef STATFS_DEFINED_BY_SYS_VFS

/* Define if the struct statfs is defined by <sys/statfs.h> */
#undef STATFS_DEFINED_BY_SYS_STATFS

/* Define if the struct statfs is defined by <sys/mount.h> */
#undef STATFS_DEFINED_BY_SYS_MOUNT

/* Define if ncurses have the new resizeterm function */
#undef HAVE_RESIZETERM

/* Define if ncurses have the new getbkgd function */
#undef HAVE_GETBKGD

/* Define if IPX should use netipx/ipx.h from libc */
#undef HAVE_IPX_GNU

/* Define if IPX includes are taken from Linux kernel */
#undef HAVE_IPX_LINUX

/* Define if Mesa is present on the system or not */
#undef HAVE_LIBMESAGL

/* The number of bytes in a long long.  */
#undef SIZEOF_LONG_LONG

/* Define if you have the _lwp_create function.  */
#undef HAVE__LWP_CREATE

/* Define if you have the clone function.  */
#undef HAVE_CLONE

/* Define if you have the connect function.  */
#undef HAVE_CONNECT

/* Define if you have the gethostbyname function.  */
#undef HAVE_GETHOSTBYNAME

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

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

/* Define if you have the rfork function.  */
#undef HAVE_RFORK

/* Define if you have the sendmsg function.  */
#undef HAVE_SENDMSG

/* Define if you have the sigaltstack function.  */
#undef HAVE_SIGALTSTACK

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

/* Define if you have the stricmp function.  */
#undef HAVE_STRICMP

/* Define if you have the tcgetattr function.  */
#undef HAVE_TCGETATTR

/* Define if you have the timegm function.  */
#undef HAVE_TIMEGM

/* Define if you have the usleep function.  */
#undef HAVE_USLEEP

/* Define if you have the vfscanf function.  */
#undef HAVE_VFSCANF

/* Define if you have the wait4 function.  */
#undef HAVE_WAIT4

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

/* Define if you have the <GL/gl.h> header file.  */
#undef HAVE_GL_GL_H

/* Define if you have the <GL/osmesa.h> header file.  */
#undef HAVE_GL_OSMESA_H

/* Define if you have the <X11/Xlib.h> header file.  */
#undef HAVE_X11_XLIB_H

/* Define if you have the <X11/extensions/XShm.h> header file.  */
#undef HAVE_X11_EXTENSIONS_XSHM_H

/* Define if you have the <X11/extensions/xf86dga.h> header file.  */
#undef HAVE_X11_EXTENSIONS_XF86DGA_H

/* Define if you have the <X11/extensions/xf86vmode.h> header file.  */
#undef HAVE_X11_EXTENSIONS_XF86VMODE_H

/* Define if you have the <X11/xpm.h> header file.  */
#undef HAVE_X11_XPM_H

/* Define if you have the <arpa/nameser.h> header file.  */
#undef HAVE_ARPA_NAMESER_H

/* Define if you have the <curses.h> header file.  */
#undef HAVE_CURSES_H

/* Define if you have the <dlfcn.h> header file.  */
#undef HAVE_DLFCN_H

/* Define if you have the <elf.h> header file.  */
#undef HAVE_ELF_H

/* Define if you have the <float.h> header file.  */
#undef HAVE_FLOAT_H

/* Define if you have the <libio.h> header file.  */
#undef HAVE_LIBIO_H

/* Define if you have the <linux/cdrom.h> header file.  */
#undef HAVE_LINUX_CDROM_H

/* Define if you have the <linux/ucdrom.h> header file.  */
#undef HAVE_LINUX_UCDROM_H

/* Define if you have the <machine/soundcard.h> header file.  */
#undef HAVE_MACHINE_SOUNDCARD_H

/* Define if you have the <ncurses.h> header file.  */
#undef HAVE_NCURSES_H

/* Define if you have the <net/if.h> header file.  */
#undef HAVE_NET_IF_H

/* Define if you have the <netinet/in.h> header file.  */
#undef HAVE_NETINET_IN_H

/* Define if you have the <resolv.h> header file.  */
#undef HAVE_RESOLV_H

/* Define if you have the <soundcard.h> header file.  */
#undef HAVE_SOUNDCARD_H

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Define if you have the <syscall.h> header file.  */
#undef HAVE_SYSCALL_H

/* Define if you have the <ucontext.h> header file.  */
#undef HAVE_UCONTEXT_H

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

/* Define if you have the <wctype.h> header file.  */
#undef HAVE_WCTYPE_H

/* Define if you have the curses library (-lcurses).  */
#undef HAVE_LIBCURSES

/* Define if you have the dl library (-ldl).  */
#undef HAVE_LIBDL

/* Define if you have the i386 library (-li386).  */
#undef HAVE_LIBI386

/* Define if you have the ncurses library (-lncurses).  */
#undef HAVE_LIBNCURSES

/* Define if you have the nsl library (-lnsl).  */
#undef HAVE_LIBNSL

/* Define if you have the ossaudio library (-lossaudio).  */
#undef HAVE_LIBOSSAUDIO

/* Define if you have the socket library (-lsocket).  */
#undef HAVE_LIBSOCKET

/* Define if you have the w library (-lw).  */
#undef HAVE_LIBW

/* Define if you have the xpg4 library (-lxpg4).  */
#undef HAVE_LIBXPG4
