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

/* Custom modes */
#undef CUSTOM_MODES

/* Do not build the float API */
#undef DISABLE_FLOAT_API

/* Assertions */
#undef ENABLE_ASSERTIONS

/* Debug fixed-point implementation */
#undef FIXED_DEBUG

/* Compile as fixed-point (for machines without a fast enough FPU) */
#undef FIXED_POINT

/* Float approximations */
#undef FLOAT_APPROX

/* Fuzzing */
#undef FUZZING

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

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

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

/* Define to 1 if you have the `lrint' function. */
#undef HAVE_LRINT

/* Define to 1 if you have the `lrintf' function. */
#undef HAVE_LRINTF

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_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 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 <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

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

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

/* Define to 1 if you have the `__malloc_hook' function. */
#undef HAVE___MALLOC_HOOK

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

/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O

/* Make use of ARM asm optimization */
#undef OPUS_ARM_ASM

/* Use generic ARMv4 inline asm optimizations */
#undef OPUS_ARM_INLINE_ASM

/* Use ARMv5E inline asm optimizations */
#undef OPUS_ARM_INLINE_EDSP

/* Use ARMv6 inline asm optimizations */
#undef OPUS_ARM_INLINE_MEDIA

/* Use ARM NEON inline asm optimizations */
#undef OPUS_ARM_INLINE_NEON

/* Define if assembler supports EDSP instructions */
#undef OPUS_ARM_MAY_HAVE_EDSP

/* Define if assembler supports ARMv6 media instructions */
#undef OPUS_ARM_MAY_HAVE_MEDIA

/* Define if compiler supports NEON instructions */
#undef OPUS_ARM_MAY_HAVE_NEON

/* Define if binary requires EDSP instruction support */
#undef OPUS_ARM_PRESUME_EDSP

/* Define if binary requires ARMv6 media instruction support */
#undef OPUS_ARM_PRESUME_MEDIA

/* Define if binary requires NEON instruction support */
#undef OPUS_ARM_PRESUME_NEON

/* This is a build of OPUS */
#undef OPUS_BUILD

/* Use run-time CPU capabilities detection */
#undef OPUS_HAVE_RTCD

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

/* Make use of alloca */
#undef USE_ALLOCA

/* Use C99 variable-size arrays */
#undef VAR_ARRAYS

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