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

#ifndef R_CONFIG_H
#define R_CONFIG_H

/* 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 <alloca.h> works. */
#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 `getpwnam' function. */
#undef HAVE_GETPWNAM

/* 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 `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.28.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 `tinfo' library (-ltinfo). */
#undef HAVE_LIBTINFO

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

/* Define to 1 if you have the <minix/config.h> header file. */
#undef HAVE_MINIX_CONFIG_H

/* 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_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 <stdio.h> header file. */
#undef HAVE_STDIO_H

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

/* 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 to 1 if you have the `wcwidth' function. */
#undef HAVE_WCWIDTH

/* 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 to 1 if you have cairo including Xlib. */
#undef HAVE_WORKING_X11_CAIRO

/* 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 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 all of the C90 standard headers exist (not just the ones
   required in a freestanding environment). This macro is provided for
   backward compatibility; new code need not use it. */
#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 to 1 to use internal code for `towlower' and `towupper'. */
#undef USE_RI18N_CASE

/* Define to 1 to use internal `iswprint' etc. */
#undef USE_RI18N_FNS

/* Define to 1 to use internal `wcwidth' */
#undef USE_RI18N_WIDTH

/* 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 general extensions on macOS.  */
#ifndef _DARWIN_C_SOURCE
# undef _DARWIN_C_SOURCE
#endif
/* Enable general extensions on Solaris.  */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif
/* Enable GNU extensions on systems that have them.  */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable X/Open compliant socket functions that do not require linking
   with -lxnet on HP-UX 11.11.  */
#ifndef _HPUX_ALT_XOPEN_SOCKET_API
# undef _HPUX_ALT_XOPEN_SOCKET_API
#endif
/* Identify the host operating system as Minix.
   This macro does not affect the system headers' behavior.
   A future release of Autoconf may stop defining this macro.  */
#ifndef _MINIX
# undef _MINIX
#endif
/* Enable general extensions on NetBSD.
   Enable NetBSD compatibility extensions on Minix.  */
#ifndef _NETBSD_SOURCE
# undef _NETBSD_SOURCE
#endif
/* Enable OpenBSD compatibility extensions on NetBSD.
   Oddly enough, this does nothing on OpenBSD.  */
#ifndef _OPENBSD_SOURCE
# undef _OPENBSD_SOURCE
#endif
/* Define to 1 if needed for POSIX-compatible behavior.  */
#ifndef _POSIX_SOURCE
# undef _POSIX_SOURCE
#endif
/* Define to 2 if needed for POSIX-compatible behavior.  */
#ifndef _POSIX_1_SOURCE
# undef _POSIX_1_SOURCE
#endif
/* Enable POSIX-compatible threading on Solaris.  */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */
#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
#endif
/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */
#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
# undef __STDC_WANT_IEC_60559_BFP_EXT__
#endif
/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */
#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
# undef __STDC_WANT_IEC_60559_DFP_EXT__
#endif
/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
# undef __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */
#ifndef __STDC_WANT_LIB_EXT2__
# undef __STDC_WANT_LIB_EXT2__
#endif
/* Enable extensions specified by ISO/IEC 24747:2009.  */
#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
# undef __STDC_WANT_MATH_SPEC_FUNCS__
#endif
/* Enable extensions on HP NonStop.  */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable X/Open extensions.  Define to 500 only if necessary
   to make mbstate_t available.  */
#ifndef _XOPEN_SOURCE
# undef _XOPEN_SOURCE
#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

/* 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 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 as a signed integer type capable of holding a process identifier. */
#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

