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

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

/* Define if you have AUTOTRACE library */
#undef AUTOTRACE_DELEGATE

/* Define if coders and filters are to be built as modules. */
#undef BUILD_MODULES

/* Define if you have the bzip2 library */
#undef BZLIB_DELEGATE

/* Define if you have CAIRO library */
#undef CAIRO_DELEGATE

/* permit enciphering and deciphering image pixels */
#undef CIPHER_SUPPORT

/* Define to 1 if the `closedir' function returns void instead of `int'. */
#undef CLOSEDIR_VOID

/* coders subdirectory. */
#undef CODER_DIRNAME

/* Directory where architecture-dependent configuration files live. */
#undef CONFIGURE_PATH

/* Subdirectory of lib where architecture-dependent configuration files live.
   */
#undef CONFIGURE_RELATIVE_PATH

/* Define if you have DJVU library */
#undef DJVU_DELEGATE

/* Directory where ImageMagick documents live. */
#undef DOCUMENTATION_PATH

/* Define if you have Display Postscript */
#undef DPS_DELEGATE

/* exclude deprecated methods in MagickCore API */
#undef EXCLUDE_DEPRECATED

/* Directory where executables are installed. */
#undef EXECUTABLE_PATH

/* Define if you have FFTW library */
#undef FFTW_DELEGATE

/* filter subdirectory. */
#undef FILTER_DIRNAME

/* Define if you have FLIF library */
#undef FLIF_DELEGATE

/* Define if you have FONTCONFIG library */
#undef FONTCONFIG_DELEGATE

/* Define if you have FlashPIX library */
#undef FPX_DELEGATE

/* Define if you have FREETYPE library */
#undef FREETYPE_DELEGATE

/* Define if you have Ghostscript library or framework */
#undef GS_DELEGATE

/* Define if you have GVC library */
#undef GVC_DELEGATE

/* Define to 1 if you have the `acosh' function. */
#undef HAVE_ACOSH

/* Define to 1 if you have the `aligned_malloc' function. */
#undef HAVE_ALIGNED_MALLOC

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

/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H

/* Define to 1 if you have the `asinh' function. */
#undef HAVE_ASINH

/* Define to 1 if you have the `atanh' function. */
#undef HAVE_ATANH

/* Define to 1 if you have the `atexit' function. */
#undef HAVE_ATEXIT

/* Define to 1 if you have the `atoll' function. */
#undef HAVE_ATOLL

/* define if bool is a built-in type */
#undef HAVE_BOOL

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

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

/* Define to 1 if you have the `cimag' function. */
#undef HAVE_CIMAG

/* Define to 1 if you have the `clock' function. */
#undef HAVE_CLOCK

/* Define to 1 if you have the `clock_getres' function. */
#undef HAVE_CLOCK_GETRES

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

/* Define to 1 if clock_gettime supports CLOCK_REALTIME. */
#undef HAVE_CLOCK_REALTIME

/* Define to 1 if you have the <CL/cl.h> header file. */
#undef HAVE_CL_CL_H

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

/* Define to 1 if you have the `creal' function. */
#undef HAVE_CREAL

/* Define to 1 if you have the `ctime_r' function. */
#undef HAVE_CTIME_R

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

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

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

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

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

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

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

/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT

/* Define to 1 if you have the `erf' function. */
#undef HAVE_ERF

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

/* Define to 1 if you have the `execvp' function. */
#undef HAVE_EXECVP

/* Define to 1 if you have the `fchmod' function. */
#undef HAVE_FCHMOD

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

/* Define to 1 if you have the `floor' function. */
#undef HAVE_FLOOR

/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK

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

/* Define to 1 if you have the `ftime' function. */
#undef HAVE_FTIME

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

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

/* Define to 1 if you have the `getc_unlocked' function. */
#undef HAVE_GETC_UNLOCKED

/* Define to 1 if you have the `getdtablesize' function. */
#undef HAVE_GETDTABLESIZE

/* Define to 1 if you have the `getexecname' function. */
#undef HAVE_GETEXECNAME

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

/* Define to 1 if you have the `getpid' function. */
#undef HAVE_GETPID

/* Define to 1 if you have the `getpwnam_r' function. */
#undef HAVE_GETPWNAM_R

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

/* Compile with hugepage support */
#undef HAVE_HUGEPAGES

/* Define to 1 if the system has the type `intmax_t'. */
#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 to 1 if you have the `isnan' function. */
#undef HAVE_ISNAN

/* Define to 1 if you have the `j0' function. */
#undef HAVE_J0

/* Define to 1 if you have the `j1' function. */
#undef HAVE_J1

/* Define if you have the <lcms2.h> header file. */
#undef HAVE_LCMS2_H

/* Define if you have the <lcms2/lcms2.h> header file. */
#undef HAVE_LCMS2_LCMS2_H

/* Define to 1 if you have the `gcov' library (-lgcov). */
#undef HAVE_LIBGCOV

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

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

/* Define to 1 if you have the `lltostr' function. */
#undef HAVE_LLTOSTR

/* 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 the system has the type `long long int'. */
#undef HAVE_LONG_LONG_INT

/* Define to 1 if you have the `lstat' function. */
#undef HAVE_LSTAT

/* Define to 1 if you have the <machine/param.h> header file. */
#undef HAVE_MACHINE_PARAM_H

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

/* Define to 1 if <wchar.h> declares mbstate_t. */
#undef HAVE_MBSTATE_T

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

/* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP

/* 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 if the compiler implements namespaces */
#undef HAVE_NAMESPACES

/* Define if g++ supports namespace std. */
#undef HAVE_NAMESPACE_STD

/* Define to 1 if you have the `nanosleep' function. */
#undef HAVE_NANOSLEEP

/* 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 <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H

/* Define to 1 if you have the `newlocale' function. */
#undef HAVE_NEWLOCALE

/* Define to 1 if you have the <OpenCL/cl.h> header file. */
#undef HAVE_OPENCL_CL_H

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

/* Define to 1 if you have the `pclose' function. */
#undef HAVE_PCLOSE

/* Define to 1 if you have the `poll' function. */
#undef HAVE_POLL

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

/* Define to 1 if you have the `posix_fadvise' function. */
#undef HAVE_POSIX_FADVISE

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

/* Define to 1 if you have the `posix_madvise' function. */
#undef HAVE_POSIX_MADVISE

/* Define to 1 if you have the `posix_memalign' function. */
#undef HAVE_POSIX_MEMALIGN

/* Define to 1 if you have the `posix_spawnp' function. */
#undef HAVE_POSIX_SPAWNP

/* Define to 1 if you have the `pow' function. */
#undef HAVE_POW

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

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

/* Define if you have POSIX threads libraries and header files. */
#undef HAVE_PTHREAD

/* Have PTHREAD_PRIO_INHERIT. */
#undef HAVE_PTHREAD_PRIO_INHERIT

/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE

/* Define to 1 if you have the `qsort_r' function. */
#undef HAVE_QSORT_R

/* Define to 1 if you have the `raise' function. */
#undef HAVE_RAISE

/* Define to 1 if you have the `rand_r' function. */
#undef HAVE_RAND_R

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

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

/* Define to 1 if you have the `sendfile' function. */
#undef HAVE_SENDFILE

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

/* Define to 1 if you have the `setvbuf' function. */
#undef HAVE_SETVBUF

/* X11 server supports shape extension */
#undef HAVE_SHAPE

/* X11 server supports shared memory extension */
#undef HAVE_SHARED_MEMORY

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

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

/* Define to 1 if you have the `socket' function. */
#undef HAVE_SOCKET

/* Define to 1 if you have the `spawnvp' function. */
#undef HAVE_SPAWNVP

/* Define to 1 if you have the `sqrt' function. */
#undef HAVE_SQRT

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

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

/* Define to 1 if stdbool.h conforms to C99. */
#undef HAVE_STDBOOL_H

/* 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 if the compiler supports ISO C++ standard library */
#undef HAVE_STD_LIBS

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

/* Define to 1 if you have the `strcasestr' function. */
#undef HAVE_STRCASESTR

/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR

/* Define to 1 if you have the `strcspn' function. */
#undef HAVE_STRCSPN

/* 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 cpp supports the ANSI # stringizing operator. */
#undef HAVE_STRINGIZE

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

/* Define to 1 if you have the `strlcpy' function. */
#undef HAVE_STRLCPY

/* Define to 1 if you have the `strncasecmp' function. */
#undef HAVE_STRNCASECMP

/* Define to 1 if you have the `strpbrk' function. */
#undef HAVE_STRPBRK

/* Define to 1 if you have the `strrchr' function. */
#undef HAVE_STRRCHR

/* Define to 1 if you have the `strspn' function. */
#undef HAVE_STRSPN

/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR

/* Define to 1 if you have the `strtod' function. */
#undef HAVE_STRTOD

/* Define to 1 if you have the `strtod_l' function. */
#undef HAVE_STRTOD_L

/* Define to 1 if you have the `strtol' function. */
#undef HAVE_STRTOL

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

/* Define to 1 if `tm_zone' is a member of `struct tm'. */
#undef HAVE_STRUCT_TM_TM_ZONE

/* Define to 1 if you have the <sun_prefetch.h> header file. */
#undef HAVE_SUN_PREFETCH_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/ipc.h> header file. */
#undef HAVE_SYS_IPC_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/select.h> header file. */
#undef HAVE_SYS_SELECT_H

/* Define to 1 if you have the <sys/sendfile.h> header file. */
#undef HAVE_SYS_SENDFILE_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/syslimits.h> header file. */
#undef HAVE_SYS_SYSLIMITS_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/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/wait.h> header file. */
#undef HAVE_SYS_WAIT_H

/* Define if you have the tcmalloc memory allocation library */
#undef HAVE_TCMALLOC

/* Define to 1 if you have the `telldir' function. */
#undef HAVE_TELLDIR

/* Define to 1 if you have the `tempnam' function. */
#undef HAVE_TEMPNAM

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

/* Define to 1 if you have the `TIFFIsBigEndian' function. */
#undef HAVE_TIFFISBIGENDIAN

/* Define to 1 if you have the `TIFFIsCODECConfigured' function. */
#undef HAVE_TIFFISCODECCONFIGURED

/* Define to 1 if you have the `TIFFMergeFieldInfo' function. */
#undef HAVE_TIFFMERGEFIELDINFO

/* Define to 1 if you have the `TIFFReadEXIFDirectory' function. */
#undef HAVE_TIFFREADEXIFDIRECTORY

/* Define to 1 if you have the `TIFFSetErrorHandlerExt' function. */
#undef HAVE_TIFFSETERRORHANDLEREXT

/* Define to 1 if you have the `TIFFSetTagExtender' function. */
#undef HAVE_TIFFSETTAGEXTENDER

/* Define to 1 if you have the `TIFFSetWarningHandlerExt' function. */
#undef HAVE_TIFFSETWARNINGHANDLEREXT

/* Define to 1 if you have the `TIFFSwabArrayOfTriples' function. */
#undef HAVE_TIFFSWABARRAYOFTRIPLES

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

/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
   `HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE

/* Define to 1 if you don't have `tm_zone' but do have the external array
   `tzname'. */
#undef HAVE_TZNAME

/* Define to 1 if the system has the type `uintmax_t'. */
#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 `ulltostr' function. */
#undef HAVE_ULLTOSTR

/* Define if you have umem memory allocation library */
#undef HAVE_UMEM

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

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

/* Define to 1 if you have the `uselocale' function. */
#undef HAVE_USELOCALE

/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP

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

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

/* Define to 1 if you have the `vfork' function. */
#undef HAVE_VFORK

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

/* Define to 1 if you have the `vfprintf' function. */
#undef HAVE_VFPRINTF

/* Define to 1 if you have the `vfprintf_l' function. */
#undef HAVE_VFPRINTF_L

/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF

/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF

/* Define to 1 if you have the `vsnprintf_l' function. */
#undef HAVE_VSNPRINTF_L

/* Define to 1 if you have the `vsprintf' function. */
#undef HAVE_VSPRINTF

/* Define to 1 if you have the `waitpid' function. */
#undef HAVE_WAITPID

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

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

/* Define to 1 if `fork' works. */
#undef HAVE_WORKING_FORK

/* Define to 1 if `vfork' works. */
#undef HAVE_WORKING_VFORK

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

/* Define to 1 if you have the `_aligned_malloc' function. */
#undef HAVE__ALIGNED_MALLOC

/* Define to 1 if the system has the type `_Bool'. */
#undef HAVE__BOOL

/* Define to 1 if you have the `_exit' function. */
#undef HAVE__EXIT

/* Define to 1 if you have the `_NSGetExecutablePath' function. */
#undef HAVE__NSGETEXECUTABLEPATH

/* Define to 1 if you have the `_pclose' function. */
#undef HAVE__PCLOSE

/* Define to 1 if you have the `_popen' function. */
#undef HAVE__POPEN

/* Define to 1 if you have the `_wfopen' function. */
#undef HAVE__WFOPEN

/* Define to 1 if you have the `_wstat' function. */
#undef HAVE__WSTAT

/* define if your compiler has __attribute__ */
#undef HAVE___ATTRIBUTE__

/* Whether hdri is enabled or not */
#undef HDRI_ENABLE_OBSOLETE_IN_H

/* Define if you have libheif library */
#undef HEIC_DELEGATE

/* Define if you have jemalloc memory allocation library */
#undef HasJEMALLOC

/* Directory where ImageMagick architecture headers live. */
#undef INCLUDEARCH_PATH

/* Directory where ImageMagick headers live. */
#undef INCLUDE_PATH

/* ImageMagick is formally installed under prefix */
#undef INSTALLED_SUPPORT

/* Define if you have JBIG library */
#undef JBIG_DELEGATE

/* Define if you have JPEG library */
#undef JPEG_DELEGATE

/* Define if you have brunsli library */
#undef JXL_DELEGATE

/* Define if you have LCMS library */
#undef LCMS_DELEGATE

/* Define if you have OPENJP2 library */
#undef LIBOPENJP2_DELEGATE

/* Directory where architecture-dependent files live. */
#undef LIBRARY_PATH

/* Subdirectory of lib where ImageMagick architecture dependent files are
   installed. */
#undef LIBRARY_RELATIVE_PATH

/* Binaries in libraries path base name (will be during install linked to bin)
   */
#undef LIB_BIN_BASEDIRNAME

/* Define if you have LQR library */
#undef LQR_DELEGATE

/* Define if using libltdl to support dynamically loadable modules and OpenCL
   */
#undef LTDL_DELEGATE

/* Native module suffix */
#undef LTDL_MODULE_EXT

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

/* Define if you have LZMA library */
#undef LZMA_DELEGATE

/* Define to prepend to default font search path. */
#undef MAGICK_FONT_PATH

/* Target Host CPU */
#undef MAGICK_TARGET_CPU

/* Target Host OS */
#undef MAGICK_TARGET_OS

/* Target Host Vendor */
#undef MAGICK_TARGET_VENDOR

/* Module directory name without ABI part. */
#undef MODULES_BASEDIRNAME

/* Module directory dirname */
#undef MODULES_DIRNAME

/* Magick API method prefix */
#undef NAMESPACE_PREFIX

/* Magick API method prefix tag */
#undef NAMESPACE_PREFIX_TAG

/* Define to 1 if assertions should be disabled. */
#undef NDEBUG

/* Define if you have OPENEXR library */
#undef OPENEXR_DELEGATE

/* 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 if you have PANGOCAIRO library */
#undef PANGOCAIRO_DELEGATE

/* Define if you have PANGO library */
#undef PANGO_DELEGATE

/* enable pipes (|) in filenames */
#undef PIPES_SUPPORT

/* Define if you have PNG library */
#undef PNG_DELEGATE

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

/* Pixel cache threshold in MB (defaults to available memory) */
#undef PixelCacheThreshold

/* Number of bits in a pixel Quantum (8/16/32/64) */
#undef QUANTUM_DEPTH_OBSOLETE_IN_H

/* Define if you have RAQM library */
#undef RAQM_DELEGATE

/* Define if you have LIBRAW library */
#undef RAW_R_DELEGATE

/* Define if you have RSVG library */
#undef RSVG_DELEGATE

/* Define to the type of arg 1 for `select'. */
#undef SELECT_TYPE_ARG1

/* Define to the type of args 2, 3 and 4 for `select'. */
#undef SELECT_TYPE_ARG234

/* Define to the type of arg 5 for `select'. */
#undef SELECT_TYPE_ARG5

/* Sharearch directory name without ABI part. */
#undef SHAREARCH_BASEDIRNAME

/* Sharearch directory dirname */
#undef SHAREARCH_DIRNAME

/* Directory where architecture-independent configuration files live. */
#undef SHARE_PATH

/* Subdirectory of lib where architecture-independent configuration files
   live. */
#undef SHARE_RELATIVE_PATH

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

/* The size of `double_t', as computed by sizeof. */
#undef SIZEOF_DOUBLE_T

/* The size of `float', as computed by sizeof. */
#undef SIZEOF_FLOAT

/* The size of `float_t', as computed by sizeof. */
#undef SIZEOF_FLOAT_T

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

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

/* The size of `void *', as computed by sizeof. */
#undef SIZEOF_VOID_P

/* 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 strerror_r returns char *. */
#undef STRERROR_R_CHAR_P

/* Define if you have POSIX threads libraries and header files. */
#undef THREAD_SUPPORT

/* Define if you have TIFF library */
#undef TIFF_DELEGATE

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

/* 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 if you have WEBPMUX library */
#undef WEBPMUX_DELEGATE

/* Define if you have WEBP library */
#undef WEBP_DELEGATE

/* Define to use the Windows GDI32 library */
#undef WINGDI32_DELEGATE

/* Define if using the dmalloc debugging malloc package */
#undef WITH_DMALLOC

/* Define if you have WMF library */
#undef WMF_DELEGATE

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

/* Location of X11 configure files */
#undef X11_CONFIGURE_PATH

/* Define if you have X11 library */
#undef X11_DELEGATE

/* Define if you have XML library */
#undef XML_DELEGATE

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

/* Build self-contained, embeddable, zero-configuration ImageMagick */
#undef ZERO_CONFIGURATION_SUPPORT

/* Define if you have ZLIB library */
#undef ZLIB_DELEGATE

/* Define if you have ZSTD library */
#undef ZSTD_DELEGATE

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

/* enable run-time bounds-checking */
#undef _FORTIFY_SOURCE

/* 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 this for the OpenCL Accelerator */
#undef _OPENCL

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

/* 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 for Solaris 2.5.1 so the uint8_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 _UINT8_T

/* Define to 1 if type `char' is unsigned and you are not using gcc.  */
#ifndef __CHAR_UNSIGNED__
# undef __CHAR_UNSIGNED__
#endif

/* Define to appropriate substitute if compiler does not have __func__ */
#undef __func__

/* Define to empty if `const' does not conform to ANSI C. */
#undef const

/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t

/* 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 type of a signed integer type of width exactly 16 bits if
   such a type exists and the standard includes do not define it. */
#undef int16_t

/* Define to the type of a signed integer type of width exactly 32 bits if
   such a type exists and the standard includes do not define it. */
#undef int32_t

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

/* Define to the type of a signed integer type of width exactly 8 bits if such
   a type exists and the standard includes do not define it. */
#undef int8_t

/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
   not define. */
#undef intmax_t

/* Define to the type of a signed integer type wide enough to hold a pointer,
   if such a type exists, and if the system does not define it. */
#undef intptr_t

/* Define to a type if <wchar.h> does not define. */
#undef mbstate_t

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

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

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

/* 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 `unsigned int' if <sys/types.h> does not define. */
#undef size_t

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

/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t

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

/* Define to the type of an unsigned integer type of width exactly 32 bits if
   such a type exists and the standard includes do not define it. */
#undef uint32_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 the type of an unsigned integer type of width exactly 8 bits if
   such a type exists and the standard includes do not define it. */
#undef uint8_t

/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
   do not define. */
#undef uintmax_t

/* Define to the type of an unsigned integer type wide enough to hold a
   pointer, if such a type exists, and if the system does not define it. */
#undef uintptr_t

/* Define as `fork' if `vfork' does not work. */
#undef vfork

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