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

#ifndef R_CONFIG_H
#define R_CONFIG_H

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

/* C stack direction: 1 (down) or -1 (up) */
#undef C_STACK_DIRECTION

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

/* Define to dummy `main' function (if any) required to link to the Fortran
   libraries. */
#undef FC_DUMMY_MAIN

/* Define if F77 and FC dummy `main' functions are identical. */
#undef FC_DUMMY_MAIN_EQ_F77

/* Define to a macro mangling the given C identifier (in lower and upper
   case), which must not contain underscores, for linking with Fortran. */
#undef FC_FUNC

/* As FC_FUNC, but for C identifiers containing underscores. */
#undef FC_FUNC_

/* C type used for Fortran character lengths */
#undef FC_LEN_T

/* Define to 1 if you have the `access' function. */
#undef HAVE_ACCESS

/* 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 if you have the Aqua headers and libraries, and want to include
   support for R.app and for the quartz() device to be built. */
#undef HAVE_AQUA

/* Define to 1 if you have the `argz_count' function. */
#undef HAVE_ARGZ_COUNT

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

/* 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 <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H

/* Define to 1 if you have the `asprintf' function. */
#undef HAVE_ASPRINTF

/* Define to 1 if you have the `atan2pi' function. */
#undef HAVE_ATAN2PI

/* Define to 1 if you have the `atanpi' function. */
#undef HAVE_ATANPI

/* Define to 1 if the compiler understands __builtin_expect. (For intl) */
#undef HAVE_BUILTIN_EXPECT

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

/* Define to 1 if you have the `cabs' function. */
#undef HAVE_CABS

/* Define to 1 if you have the `cacos' function. */
#undef HAVE_CACOS

/* Define to 1 if you have cairo-ps. */
#undef HAVE_CAIRO_PDF

/* Define to 1 if you have cairo-pdf. */
#undef HAVE_CAIRO_PS

/* Define to 1 if you have cairo-svg. */
#undef HAVE_CAIRO_SVG

/* Define to 1 if you have the `carg' function. */
#undef HAVE_CARG

/* Define to 1 if you have the `casin' function. */
#undef HAVE_CASIN

/* Define to 1 if you have the `catan' function. */
#undef HAVE_CATAN

/* Define to 1 if you have the `ccos' function. */
#undef HAVE_CCOS

/* Define to 1 if you have the `ccosh' function. */
#undef HAVE_CCOSH

/* Define to 1 if you have the `cexp' function. */
#undef HAVE_CEXP

/* Define to 1 if you have the OS X function CFLocaleCopyCurrent in the
   CoreFoundation framework. (For intl) */
#undef HAVE_CFLOCALECOPYCURRENT

/* Define to 1 if you have the OS X function CFPreferencesCopyAppValue in the
   CoreFoundation framework. (For intl) */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE

/* Define to 1 if you have the `chdir' function. */
#undef HAVE_CHDIR

/* Define to 1 if you have the `chmod' function. */
#undef HAVE_CHMOD

/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME

/* Define to 1 if you have the `clog' function. */
#undef HAVE_CLOG

/* Defined if framework CoreFoundation is present */
#undef HAVE_COREFOUNDATION_FW

/* Define to 1 if you have the `cospi' function. */
#undef HAVE_COSPI

/* Define to 1 if you have the `cpow' function. */
#undef HAVE_CPOW

/* Define to 1 if you have the `csin' function. */
#undef HAVE_CSIN

/* Define to 1 if you have the `csinh' function. */
#undef HAVE_CSINH

/* Define to 1 if you have the `csqrt' function. */
#undef HAVE_CSQRT

/* Define to 1 if you have the `ctan' function. */
#undef HAVE_CTAN

/* Define to 1 if you have the `ctanh' function. */
#undef HAVE_CTANH

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

/* Define if the GNU dcgettext() function is already present or preinstalled.
   */
#undef HAVE_DCGETTEXT

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

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

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

/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
   don't. (For intl) */
#undef HAVE_DECL_FEOF_UNLOCKED

/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
   you don't. (For intl) */
#undef HAVE_DECL_FGETS_UNLOCKED

/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
   don't. (For intl) */
#undef HAVE_DECL_GETC_UNLOCKED

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

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

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

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

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

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

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

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

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

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

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

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

/* 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 `_snprintf', and to 0 if you
   don't. (For intl) */
#undef HAVE_DECL__SNPRINTF

/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
   don't. (For intl) */
#undef HAVE_DECL__SNWPRINTF

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

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

/* Define to 1 if you have the `dlsym' function. */
#undef HAVE_DLSYM

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

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

/* Define to 1 if you have the `execv' function. */
#undef HAVE_EXECV

/* Define to 1 if you have the `exp10' function. */
#undef HAVE_EXP10

/* Define to 1 if you have the `expm1' function. */
#undef HAVE_EXPM1

/* Define if your Fortran compiler appends an extra_underscore to external
   names containing an underscore. */
#undef HAVE_F77_EXTRA_UNDERSCORE

/* Define if your Fortran compiler appends an underscore to external names. */
#undef HAVE_F77_UNDERSCORE

/* Define to 1 if you have the `fcntl' function. */
#undef HAVE_FCNTL

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

/* Define to 1 if you have the `fdopen' function. */
#undef HAVE_FDOPEN

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

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

/* Define if C's Rcomplex and Fortran's COMPLEX*16 can be interchanged, and
   can do arithmetic on the latter. */
#undef HAVE_FORTRAN_DOUBLE_COMPLEX

/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#undef HAVE_FSEEKO

/* Define to 1 if you have the `ftello' function. */
#undef HAVE_FTELLO

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

/* Define to 1 if you have the `fwprintf' function. */
#undef HAVE_FWPRINTF

/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD

/* Define to 1 if you have the `getegid' function. */
#undef HAVE_GETEGID

/* Define to 1 if you have the `geteuid' function. */
#undef HAVE_GETEUID

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

/* Define to 1 if you have the `getgrgid' function. */
#undef HAVE_GETGRGID

/* Define to 1 if you have the `getline' function. */
#undef HAVE_GETLINE

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

/* Define to 1 if you have the `getpriority' function. */
#undef HAVE_GETPRIORITY

/* Define to 1 if you have the `getpwuid' function. */
#undef HAVE_GETPWUID

/* 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 if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT

/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY

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

/* Define if you have the GNU C library version >= 2. This is needed to fix a
   problem with getting the prototype of strptime(). */
#undef HAVE_GLIBC2

/* Define to 1 if you have the `glob' function. */
#undef HAVE_GLOB

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

/* Define to 1 if you have the `gmtime_r' function. */
#undef HAVE_GMTIME_R

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

/* Define to 1 if you have the `history_truncate_file' function. */
#undef HAVE_HISTORY_TRUNCATE_FILE

/* Define to 1 if you have the `hypot' function. */
#undef HAVE_HYPOT

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

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

/* Define if `iconv' accepts "CP1252". */
#undef HAVE_ICONV_CP1252

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

/* Define to 1 if the system has the type `int64_t'. */
#undef HAVE_INT64_T

/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. (For
   intl) */
#undef HAVE_INTMAX_T

/* Define to 1 if the system has the type `intptr_t'. */
#undef HAVE_INTPTR_T

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

/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
   declares uintmax_t. (For intl) */
#undef HAVE_INTTYPES_H_WITH_UINTMAX

/* Define to 1 if the system has the type `int_fast64_t'. */
#undef HAVE_INT_FAST64_T

/* Define to 1 if you have the `isblank' function. */
#undef HAVE_ISBLANK

/* Define to 1 if you have the `isnan' function. */
#undef HAVE_ISNAN

/* Define to 1 if you have the `iswblank' function. */
#undef HAVE_ISWBLANK

/* Define to 1 if you have the `iswctype' function. */
#undef HAVE_ISWCTYPE

/* Define if you have the JPEG headers and libraries. */
#undef HAVE_JPEG

/* Define if KERN_USRSTACK sysctl is supported. */
#undef HAVE_KERN_USRSTACK

/* Define if you have KeySym defined in X11. */
#undef HAVE_KEYSYM

/* Define to 1 if you have the `kill' function. */
#undef HAVE_KILL

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

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

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

/* Define if your system has libcurl >= 7.22.0 with support for https. */
#undef HAVE_LIBCURL

/* Define if __libc_stack_end is visible. */
#undef HAVE_LIBC_STACK_END

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

/* Define to 1 if you have the `icucore' library (-licucore). */
#undef HAVE_LIBICUCORE

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

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

/* Define to 1 if you have the `readline' library (-lreadline). */
#undef HAVE_LIBREADLINE

/* Define to 1 if you have the `rt' library (-lrt). */
#undef HAVE_LIBRT

/* Define to 1 if you have the `sunmath' library (-lsunmath). */
#undef HAVE_LIBSUNMATH

/* Define to 1 if you have the `termcap' library (-ltermcap). */
#undef HAVE_LIBTERMCAP

/* Define to 1 if you have the `termlib' library (-ltermlib). */
#undef HAVE_LIBTERMLIB

/* Define to 1 if you have the `tk' library (-ltk). */
#undef HAVE_LIBTK

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

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

/* Define to 1 if you have the `log10' function. */
#undef HAVE_LOG10

/* Define to 1 if you have the `log1p' function. */
#undef HAVE_LOG1P

/* Define to 1 if you have the `log1pl' function. */
#undef HAVE_LOG1PL

/* Define to 1 if you have the `log2' function. */
#undef HAVE_LOG2

/* Define if you wish to use the 'long double' type. */
#undef HAVE_LONG_DOUBLE

/* Define to 1 if the system has the type `long long int'. (For intl) */
#undef HAVE_LONG_LONG_INT

/* Define if your system has lzma >= 5.0.3. */
#undef HAVE_LZMA

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

/* Define to 1 if you have the `matherr' function. */
#undef HAVE_MATHERR

/* Define to 1 if you have the `mbrtowc' function. */
#undef HAVE_MBRTOWC

/* Define to 1 if the system has the type `mbstate_t'. */
#undef HAVE_MBSTATE_T

/* Define to 1 if you have the `mbstowcs' function. */
#undef HAVE_MBSTOWCS

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

/* Define to 1 if you have the `mempcpy' function. */
#undef HAVE_MEMPCPY

/* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP

/* Define to 1 if you have the `mkfifo' function. */
#undef HAVE_MKFIFO

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

/* Define to 1 if you have the `munmap' function. */
#undef HAVE_MUNMAP

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

/* Define to 1 if you have the `nearbyintl' function. */
#undef HAVE_NEARBYINTL

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

/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H

/* Define to 1 if you have the `nl_langinfo' function. */
#undef HAVE_NL_LANGINFO

/* Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if
   _GNU_SOURCE is defined. */
#undef HAVE_NL_LOCALE_NAME

/* Define if module-loading does not need an underscore to be prepended to
   external names. */
#undef HAVE_NO_SYMBOL_UNDERSCORE

/* Define if you have off_t, fseeko and ftello. */
#undef HAVE_OFF_T

/* Define if you have C OpenMP support. */
#undef HAVE_OPENMP

/* Define if your OpenMP 4 implementation fully supports SIMD reduction */
#undef HAVE_OPENMP_SIMDRED

/* Define to 1 if you have pangocairo. */
#undef HAVE_PANGOCAIRO

/* Define if your system has pcre2. */
#undef HAVE_PCRE2

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

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

/* Define if you have the PNG headers and libraries. */
#undef HAVE_PNG

/* Define to 1 if you have the `popen' function. */
#undef HAVE_POPEN

/* Define if your system time functions do not count leap seconds, as required
   by POSIX. */
#undef HAVE_POSIX_LEAPSECONDS

/* Define if your printf() function supports format strings with positions.
   (For intl) */
#undef HAVE_POSIX_PRINTF

/* Define if you have POSIX.1 compatible sigsetjmp/siglongjmp. */
#undef HAVE_POSIX_SETJMP

/* Define to 1 if you have the `powl' function. */
#undef HAVE_POWL

/* Define to 1 if you have the `pown' function. */
#undef HAVE_POWN

/* Define if have support for POSIX threads. */
#undef HAVE_PTHREAD

/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. (For intl) */
#undef HAVE_PTHREAD_MUTEX_RECURSIVE

/* Define if the POSIX multithreading library has read/write locks. (For intl)
   */
#undef HAVE_PTHREAD_RWLOCK

/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV

/* Define if putenv("FOO") can unset an environment variable */
#undef HAVE_PUTENV_UNSET

/* Define if putenv("FOO=") can unset an environment variable */
#undef HAVE_PUTENV_UNSET2

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

/* Define to 1 if you have the <readline/history.h> header file. */
#undef HAVE_READLINE_HISTORY_H

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

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

/* Define to 1 if you have the `rl_callback_sigcleanup' function. */
#undef HAVE_RL_CALLBACK_SIGCLEANUP

/* Define to 1 if you have the `rl_completion_matches' function. */
#undef HAVE_RL_COMPLETION_MATCHES

/* Define to 1 if you have the `rl_resize_terminal' function. */
#undef HAVE_RL_RESIZE_TERMINAL

/* Define to 1 if you have the `rl_sort_completion_matches' function. */
#undef HAVE_RL_SORT_COMPLETION_MATCHES

/* Define to 1 if you have the `sched_getaffinity' function. */
#undef HAVE_SCHED_GETAFFINITY

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

/* Define to 1 if you have the `sched_setaffinity' function. */
#undef HAVE_SCHED_SETAFFINITY

/* Define to 1 if you have the `select' function. */
#undef HAVE_SELECT

/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV

/* Define to 1 if you have the `setitimer' function. */
#undef HAVE_SETITIMER

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

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

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

/* Define to 1 if you have the `sigaltstack' function. */
#undef HAVE_SIGALTSTACK

/* Define to 1 if you have the `sigemptyset' function. */
#undef HAVE_SIGEMPTYSET

/* Define to 1 if you have the `sinpi' function. */
#undef HAVE_SINPI

/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF

/* Define to 1 if the system has the type `stack_t'. */
#undef HAVE_STACK_T

/* Define to 1 if you have the `stat' function. */
#undef HAVE_STAT

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

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

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

/* 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 if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
   uintmax_t. (For intl) */
#undef HAVE_STDINT_H_WITH_UINTMAX

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

/* Define to 1 if you have the `stpcpy' function. */
#undef HAVE_STPCPY

/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP

/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP

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

/* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL

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

/* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC

/* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC

/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC

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

/* Define to 1 if you have the `symlink' function. */
#undef HAVE_SYMLINK

/* 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/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/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/times.h> header file. */
#undef HAVE_SYS_TIMES_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/utsname.h> header file. */
#undef HAVE_SYS_UTSNAME_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 `tanpi' function. */
#undef HAVE_TANPI

/* Define if you have the Tcl/Tk headers and libraries and want Tcl/Tk support
   to be built. */
#undef HAVE_TCLTK

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

/* Define to 1 if you have the `thr_stksegment' function. */
#undef HAVE_THR_STKSEGMENT

/* Define this if libtiff is available. */
#undef HAVE_TIFF

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

/* Define to 1 if you have the `tilde_expand_word' function. */
#undef HAVE_TILDE_EXPAND_WORD

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

/* Define to 1 if you have the `timespec_get' function. */
#undef HAVE_TIMESPEC_GET

/* Define to 1 if your 'struct tm' has tm_gmtoff. */
#undef HAVE_TM_GMTOFF

/* Define to 1 if your 'struct tm' has tm_zone. */
#undef HAVE_TM_ZONE

/* Define if your system has tre. */
#undef HAVE_TRE

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

/* Define to 1 if you have the `tsearch' function. */
#undef HAVE_TSEARCH

/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. (For
   intl) */
#undef HAVE_UINTMAX_T

/* Define to 1 if the system has the type `uintptr_t'. */
#undef HAVE_UINTPTR_T

/* Define to 1 if you have the `umask' function. */
#undef HAVE_UMASK

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

/* Define to 1 if you have the `unsetenv' function. */
#undef HAVE_UNSETENV

/* Define if you have the 'unsigned long long' type. (For intl) */
#undef HAVE_UNSIGNED_LONG_LONG

/* Define to 1 if the system has the type `unsigned long long int'. (For intl)
   */
#undef HAVE_UNSIGNED_LONG_LONG_INT

/* Define to 1 if you have the `utime' function. */
#undef HAVE_UTIME

/* Define to 1 if you have the `utimensat' function. */
#undef HAVE_UTIMENSAT

/* Define to 1 if you have the `utimes' function. */
#undef HAVE_UTIMES

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

/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
#undef HAVE_VALGRIND_MEMCHECK_H

/* Define to 1 if you have the `vasprintf' function. */
#undef HAVE_VASPRINTF

/* Define to 1 if you have the `va_copy' function. */
#undef HAVE_VA_COPY

/* Define to 1 or 0, depending whether the compiler supports simple visibility
   declarations. (For intl) */
#undef HAVE_VISIBILITY

/* Define to 1 if __attribute__((visibility())) is supported */
#undef HAVE_VISIBILITY_ATTRIBUTE

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

/* Define if you have the 'wchar_t' type. (For intl) */
#undef HAVE_WCHAR_T

/* Define to 1 if you have the `wcrtomb' function. */
#undef HAVE_WCRTOMB

/* Define to 1 if you have the `wcscoll' function. */
#undef HAVE_WCSCOLL

/* Define to 1 if you have the `wcsftime' function. */
#undef HAVE_WCSFTIME

/* Define to 1 if you have the `wcslen' function. */
#undef HAVE_WCSLEN

/* Define to 1 if you have the `wcstod' function. */
#undef HAVE_WCSTOD

/* Define to 1 if you have the `wcstombs' function. */
#undef HAVE_WCSTOMBS

/* Define to 1 if you have the `wctrans' function. */
#undef HAVE_WCTRANS

/* Define to 1 if the system has the type `wctrans_t'. */
#undef HAVE_WCTRANS_T

/* Define to 1 if you have the `wctype' function. */
#undef HAVE_WCTYPE

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

/* Define if you have the 'wint_t' type. (For intl) */
#undef HAVE_WINT_T

/* Define if your mktime works correctly outside 1902-2037. */
#undef HAVE_WORKING_64BIT_MKTIME

/* Define to 1 if you have cairo. */
#undef HAVE_WORKING_CAIRO

/* Define if calloc(0) returns a null pointer. */
#undef HAVE_WORKING_CALLOC

/* Define if ctanh() exists and is working correctly. */
#undef HAVE_WORKING_CTANH

/* Define if your ftell works correctly on files opened for append. */
#undef HAVE_WORKING_FTELL

/* Define if isfinite() is correct for -Inf/NaN/Inf. */
#undef HAVE_WORKING_ISFINITE

/* Define if log1p() exists and is accurate enough. */
#undef HAVE_WORKING_LOG1P

/* Define if sigaction() is complete enough for R's usage */
#undef HAVE_WORKING_SIGACTION

/* Define if you have the X11 headers and libraries, and want the X11 GUI to
   be built. */
#undef HAVE_X11

/* Define if you have the X11/Xmu headers and libraries. */
#undef HAVE_X11_Xmu

/* Define to 1 if you have the `__cospi' function. */
#undef HAVE___COSPI

/* Define to 1 if you have the `__fsetlocking' function. */
#undef HAVE___FSETLOCKING

/* Define to 1 if you have the `__sinpi' function. */
#undef HAVE___SINPI

/* Define to 1 if you have the `__tanpi' function. */
#undef HAVE___TANPI

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

/* Define if you have IEEE 754 floating point arithmetic. */
#undef IEEE_754

/* Define if integer division by zero raises signal SIGFPE. (For intl) */
#undef INTDIV0_RAISES_SIGFPE

/* Define if you have 32 bit ints. */
#undef INT_32_BITS

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR

/* macOS 10.12 (Sierra) or earlier */
#undef MACOS_SIERRA

/* Define if mktime sets errno. */
#undef MKTIME_SETS_ERRNO

/* Define to disable Valgrind instrumentation */
#undef NVALGRIND

/* Define if using GNU-style Objective C runtime. */
#undef OBJC_GNU_RUNTIME

/* Define if using NeXT/Apple-style Objective C runtime. */
#undef OBJC_NEXT_RUNTIME

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

/* PCRE2 code unit width wanted. */
#undef PCRE2_CODE_UNIT_WIDTH

/* Define if <inttypes.h> exists and defines unusable PRI* macros. (For intl)
   */
#undef PRI_MACROS_BROKEN

/* Define if the pthread_in_use() detection is hard. (For intl) */
#undef PTHREAD_IN_USE_DETECTION_HARD

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

/* Define this to use architecture-dependent subdirectories of this name. */
#undef R_ARCH

/* Define this to be the name of the CPU of your system. */
#undef R_CPU

/* Define as `inline', or `__inline__' or `__inline' if that's what the C
   compiler calls it, or to nothing if it is not supported. */
#undef R_INLINE

/* Define this to enable memory profiling. */
#undef R_MEMORY_PROFILING

/* Define this to be the name of the OS of your system. */
#undef R_OS

/* Define this to be the canonical name (cpu-vendor-os) of your system. */
#undef R_PLATFORM

/* Define this to be printing command on your system. */
#undef R_PRINTCMD

/* Define this to enable R-level profiling. */
#undef R_PROFILING

/* Type for socket lengths: socklen_t, sock_t, int? */
#undef R_SOCKLEN_T

/* Define this to be the name of the vendor of your system. */
#undef R_VENDOR

/* Define this to be the extension used for shared objects on your system. */
#undef SHLIB_EXT

/* The size of `double', as computed by sizeof. */
#undef SIZEOF_DOUBLE

/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT

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

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

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

/* The size of `size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T

/* Define as the maximum value of type 'size_t', if the system doesn't define
   it. (For intl) */
#undef SIZE_MAX

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

/* Define if you have C/C++/Fortran OpenMP support for package code. */
#undef SUPPORT_OPENMP

/* Define to enable provoking compile errors on write barrier violation. */
#undef TESTING_WRITE_BARRIER

/* Define to 1 if the type of the st_atim member of a struct stat is struct
   timespec. */
#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC

/* Define to use ICU for collation. */
#undef USE_ICU

/* Define to use Apple's ICU. */
#undef USE_ICU_APPLE

/* Define to use internal time-zone code */
#undef USE_INTERNAL_MKTIME

/* Define if the POSIX multithreading library can be used. (For intl) */
#undef USE_POSIX_THREADS

/* Define if references to the POSIX multithreading library should be made
   weak. (For intl) */
#undef USE_POSIX_THREADS_WEAK

/* Define if the GNU Pth multithreading library can be used. (For intl) */
#undef USE_PTH_THREADS

/* Define if references to the GNU Pth multithreading library should be made
   weak. (For intl) */
#undef USE_PTH_THREADS_WEAK

/* Define if the old Solaris multithreading library can be used. (For intl) */
#undef USE_SOLARIS_THREADS

/* Define if references to the old Solaris multithreading library should be
   made weak. (For intl) */
#undef USE_SOLARIS_THREADS_WEAK

/* 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 the Win32 multithreading API can be used. (For intl) */
#undef USE_WIN32_THREADS

/* Define according to your operating system type. */
#undef Unix

/* Define as 1 or 2 to specify levels of Valgrind instrumentation */
#undef VALGRIND_LEVEL

/* 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 according to your operating system type. */
#undef Win32

/* Define to 1 if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING

/* Enable large inode numbers on Mac OS X 10.5.  */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif

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

/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
#undef _LARGEFILE_SOURCE

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

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

/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
   #define below would cause a syntax error. */
#undef _UINT64_T

/* Define to 'long' if <sys/types.h> does not define. Apparently necessary to
   fix a GCC bug on AIX? */
#undef blkcnt_t

/* 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 the type of the result of subtracting two pointers, if the system
   doesn't define it. (For intl) */
#undef ptrdiff_t

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

/* Define to the type of an unsigned integer type of width exactly 64 bits if
   such a type exists and the standard includes do not define it. */
#undef uint64_t

/* Define to unsigned long or unsigned long long if <stdint.h> and
   <inttypes.h> don't define. (For intl) */
#undef uintmax_t


#endif /* not R_CONFIG_H */


#define __libc_lock_t                   gl_lock_t
#define __libc_lock_define              gl_lock_define
#define __libc_lock_define_initialized  gl_lock_define_initialized
#define __libc_lock_init                gl_lock_init
#define __libc_lock_lock                gl_lock_lock
#define __libc_lock_unlock              gl_lock_unlock
#define __libc_lock_recursive_t                   gl_recursive_lock_t
#define __libc_lock_define_recursive              gl_recursive_lock_define
#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
#define __libc_lock_init_recursive                gl_recursive_lock_init
#define __libc_lock_lock_recursive                gl_recursive_lock_lock
#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
#define glthread_in_use  libintl_thread_in_use
#define glthread_lock_init     libintl_lock_init
#define glthread_lock_lock     libintl_lock_lock
#define glthread_lock_unlock   libintl_lock_unlock
#define glthread_lock_destroy  libintl_lock_destroy
#define glthread_rwlock_init     libintl_rwlock_init
#define glthread_rwlock_rdlock   libintl_rwlock_rdlock
#define glthread_rwlock_wrlock   libintl_rwlock_wrlock
#define glthread_rwlock_unlock   libintl_rwlock_unlock
#define glthread_rwlock_destroy  libintl_rwlock_destroy
#define glthread_recursive_lock_init     libintl_recursive_lock_init
#define glthread_recursive_lock_lock     libintl_recursive_lock_lock
#define glthread_recursive_lock_unlock   libintl_recursive_lock_unlock
#define glthread_recursive_lock_destroy  libintl_recursive_lock_destroy
#define glthread_once                 libintl_once
#define glthread_once_call            libintl_once_call
#define glthread_once_singlethreaded  libintl_once_singlethreaded

