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

/* Define if using AIX 5.2 value for C_WEAKEXT. */
#undef AIX_WEAK_SUPPORT

/* assert broken? */
#undef BROKEN_ASSERT

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

/* Compiling cross-assembler? */
#undef CROSS_COMPILE

/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA

/* Default architecture. */
#undef DEFAULT_ARCH

/* Default CRIS architecture. */
#undef DEFAULT_CRIS_ARCH

/* Default emulation. */
#undef DEFAULT_EMULATION

/* Supported emulations. */
#undef EMULATIONS

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

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

/* Is the prototype for getopt in <unistd.h> in the expected format? */
#undef HAVE_DECL_GETOPT

/* 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 <errno.h> header file. */
#undef HAVE_ERRNO_H

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

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

/* Define to 1 if you have the `remove' function. */
#undef HAVE_REMOVE

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

/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_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 to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_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 <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to 1 if you have the `unlink' function. */
#undef HAVE_UNLINK

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

/* Using i386 COFF? */
#undef I386COFF

/* Using m68k COFF? */
#undef M68KCOFF

/* Using m88k COFF? */
#undef M88KCOFF

/* Default CPU for MIPS targets. */
#undef MIPS_CPU_STRING_DEFAULT

/* Generate 64-bit code by default on MIPS targets. */
#undef MIPS_DEFAULT_64BIT

/* Choose a default ABI for MIPS targets. */
#undef MIPS_DEFAULT_ABI

/* Define if environ is not declared in system header files. */
#undef NEED_DECLARATION_ENVIRON

/* Define if errno is not declared in system header files. */
#undef NEED_DECLARATION_ERRNO

/* Define if ffs is not declared in system header files. */
#undef NEED_DECLARATION_FFS

/* Define if free is not declared in system header files. */
#undef NEED_DECLARATION_FREE

/* Define if malloc is not declared in system header files. */
#undef NEED_DECLARATION_MALLOC

/* Define if sbrk is not declared in system header files. */
#undef NEED_DECLARATION_SBRK

/* Define if strstr is not declared in system header files. */
#undef NEED_DECLARATION_STRSTR

/* a.out support? */
#undef OBJ_MAYBE_AOUT

/* b.out support? */
#undef OBJ_MAYBE_BOUT

/* COFF support? */
#undef OBJ_MAYBE_COFF

/* ECOFF support? */
#undef OBJ_MAYBE_ECOFF

/* ELF support? */
#undef OBJ_MAYBE_ELF

/* generic support? */
#undef OBJ_MAYBE_GENERIC

/* SOM support? */
#undef OBJ_MAYBE_SOM

/* Name of 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 version of this package. */
#undef PACKAGE_VERSION

/* Define if defaulting to ELF on SCO 5. */
#undef SCO_ELF

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

/* Using strict COFF? */
#undef STRICTCOFF

/* Target alias. */
#undef TARGET_ALIAS

/* Define as 1 if big endian. */
#undef TARGET_BYTES_BIG_ENDIAN

/* Canonical target. */
#undef TARGET_CANONICAL

/* Target CPU. */
#undef TARGET_CPU

/* Target OS. */
#undef TARGET_OS

/* Define if default target is PowerPC Solaris. */
#undef TARGET_SOLARIS_COMMENT

/* Define if target is Symbian OS. */
#undef TARGET_SYMBIAN

/* Target vendor. */
#undef TARGET_VENDOR

/* Use emulation support? */
#undef USE_EMULATIONS

/* Allow use of E_MIPS_ABI_O32 on MIPS targets. */
#undef USE_E_MIPS_ABI_O32

/* Using cgen code? */
#undef USING_CGEN

/* Version number of package */
#undef VERSION

/* Define to 1 if your processor stores words with the most significant byte
   first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN

/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
   `char[]'. */
#undef YYTEXT_POINTER

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