/* ucommon-config.h.in.  Generated from configure.ac by autoheader.  */

/* has posix clock functions */
#undef HAVE_CLOCK_GETTIME

/* has clocked nanosleep */
#undef HAVE_CLOCK_NANOSLEEP

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

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

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

/* has execvp in libc */
#undef HAVE_EXECVP

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

/* has ftok */
#undef HAVE_FTOK

/* can truncate files */
#undef HAVE_FTRUNCATE

/* "cannot test in autoconf safely" */
#undef HAVE_GCC_ATOMICS

/* have getaddrinfo */
#undef HAVE_GETADDRINFO

/* have gethostbyname2 */
#undef HAVE_GETHOSTBYNAME2

/* has gettext in glibc */
#undef HAVE_GETTEXT

/* has localtime_r */
#undef HAVE_GMTIME_R

/* have inet_ntop */
#undef HAVE_INET_NTOP

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

/* international headers */
#undef HAVE_LIBINTL_H

/* Define to 1 if you have the <linux/version.h> header file. */
#undef HAVE_LINUX_VERSION_H

/* has localtime_r */
#undef HAVE_LOCALTIME_R

/* have lstat */
#undef HAVE_LSTAT

/* Define to 1 if you have the <mach/clock.h> header file. */
#undef HAVE_MACH_CLOCK_H

/* Define to 1 if you have the <mach-o/dyld.h> header file. */
#undef HAVE_MACH_O_DYLD_H

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

/* has nanosleep */
#undef HAVE_NANOSLEEP

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

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

/* Define to 1 if you have the <openssl/fips.h> header file. */
#undef HAVE_OPENSSL_FIPS_H

/* Define to 1 if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H

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

/* can specify access options */
#undef HAVE_POSIX_FADVISE

/* posix memory alignment */
#undef HAVE_POSIX_MEMALIGN

/* "pthread clocking" */
#undef HAVE_PTHREAD_CONDATTR_SETCLOCK

/* "pthread delay" */
#undef HAVE_PTHREAD_DELAY

/* "pthread delay np" */
#undef HAVE_PTHREAD_DELAY_NP

/* "pthread concurrency" */
#undef HAVE_PTHREAD_SETCONCURRENCY

/* "pthread scheduling" */
#undef HAVE_PTHREAD_SETSCHEDPRIO

/* "pthread yield" */
#undef HAVE_PTHREAD_YIELD

/* can do atomic write with offset */
#undef HAVE_PWRITE

/* has readlink in libc */
#undef HAVE_READLINK

/* realpath support */
#undef HAVE_REALPATH

/* have regex header */
#undef HAVE_REGEX_H

/* can set localization */
#undef HAVE_SETLOCALE

/* process group control */
#undef HAVE_SETPGRP

/* alternate dyn loader */
#undef HAVE_SHL_LOAD

/* shared memory open */
#undef HAVE_SHM_OPEN

/* have socketpair in libsocket */
#undef HAVE_SOCKETPAIR

/* "Socks proxy support" */
#undef HAVE_SOCKS

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

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

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

/* string collation */
#undef HAVE_STRCOLL

/* has strerror_r */
#undef HAVE_STRERROR_R

/* string icmp */
#undef HAVE_STRICMP

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

/* string istr */
#undef HAVE_STRISTR

/* has symlink in libc */
#undef HAVE_SYMLINK

/* system config */
#undef HAVE_SYSCONF

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

/* Define to 1 if you have the <sys/event.h> header file. */
#undef HAVE_SYS_EVENT_H

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

/* Define to 1 if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H

/* Define to 1 if you have the <sys/inotify.h> header file. */
#undef HAVE_SYS_INOTIFY_H

/* Define to 1 if you have the <sys/lockf.h> header file. */
#undef HAVE_SYS_LOCKF_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/param.h> header file. */
#undef HAVE_SYS_PARAM_H

/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_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/shm.h> header file. */
#undef HAVE_SYS_SHM_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/timeb.h> header file. */
#undef HAVE_SYS_TIMEB_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/wait.h> header file. */
#undef HAVE_SYS_WAIT_H

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

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

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

/* has wait4 in libc */
#undef HAVE_WAIT4

/* has waitpid in libc */
#undef HAVE_WAITPID

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

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

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

/* config path */
#undef UCOMMON_CFGPATH

/* locale path */
#undef UCOMMON_LOCALE

/* config path */
#undef UCOMMON_PREFIX

/* config path */
#undef UCOMMON_VARPATH

/* Version number of package */
#undef VERSION

/* 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 the equivalent of the C99 'restrict' keyword, or to
   nothing if this is not supported.  Do not define if restrict is
   supported directly.  */
#undef restrict
/* Work around a bug in Sun C++: it does not support _Restrict or
   __restrict__, even though the corresponding Sun C compiler ends up with
   "#define restrict _Restrict" or "#define restrict __restrict__" in the
   previous line.  Perhaps some future version of Sun C++ will work with
   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
#if defined __SUNPRO_CC && !defined __RESTRICT
# define _Restrict
# define __restrict__
#endif

/* Define to empty if the keyword `volatile' does not work. Warning: valid
   code using `volatile' can become incorrect without. Disable with care. */
#undef volatile


#include <ucommon/platform.h>

