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

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

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

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

/* Define if the system has dynamic link library support with the dl* API */
#undef HAVE_DL_API

/* 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 dlopen function.  */
#undef HAVE_DLOPEN

/* 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 i386 library (-li386).  */
#undef HAVE_LIBI386

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

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

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

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