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

/* Check that config.h is #included before system headers
   (this works only for glibc, but that should be enough).  */
#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
#  error config.h must be #included before system headers
#endif
#define __CONFIG_H__ 1

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

/* Set the default --hash-style value */
#undef DEFAULT_HASH_STYLE

/* Define to 1 if you want to enable -z relro in ELF linker by default. */
#undef DEFAULT_LD_Z_RELRO

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

/* Define to enable linker plugins */
#undef ENABLE_PLUGINS

/* Define to do multi-threaded linking */
#undef ENABLE_THREADS

/* Default big endian (true or false) */
#undef GOLD_DEFAULT_BIG_ENDIAN

/* Default machine code */
#undef GOLD_DEFAULT_MACHINE

/* Default OSABI code */
#undef GOLD_DEFAULT_OSABI

/* Default size (32 or 64) */
#undef GOLD_DEFAULT_SIZE

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

/* Define to 1 if you have the `chsize' function. */
#undef HAVE_CHSIZE

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

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

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

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

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

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

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

/* 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 `strndup', and to 0 if you
   don't. */
#undef HAVE_DECL_STRNDUP

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

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

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

/* Define to 1 if you have the <ext/hash_map> header file. */
#undef HAVE_EXT_HASH_MAP

/* Define to 1 if you have the <ext/hash_set> header file. */
#undef HAVE_EXT_HASH_SET

/* Define to 1 if you have the `fallocate' function. */
#undef HAVE_FALLOCATE

/* Define to 1 if you have the `ffsll' function. */
#undef HAVE_FFSLL

/* Define to 1 if you have the `ftruncate' function. */
#undef HAVE_FTRUNCATE

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

/* The jansson library is to be used */
#undef HAVE_JANSSON

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

/* Define to 1 if you have the `link' function. */
#undef HAVE_LINK

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

/* Define to 1 if you have the `mallinfo' function. */
#undef HAVE_MALLINFO

/* Define to 1 if you have the `mallinfo2' function. */
#undef HAVE_MALLINFO2

/* 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 `mmap' function. */
#undef HAVE_MMAP

/* Define to 1 if you have the mremap function with MREMAP_MAYMOVE support */
#undef HAVE_MREMAP

/* Define if compiler supports #pragma omp threadprivate */
#undef HAVE_OMP_SUPPORT

/* Define to 1 if you have the `posix_fallocate' function. */
#undef HAVE_POSIX_FALLOCATE

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

/* Have PTHREAD_PRIO_INHERIT. */
#undef HAVE_PTHREAD_PRIO_INHERIT

/* Define to 1 if you have the `readv' function. */
#undef HAVE_READV

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

/* Define if struct stat has a field st_mtim with timespec for mtime */
#undef HAVE_STAT_ST_MTIM

/* 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 `sysconf' function. */
#undef HAVE_SYSCONF

/* 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/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 support 32-bit big-endian targets */
#undef HAVE_TARGET_32_BIG

/* Define to support 32-bit little-endian targets */
#undef HAVE_TARGET_32_LITTLE

/* Define to support 64-bit big-endian targets */
#undef HAVE_TARGET_64_BIG

/* Define to support 64-bit little-endian targets */
#undef HAVE_TARGET_64_LITTLE

/* Define if attributes work on C++ templates */
#undef HAVE_TEMPLATE_ATTRIBUTES

/* Define to 1 if you have the `times' function. */
#undef HAVE_TIMES

/* Define if std::tr1::hash<off_t> is usable */
#undef HAVE_TR1_HASH_OFF_T

/* Define to 1 if you have the <tr1/unordered_map> header file. */
#undef HAVE_TR1_UNORDERED_MAP

/* Define if ::std::tr1::unordered_map::rehash is usable */
#undef HAVE_TR1_UNORDERED_MAP_REHASH

/* Define to 1 if you have the <tr1/unordered_set> header file. */
#undef HAVE_TR1_UNORDERED_SET

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

/* Define to 1 if you have the <unordered_map> header file. */
#undef HAVE_UNORDERED_MAP

/* Define to 1 if you have the <unordered_set> header file. */
#undef HAVE_UNORDERED_SET

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

/* Define to 1 if zstd is enabled. */
#undef HAVE_ZSTD

/* Default library search path */
#undef LIB_PATH

/* Whether configured as a native linker */
#undef NATIVE_LINKER

/* 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 home page for this package. */
#undef PACKAGE_URL

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

/* Define to necessary symbol if this constant uses a non-standard name on
   your system. */
#undef PTHREAD_CREATE_JOINABLE

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

/* System root for target files */
#undef TARGET_SYSTEM_ROOT

/* Whether the system root can be relocated */
#undef TARGET_SYSTEM_ROOT_RELOCATABLE

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


/* Version number of package */
#undef VERSION

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

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

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