/* include/llvm/Config/config.h.in.  Generated from autoconf/configure.ac by autoheader.  */

#ifndef CONFIG_H
#define CONFIG_H

/* Bug report URL. */
#undef BUG_REPORT_URL

/* Relative directory for resource files */
#undef CLANG_RESOURCE_DIR

/* 32 bit multilib directory. */
#undef CXX_INCLUDE_32BIT_DIR

/* 64 bit multilib directory. */
#undef CXX_INCLUDE_64BIT_DIR

/* Arch the libstdc++ headers. */
#undef CXX_INCLUDE_ARCH

/* Directory with the libstdc++ headers. */
#undef CXX_INCLUDE_ROOT

/* Directories clang will search for headers */
#undef C_INCLUDE_DIRS

/* Define if CBE is enabled for printf %a output */
#undef ENABLE_CBE_PRINTF_A

/* Define if position independent code is enabled */
#undef ENABLE_PIC

/* Define if threads enabled */
#undef ENABLE_THREADS

/* Define if timestamp information (e.g., __DATE___) is allowed */
#undef ENABLE_TIMESTAMPS

/* Define to 1 if you have the `argz_append' function. */
#undef HAVE_ARGZ_APPEND

/* Define to 1 if you have the `argz_create_sep' function. */
#undef HAVE_ARGZ_CREATE_SEP

/* Define to 1 if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H

/* Define to 1 if you have the `argz_insert' function. */
#undef HAVE_ARGZ_INSERT

/* Define to 1 if you have the `argz_next' function. */
#undef HAVE_ARGZ_NEXT

/* Define to 1 if you have the `argz_stringify' function. */
#undef HAVE_ARGZ_STRINGIFY

/* Define to 1 if you have the <assert.h> header file. */
#undef HAVE_ASSERT_H

/* Define to 1 if you have the `backtrace' function. */
#undef HAVE_BACKTRACE

/* Define to 1 if you have the `bcopy' function. */
#undef HAVE_BCOPY

/* Define to 1 if you have the `ceilf' function. */
#undef HAVE_CEILF

/* Define if the neat program is available */
#undef HAVE_CIRCO

/* Define to 1 if you have the `closedir' function. */
#undef HAVE_CLOSEDIR

/* Define to 1 if you have the <CrashReporterClient.h> header file. */
#undef HAVE_CRASHREPORTERCLIENT_H

/* Define if __crashreporter_info__ exists. */
#undef HAVE_CRASHREPORTER_INFO

/* Define to 1 if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H

/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
   don't. */
#undef HAVE_DECL_STRERROR_S

/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
   */
#undef HAVE_DIRENT_H

/* Define if you have the GNU dld library. */
#undef HAVE_DLD

/* Define to 1 if you have the <dld.h> header file. */
#undef HAVE_DLD_H

/* Define to 1 if you have the `dlerror' function. */
#undef HAVE_DLERROR

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* Define if dlopen() is available on this platform. */
#undef HAVE_DLOPEN

/* Define to 1 if you have the <dl.h> header file. */
#undef HAVE_DL_H

/* Define if the dot program is available */
#undef HAVE_DOT

/* Define if the dotty program is available */
#undef HAVE_DOTTY

/* Define if you have the _dyld_func_lookup function. */
#undef HAVE_DYLD

/* Define to 1 if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H

/* Define to 1 if the system has the type `error_t'. */
#undef HAVE_ERROR_T

/* Define to 1 if you have the <execinfo.h> header file. */
#undef HAVE_EXECINFO_H

/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H

/* Define if the neat program is available */
#undef HAVE_FDP

/* Define to 1 if you have the <fenv.h> header file. */
#undef HAVE_FENV_H

/* Define if libffi is available on this platform. */
#undef HAVE_FFI_CALL

/* Define to 1 if you have the <ffi/ffi.h> header file. */
#undef HAVE_FFI_FFI_H

/* Define to 1 if you have the <ffi.h> header file. */
#undef HAVE_FFI_H

/* Set to 1 if the finite function is found in <ieeefp.h> */
#undef HAVE_FINITE_IN_IEEEFP_H

/* Define to 1 if you have the `floorf' function. */
#undef HAVE_FLOORF

/* Define to 1 if you have the `fmodf' function. */
#undef HAVE_FMODF

/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD

/* 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 `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY

/* Define if the Graphviz program is available */
#undef HAVE_GRAPHVIZ

/* Define if the gv program is available */
#undef HAVE_GV

/* Define to 1 if you have the `index' function. */
#undef HAVE_INDEX

/* Define to 1 if the system has the type `int64_t'. */
#undef HAVE_INT64_T

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define to 1 if you have the `isatty' function. */
#undef HAVE_ISATTY

/* Set to 1 if the isinf function is found in <cmath> */
#undef HAVE_ISINF_IN_CMATH

/* Set to 1 if the isinf function is found in <math.h> */
#undef HAVE_ISINF_IN_MATH_H

/* Set to 1 if the isnan function is found in <cmath> */
#undef HAVE_ISNAN_IN_CMATH

/* Set to 1 if the isnan function is found in <math.h> */
#undef HAVE_ISNAN_IN_MATH_H

/* Define if you have the libdl library or equivalent. */
#undef HAVE_LIBDL

/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
#undef HAVE_LIBIMAGEHLP

/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM

/* Define to 1 if you have the `psapi' library (-lpsapi). */
#undef HAVE_LIBPSAPI

/* Define to 1 if you have the `pthread' library (-lpthread). */
#undef HAVE_LIBPTHREAD

/* Define to 1 if you have the `udis86' library (-ludis86). */
#undef HAVE_LIBUDIS86

/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H

/* Define if you can use -Wl,-export-dynamic. */
#undef HAVE_LINK_EXPORT_DYNAMIC

/* Define to 1 if you have the <link.h> header file. */
#undef HAVE_LINK_H

/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
   the current directory to the dynamic linker search path. */
#undef HAVE_LINK_R

/* Define to 1 if you have the `longjmp' function. */
#undef HAVE_LONGJMP

/* Define to 1 if you have the <mach/mach.h> header file. */
#undef HAVE_MACH_MACH_H

/* Define to 1 if you have the <mach-o/dyld.h> header file. */
#undef HAVE_MACH_O_DYLD_H

/* Define if mallinfo() is available on this platform. */
#undef HAVE_MALLINFO

/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H

/* Define to 1 if you have the <malloc/malloc.h> header file. */
#undef HAVE_MALLOC_MALLOC_H

/* Define to 1 if you have the `malloc_zone_statistics' function. */
#undef HAVE_MALLOC_ZONE_STATISTICS

/* Define to 1 if you have the `memcpy' function. */
#undef HAVE_MEMCPY

/* Define to 1 if you have the `memmove' function. */
#undef HAVE_MEMMOVE

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP

/* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP

/* Define to 1 if you have the `mktemp' function. */
#undef HAVE_MKTEMP

/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP

/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
   it uses MAP_ANON */
#undef HAVE_MMAP_ANONYMOUS

/* Define if mmap() can map files into memory */
#undef HAVE_MMAP_FILE

/* 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 `nearbyintf' function. */
#undef HAVE_NEARBYINTF

/* Define if the neat program is available */
#undef HAVE_NEATO

/* Define to 1 if you have the `opendir' function. */
#undef HAVE_OPENDIR

/* Define to 1 if you have the `posix_spawn' function. */
#undef HAVE_POSIX_SPAWN

/* Define to 1 if you have the `powf' function. */
#undef HAVE_POWF

/* Define if libtool can extract symbol lists from object files. */
#undef HAVE_PRELOADED_SYMBOLS

/* Define to have the %a format string */
#undef HAVE_PRINTF_A

/* Have pthread_getspecific */
#undef HAVE_PTHREAD_GETSPECIFIC

/* Define to 1 if you have the <pthread.h> header file. */
#undef HAVE_PTHREAD_H

/* Have pthread_mutex_lock */
#undef HAVE_PTHREAD_MUTEX_LOCK

/* Have pthread_rwlock_init */
#undef HAVE_PTHREAD_RWLOCK_INIT

/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
#undef HAVE_RAND48

/* Define to 1 if you have the `readdir' function. */
#undef HAVE_READDIR

/* Define to 1 if you have the `realpath' function. */
#undef HAVE_REALPATH

/* Define to 1 if you have the `rindex' function. */
#undef HAVE_RINDEX

/* Define to 1 if you have the `rintf' function. */
#undef HAVE_RINTF

/* Define to 1 if you have the `round' function. */
#undef HAVE_ROUND

/* Define to 1 if you have the `roundf' function. */
#undef HAVE_ROUNDF

/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK

/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV

/* Define to 1 if you have the `setjmp' function. */
#undef HAVE_SETJMP

/* Define to 1 if you have the <setjmp.h> header file. */
#undef HAVE_SETJMP_H

/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT

/* Define if you have the shl_load function. */
#undef HAVE_SHL_LOAD

/* Define to 1 if you have the `siglongjmp' function. */
#undef HAVE_SIGLONGJMP

/* Define to 1 if you have the <signal.h> header file. */
#undef HAVE_SIGNAL_H

/* Define to 1 if you have the `sigsetjmp' function. */
#undef HAVE_SIGSETJMP

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdio.h> header file. */
#undef HAVE_STDIO_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Set to 1 if the std::isinf function is found in <cmath> */
#undef HAVE_STD_ISINF_IN_CMATH

/* Set to 1 if the std::isnan function is found in <cmath> */
#undef HAVE_STD_ISNAN_IN_CMATH

/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR

/* Define to 1 if you have the `strcmp' function. */
#undef HAVE_STRCMP

/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP

/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR

/* Define to 1 if you have the `strerror_r' function. */
#undef HAVE_STRERROR_R

/* 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 `strrchr' function. */
#undef HAVE_STRRCHR

/* Define to 1 if you have the `strtof' function. */
#undef HAVE_STRTOF

/* Define to 1 if you have the `strtoll' function. */
#undef HAVE_STRTOLL

/* Define to 1 if you have the `strtoq' function. */
#undef HAVE_STRTOQ

/* Define to 1 if you have the `sysconf' function. */
#undef HAVE_SYSCONF

/* 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/dl.h> header file. */
#undef HAVE_SYS_DL_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/mman.h> header file. */
#undef HAVE_SYS_MMAN_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/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_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/time.h> header file. */
#undef HAVE_SYS_TIME_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/uio.h> header file. */
#undef HAVE_SYS_UIO_H

/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H

/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H

/* Define if the neat program is available */
#undef HAVE_TWOPI

/* Define to 1 if the system has the type `uint64_t'. */
#undef HAVE_UINT64_T

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to 1 if you have the <utime.h> header file. */
#undef HAVE_UTIME_H

/* Define to 1 if the system has the type `u_int64_t'. */
#undef HAVE_U_INT64_T

/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
#undef HAVE_VALGRIND_VALGRIND_H

/* Define to 1 if you have the <windows.h> header file. */
#undef HAVE_WINDOWS_H

/* Define to 1 if you have the `writev' function. */
#undef HAVE_WRITEV

/* Define if the xdot.py program is available */
#undef HAVE_XDOT_PY

/* Have host's _alloca */
#undef HAVE__ALLOCA

/* Have host's __alloca */
#undef HAVE___ALLOCA

/* Have host's __ashldi3 */
#undef HAVE___ASHLDI3

/* Have host's __ashrdi3 */
#undef HAVE___ASHRDI3

/* Have host's __chkstk */
#undef HAVE___CHKSTK

/* Have host's __cmpdi2 */
#undef HAVE___CMPDI2

/* Have host's __divdi3 */
#undef HAVE___DIVDI3

/* Define to 1 if you have the `__dso_handle' function. */
#undef HAVE___DSO_HANDLE

/* Have host's __fixdfdi */
#undef HAVE___FIXDFDI

/* Have host's __fixsfdi */
#undef HAVE___FIXSFDI

/* Have host's __floatdidf */
#undef HAVE___FLOATDIDF

/* Have host's __lshrdi3 */
#undef HAVE___LSHRDI3

/* Have host's __main */
#undef HAVE___MAIN

/* Have host's __moddi3 */
#undef HAVE___MODDI3

/* Have host's __udivdi3 */
#undef HAVE___UDIVDI3

/* Have host's __umoddi3 */
#undef HAVE___UMODDI3

/* Have host's ___chkstk */
#undef HAVE____CHKSTK

/* Linker version detected at compile time. */
#undef HOST_LINK_VERSION

/* Installation directory for binary executables */
#undef LLVM_BINDIR

/* Time at which LLVM was configured */
#undef LLVM_CONFIGTIME

/* Installation directory for data files */
#undef LLVM_DATADIR

/* Installation directory for documentation */
#undef LLVM_DOCSDIR

/* Installation directory for config files */
#undef LLVM_ETCDIR

/* Has gcc/MSVC atomic intrinsics */
#undef LLVM_HAS_ATOMICS

/* Host triple we were built on */
#undef LLVM_HOSTTRIPLE

/* Installation directory for include files */
#undef LLVM_INCLUDEDIR

/* Installation directory for .info files */
#undef LLVM_INFODIR

/* Installation directory for libraries */
#undef LLVM_LIBDIR

/* Installation directory for man pages */
#undef LLVM_MANDIR

/* LLVM architecture name for the native architecture, if available */
#undef LLVM_NATIVE_ARCH

/* LLVM name for the native AsmParser init function, if available */
#undef LLVM_NATIVE_ASMPARSER

/* LLVM name for the native AsmPrinter init function, if available */
#undef LLVM_NATIVE_ASMPRINTER

/* LLVM name for the native Target init function, if available */
#undef LLVM_NATIVE_TARGET

/* LLVM name for the native TargetInfo init function, if available */
#undef LLVM_NATIVE_TARGETINFO

/* LLVM name for the native target MC init function, if available */
#undef LLVM_NATIVE_TARGETMC

/* Define if this is Unixish platform */
#undef LLVM_ON_UNIX

/* Define if this is Win32ish platform */
#undef LLVM_ON_WIN32

/* Define to path to circo program if found or 'echo circo' otherwise */
#undef LLVM_PATH_CIRCO

/* Define to path to dot program if found or 'echo dot' otherwise */
#undef LLVM_PATH_DOT

/* Define to path to dotty program if found or 'echo dotty' otherwise */
#undef LLVM_PATH_DOTTY

/* Define to path to fdp program if found or 'echo fdp' otherwise */
#undef LLVM_PATH_FDP

/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
#undef LLVM_PATH_GRAPHVIZ

/* Define to path to gv program if found or 'echo gv' otherwise */
#undef LLVM_PATH_GV

/* Define to path to neato program if found or 'echo neato' otherwise */
#undef LLVM_PATH_NEATO

/* Define to path to twopi program if found or 'echo twopi' otherwise */
#undef LLVM_PATH_TWOPI

/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
#undef LLVM_PATH_XDOT_PY

/* Installation prefix directory */
#undef LLVM_PREFIX

/* Define if the OS needs help to load dependent libraries for dlopen(). */
#undef LTDL_DLOPEN_DEPLIBS

/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#undef LTDL_OBJDIR

/* Define to the name of the environment variable that determines the dynamic
   library search path. */
#undef LTDL_SHLIBPATH_VAR

/* Define to the extension used for shared libraries, say, ".so". */
#undef LTDL_SHLIB_EXT

/* Define to the system default library search path. */
#undef LTDL_SYSSEARCHPATH

/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
   its not necessary */
#undef NEED_DEV_ZERO_FOR_MMAP

/* Define if dlsym() requires a leading underscore in symbol names. */
#undef NEED_USCORE

/* 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 as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE

/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
#undef STAT_MACROS_BROKEN

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME

/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME

/* Define if we have the oprofile JIT-support library */
#undef USE_OPROFILE

/* Define if use udis86 library */
#undef USE_UDIS86

/* Type of 1st arg on ELM Callback */
#undef WIN32_ELMCB_PCSTR

/* Define to empty if `const' does not conform to ANSI C. */
#undef const

/* Define to a type to use for `error_t' if it is not otherwise available. */
#undef error_t

/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t

/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

#endif
