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

/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD

/* Directories from which to load auto-loaded scripts. */
#undef AUTO_LOAD_DIR

/* Directories safe to hold auto-loaded files. */
#undef AUTO_LOAD_SAFE_PATH

/* Directory of programs. */
#undef BINDIR

/* Define to 1 if the compiler supports long long. */
#undef CC_HAS_LONG_LONG

/* 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 to 1 if using `alloca.c'. */
#undef C_ALLOCA

/* look for global separate debug info in this path [LIBDIR/debug] */
#undef DEBUGDIR

/* Define if the separate-debug-dir directory should be relocated when GDB is
   moved. */
#undef DEBUGDIR_RELOCATABLE

/* Define to BFD's default architecture. */
#undef DEFAULT_BFD_ARCH

/* Define to BFD's default target vector. */
#undef DEFAULT_BFD_VEC

/* Define to 1 if translation of program messages to the user's native
   language is requested. */
#undef ENABLE_NLS

/* look for global separate data files in this path [DATADIR/gdb] */
#undef GDB_DATADIR

/* Define if the gdb-datadir directory should be relocated when GDB is moved.
   */
#undef GDB_DATADIR_RELOCATABLE

/* Define to be a string naming the default host character set. */
#undef GDB_DEFAULT_HOST_CHARSET

/* Host double floatformat */
#undef GDB_HOST_DOUBLE_FORMAT

/* Host float floatformat */
#undef GDB_HOST_FLOAT_FORMAT

/* Host long double floatformat */
#undef GDB_HOST_LONG_DOUBLE_FORMAT

/* nativefile */
#undef GDB_NM_FILE

/* Define to the default OS ABI for this configuration. */
#undef GDB_OSABI_DEFAULT

/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA

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

/* Define to 1 if you have the `btowc' function. */
#undef HAVE_BTOWC

/* Define to 1 if you have the `canonicalize_file_name' function. */
#undef HAVE_CANONICALIZE_FILE_NAME

/* Define to 1 if you have the <cursesX.h> header file. */
#undef HAVE_CURSESX_H

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

/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
   you don't. */
#undef HAVE_DECL_ADDR_NO_RANDOMIZE

/* Define to 1 if you have the declaration of `free', and to 0 if you don't.
   */
#undef HAVE_DECL_FREE

/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't.
   */
#undef HAVE_DECL_GETOPT

/* Define to 1 if you have the declaration of `getthrds', and to 0 if you
   don't. */
#undef HAVE_DECL_GETTHRDS

/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
   */
#undef HAVE_DECL_MALLOC

/* Define to 1 if you have the declaration of `ptrace', and to 0 if you don't.
   */
#undef HAVE_DECL_PTRACE

/* Define to 1 if you have the declaration of `realloc', and to 0 if you
   don't. */
#undef HAVE_DECL_REALLOC

/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_SNPRINTF

/* Define to 1 if you have the declaration of `strerror', and to 0 if you
   don't. */
#undef HAVE_DECL_STRERROR

/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
   */
#undef HAVE_DECL_STRSTR

/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_VSNPRINTF

/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
   */
#undef HAVE_DIRENT_H

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

/* Define if ELF support should be included. */
#undef HAVE_ELF

/* Define to 1 if you have the <elf_hp.h> header file. */
#undef HAVE_ELF_HP_H

/* Define to 1 if your system has the etext variable. */
#undef HAVE_ETEXT

/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK

/* Define if <sys/procfs.h> has fpregset_t. */
#undef HAVE_FPREGSET_T

/* Define to 1 if you have the `getgid' function. */
#undef HAVE_GETGID

/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE

/* Define to 1 if you have the `getrlimit' function. */
#undef HAVE_GETRLIMIT

/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE

/* Define to 1 if you have the `getuid' function. */
#undef HAVE_GETUID

/* Define if <sys/procfs.h> has gregset_t. */
#undef HAVE_GREGSET_T

/* Define if you have the iconv() function. */
#undef HAVE_ICONV

/* Define to 1 if you have the `iconvlist' function. */
#undef HAVE_ICONVLIST

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET

/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES

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

/* Define if you have the expat library. */
#undef HAVE_LIBEXPAT

/* Define to 1 if you have the `libiconvlist' function. */
#undef HAVE_LIBICONVLIST

/* Define if you have the lzma library. */
#undef HAVE_LIBLZMA

/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM

/* Define to 1 if you have the `mcheck' library (-lmcheck). */
#undef HAVE_LIBMCHECK

/* Define if Python 2.4 is being used. */
#undef HAVE_LIBPYTHON2_4

/* Define if Python 2.5 is being used. */
#undef HAVE_LIBPYTHON2_5

/* Define if Python 2.6 is being used. */
#undef HAVE_LIBPYTHON2_6

/* Define if Python 2.7 is being used. */
#undef HAVE_LIBPYTHON2_7

/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H

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

/* Define to 1 if you have the <link.h> header file. */
#undef HAVE_LINK_H

/* Define to 1 if you have the <linux/perf_event.h> header file. */
#undef HAVE_LINUX_PERF_EVENT_H

/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H

/* Define to 1 if the compiler supports long double. */
#undef HAVE_LONG_DOUBLE

/* Define to 1 if you have the `lstat' function. */
#undef HAVE_LSTAT

/* Define if <sys/procfs.h> has lwpid_t. */
#undef HAVE_LWPID_T

/* Define to 1 if you have the <machine/reg.h> header file. */
#undef HAVE_MACHINE_REG_H

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

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

/* Define to 1 if you have the `monstartup' function. */
#undef HAVE_MONSTARTUP

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

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

/* Define to 1 if you have the <ncurses/term.h> header file. */
#undef HAVE_NCURSES_TERM_H

/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H

/* Define to 1 if you have the <nlist.h> header file. */
#undef HAVE_NLIST_H

/* Define if you support the personality syscall. */
#undef HAVE_PERSONALITY

/* Define to 1 if you have the `pipe' function. */
#undef HAVE_PIPE

/* Define to 1 if you have the `poll' function. */
#undef HAVE_POLL

/* Define to 1 if you have the <poll.h> header file. */
#undef HAVE_POLL_H

/* Define to 1 if you have the `posix_madvise' function. */
#undef HAVE_POSIX_MADVISE

/* Define to 1 if you have the `pread' function. */
#undef HAVE_PREAD

/* Define to 1 if you have the `pread64' function. */
#undef HAVE_PREAD64

/* Define if <sys/procfs.h> has prfpregset32_t. */
#undef HAVE_PRFPREGSET32_T

/* Define if <sys/procfs.h> has prfpregset_t. */
#undef HAVE_PRFPREGSET_T

/* Define if <sys/procfs.h> has prgregset32_t. */
#undef HAVE_PRGREGSET32_T

/* Define if <sys/procfs.h> has prgregset_t. */
#undef HAVE_PRGREGSET_T

/* Define if ioctl argument PIOCSET is available. */
#undef HAVE_PROCFS_PIOCSET

/* Define to 1 if you have the <proc_service.h> header file. */
#undef HAVE_PROC_SERVICE_H

/* Define if <sys/procfs.h> has prrun_t. */
#undef HAVE_PRRUN_T

/* Define if <sys/procfs.h> has prsysent_t. */
#undef HAVE_PRSYSENT_T

/* Define if <sys/procfs.h> has pr_sigaction64_t. */
#undef HAVE_PR_SIGACTION64_T

/* Define if <sys/procfs.h> has pr_siginfo64_t. */
#undef HAVE_PR_SIGINFO64_T

/* Define if <sys/procfs.h> has pr_sigset_t. */
#undef HAVE_PR_SIGSET_T

/* Define if <sys/procfs.h> has psaddr_t. */
#undef HAVE_PSADDR_T

/* Define if <sys/procfs.h> has pstatus_t. */
#undef HAVE_PSTATUS_T

/* Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request. */
#undef HAVE_PTRACE_GETFPXREGS

/* Define if sys/ptrace.h defines the PTRACE_GETREGS request. */
#undef HAVE_PTRACE_GETREGS

/* Define to 1 if you have the <ptrace.h> header file. */
#undef HAVE_PTRACE_H

/* Define if sys/ptrace.h defines the PT_GETDBREGS request. */
#undef HAVE_PT_GETDBREGS

/* Define if sys/ptrace.h defines the PT_GETXMMREGS request. */
#undef HAVE_PT_GETXMMREGS

/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE

/* Define if Python interpreter is being linked in. */
#undef HAVE_PYTHON

/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK

/* Define to 1 if you have the `realpath' function. */
#undef HAVE_REALPATH

/* Define to 1 if you have the `resize_term' function. */
#undef HAVE_RESIZE_TERM

/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK

/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE

/* Define to 1 if you have the `setpgid' function. */
#undef HAVE_SETPGID

/* Define to 1 if you have the `setpgrp' function. */
#undef HAVE_SETPGRP

/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT

/* Define to 1 if you have the `setsid' function. */
#undef HAVE_SETSID

/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H

/* Define to 1 if you have the `sigaction' function. */
#undef HAVE_SIGACTION

/* Define to 1 if you have the <signal.h> header file. */
#undef HAVE_SIGNAL_H

/* Define to 1 if you have the `sigprocmask' function. */
#undef HAVE_SIGPROCMASK

/* Define if sigsetjmp is available. */
#undef HAVE_SIGSETJMP

/* Define to 1 if you have the `sigsetmask' function. */
#undef HAVE_SIGSETMASK

/* Define to 1 if you have the `socketpair' function. */
#undef HAVE_SOCKETPAIR

/* Define to 1 if the system has the type `socklen_t'. */
#undef HAVE_SOCKLEN_T

/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

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

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

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

/* Define if <sys/link.h> has struct link_map32 */
#undef HAVE_STRUCT_LINK_MAP32

/* Define if <link.h> exists and defines struct link_map which has members
   with an ``lm_'' prefix. (For SunOS.) */
#undef HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS

/* Define if <link.h> exists and defines struct link_map which has members
   with an ``l_'' prefix. (For Solaris, SVR4, and SVR4-like systems.) */
#undef HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS

/* Define to 1 if your system has struct lwp. */
#undef HAVE_STRUCT_LWP

/* Define to 1 if your system has struct reg in <machine/reg.h>. */
#undef HAVE_STRUCT_REG

/* Define to 1 if `struct reg' is a member of `r_fs'. */
#undef HAVE_STRUCT_REG_R_FS

/* Define to 1 if `struct reg' is a member of `r_gs'. */
#undef HAVE_STRUCT_REG_R_GS

/* Define if <link.h> exists and defines a struct so_map which has members
   with an ``som_'' prefix. (Found on older *BSD systems.) */
#undef HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS

/* Define to 1 if `struct stat' is a member of `st_blksize'. */
#undef HAVE_STRUCT_STAT_ST_BLKSIZE

/* Define to 1 if `struct stat' is a member of `st_blocks'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS

/* Define to 1 if `struct thread' is a member of `td_pcb'. */
#undef HAVE_STRUCT_THREAD_TD_PCB

/* Define to 1 if `struct user_regs_struct' is a member of `fs_base'. */
#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE

/* Define to 1 if `struct user_regs_struct' is a member of `gs_base'. */
#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE

/* Define to 1 if you have the `syscall' function. */
#undef HAVE_SYSCALL

/* Define to 1 if you have the <sys/debugreg.h> header file. */
#undef HAVE_SYS_DEBUGREG_H

/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
   */
#undef HAVE_SYS_DIR_H

/* Define to 1 if you have the <sys/fault.h> header file. */
#undef HAVE_SYS_FAULT_H

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

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

/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H

/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
   */
#undef HAVE_SYS_NDIR_H

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

/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H

/* Define to 1 if you have the <sys/procfs.h> header file. */
#undef HAVE_SYS_PROCFS_H

/* Define to 1 if you have the <sys/proc.h> header file. */
#undef HAVE_SYS_PROC_H

/* Define to 1 if you have the <sys/ptrace.h> header file. */
#undef HAVE_SYS_PTRACE_H

/* Define to 1 if you have the <sys/reg.h> header file. */
#undef HAVE_SYS_REG_H

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

/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H

/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H

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

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

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H

/* Define to 1 if you have the <sys/user.h> header file. */
#undef HAVE_SYS_USER_H

/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H

/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H

/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define to 1 if you have the <term.h> header file. */
#undef HAVE_TERM_H

/* Define to 1 if you have the <thread_db.h> header file. */
#undef HAVE_THREAD_DB_H

/* Define if using Solaris thread debugging. */
#undef HAVE_THREAD_DB_LIB

/* Define if you support the tkill syscall. */
#undef HAVE_TKILL_SYSCALL

/* Define to 1 if you have the `ttrace' function. */
#undef HAVE_TTRACE

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

/* Define to 1 if you have the `vfork' function. */
#undef HAVE_VFORK

/* Define to 1 if you have the <vfork.h> header file. */
#undef HAVE_VFORK_H

/* Define to 1 if you have the `waitpid' function. */
#undef HAVE_WAITPID

/* Define to 1 if you have the <wait.h> header file. */
#undef HAVE_WAIT_H

/* Define to 1 if you have the `wborder' function. */
#undef HAVE_WBORDER

/* Define to 1 if `fork' works. */
#undef HAVE_WORKING_FORK

/* Define to 1 if `vfork' works. */
#undef HAVE_WORKING_VFORK

/* Define to 1 if you have the `wresize' function. */
#undef HAVE_WRESIZE

/* Define to 1 if you have the `XML_StopParser' function. */
#undef HAVE_XML_STOPPARSER

/* Define to 1 if you have the <zlib.h> header file. */
#undef HAVE_ZLIB_H

/* Define to 1 if your system has the _etext variable. */
#undef HAVE__ETEXT

/* Define to 1 if you have the `_mcleanup' function. */
#undef HAVE__MCLEANUP

/* Path of directory of iconv program. */
#undef ICONV_BIN

/* Define if the iconv directory should be relocated when GDB is moved. */
#undef ICONV_BIN_RELOCATABLE

/* Define as const if the declaration of iconv() needs const. */
#undef ICONV_CONST

/* directory to load the JIT readers from */
#undef JIT_READER_DIR

/* Define if the jit-reader-dir directory should be relocated when GDB is
   moved. */
#undef JIT_READER_DIR_RELOCATABLE

/* Define if you want to use new multi-fd /proc interface (replaces
   HAVE_MULTIPLE_PROC_FDS as well as other macros). */
#undef NEW_PROC_API

/* Name of this package. */
#undef PACKAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* Additional package description */
#undef PKGVERSION

/* Define if the prfpregset_t type is broken. */
#undef PRFPREGSET_T_BROKEN

/* Define to 1 if the "%H, %D and %DD" formats work to print decfloats. */
#undef PRINTF_HAS_DECFLOAT

/* Define to 1 if the "%Lg" format works to print long doubles. */
#undef PRINTF_HAS_LONG_DOUBLE

/* Define to 1 if the "%ll" format works to print long longs. */
#undef PRINTF_HAS_LONG_LONG

/* Define if <proc_service.h> on solaris uses int instead of size_t, and
   assorted other type changes. */
#undef PROC_SERVICE_IS_OLD

/* Define to the type of arg 3 for ptrace. */
#undef PTRACE_TYPE_ARG3

/* Define to the type of arg 5 for ptrace. */
#undef PTRACE_TYPE_ARG5

/* Define as the return type of ptrace. */
#undef PTRACE_TYPE_RET

/* Define if the python directory should be relocated when GDB is moved. */
#undef PYTHON_PATH_RELOCATABLE

/* Relocated directory for source files. */
#undef RELOC_SRCDIR

/* Bug reporting address */
#undef REPORT_BUGS_TO

/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE

/* Define to 1 if the "%Lg" format works to scan long doubles. */
#undef SCANF_HAS_LONG_DOUBLE

/* Define to 1 if the `setpgrp' function takes no argument. */
#undef SETPGRP_VOID

/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG

/* The size of `unsigned long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG

/* The size of `unsigned long long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG_LONG

/* The size of `unsigned __int128', as computed by sizeof. */
#undef SIZEOF_UNSIGNED___INT128

/* 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 runtime.
	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 to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* automatically load a system-wide gdbinit file */
#undef SYSTEM_GDBINIT

/* Define if the system-gdbinit directory should be relocated when GDB is
   moved. */
#undef SYSTEM_GDBINIT_RELOCATABLE

/* search for usr/lib et al within DIR */
#undef TARGET_SYSTEM_ROOT

/* Define if the sysroot directory should be relocated when GDB is moved. */
#undef TARGET_SYSTEM_ROOT_RELOCATABLE

/* Define if <thread_db.h> has the TD_NOTALLOC error code. */
#undef THREAD_DB_HAS_TD_NOTALLOC

/* Define if <thread_db.h> has the TD_NOTLS error code. */
#undef THREAD_DB_HAS_TD_NOTLS

/* Define if <thread_db.h> has the TD_VERSION error code. */
#undef THREAD_DB_HAS_TD_VERSION

/* Define to 1 if the regex included in libiberty should be used. */
#undef USE_INCLUDED_REGEX

/* Enable extensions on AIX 3, Interix.  */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
/* Enable GNU extensions on systems that have them.  */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable threading extensions on Solaris.  */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions on HP NonStop.  */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable general extensions on Solaris.  */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif


/* Define if we should use the Windows API, instead of the POSIX API. On
   Windows, we use the Windows API when building for MinGW, but the POSIX API
   when building for Cygwin. */
#undef USE_WIN32API

/* Define if --with-python provides a path, either directly or via
   python-config.py --exec-prefix. */
#undef WITH_PYTHON_PATH

/* Define if the simulator is being linked in. */
#undef WITH_SIM

/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
   significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
#  define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
#  undef WORDS_BIGENDIAN
# endif
#endif

/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS

/* Define to 1 so <sys/proc.h> gets a definition of anon_hdl. Works around a
   <sys/proc.h> problem on IRIX 5. */
#undef _KMEMUSER

/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES

/* Define to 1 if on MINIX. */
#undef _MINIX

/* Define to 1 to avoid a clash between <widec.h> and <wchar.h> on Solaris
   2.[789] when using GCC. */
#undef _MSE_INT_H

/* Define to 2 if the system does not provide POSIX.1 features except with
   this defined. */
#undef _POSIX_1_SOURCE

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

/* Define if <sys/link.h> has link_map32 (solaris sparc-64 target) */
#undef _SYSCALL32

/* Define to empty if `const' does not conform to ANSI C. */
#undef const

/* Define to `__inline__' or `__inline' if that's what the C compiler
   calls it, or to nothing if 'inline' is not supported under any name.  */
#ifndef __cplusplus
#undef inline
#endif

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

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