/* !!!
 * If you're looking at config.h and thinking of editing - this is a
 * generated file. See build/config.h.in, unless you're just twiddling
 * to get things to work on your platform before updating Configure,
 * in which case go right ahead. :-)
 * !!!
 */

/* Version information. */
#define MVM_VERSION "@version@"
#define MVM_VERSION_MAJOR @versionmajor@
#define MVM_VERSION_MINOR @versionminor@
#define MVM_VERSION_PATCH @versionpatch@

/* Various compiler-specific pragmii. */
#define MVM_NO_RETURN @noreturnspecifier@
#define MVM_NO_RETURN_ATTRIBUTE @noreturnattribute@
#define MVM_FORMAT(X, Y, Z) @formatattribute@
#define MVM_FALLTHROUGH @fallthrough@

/* DLL interface definitions. */
#define MVM_DLL_IMPORT @dllimport@
#define MVM_DLL_EXPORT @dllexport@
#define MVM_DLL_LOCAL  @dlllocal@

/* Set in case of big-endian sytems.
 * The default byte order is little-endian. */
#if @be@
#define MVM_BIGENDIAN @be@
#endif

/* pthread_yield() detection */
#if @has_pthread_yield@
#define MVM_HAS_PTHREAD_YIELD @has_pthread_yield@
#endif

/* pthread_setname_np() detection */
#if @has_pthread_setname_np@
#define MVM_HAS_PTHREAD_SETNAME_NP @has_pthread_setname_np@
#endif

#if @has_fn_malloc_trim@
#define MVM_HAS_FN_MALLOC_TRIM @has_fn_malloc_trim@
#endif

/* How this compiler does static inline functions. */
#define MVM_STATIC_INLINE @static_inline@

#if @has_thread_local@
/* How this compiler declares thread local storage. */
#define MVM_THREAD_LOCAL @thread_local@
#endif

#if @can_unaligned_int32@
#define MVM_CAN_UNALIGNED_INT32
#endif

#if @can_unaligned_int64@
#define MVM_CAN_UNALIGNED_INT64
#endif

#if @can_unaligned_num64@
#define MVM_CAN_UNALIGNED_NUM64
#endif

#define MVM_PTR_SIZE @ptr_size@

#if @has_substandard_pow@
#define MVM_HAS_SUBSTANDARD_POW
#endif

#if @has_substandard_log@
#define MVM_HAS_SUBSTANDARD_LOG
#endif

#if @has_substandard_log10@
#define MVM_HAS_SUBSTANDARD_LOG10
#endif

#if @has_substandard_asin@
#define MVM_HAS_SUBSTANDARD_ASIN
#endif

#if @has_substandard_acos@
#define MVM_HAS_SUBSTANDARD_ACOS
#endif

#if @has_booltype@
#define MVM_BOOL @booltype@
#endif

#if @has_rdtscp@
#define MVM_HAS_RDTSCP
#endif

#if @has_isinf@
#define MVM_HAS_ISINF
#endif

#if @has_isnan@
#define MVM_HAS_ISNAN
#endif

#if @has_signbit@
#define MVM_HAS_SIGNBIT
#endif

#if @use_mimalloc@
#define MVM_USE_MIMALLOC
#endif

#if @use_c11_atomics@
#define MVM_USE_C11_ATOMICS
#endif

/* Should we translate \n to \r\n on output? */
#define MVM_TRANSLATE_NEWLINE_OUTPUT @translate_newline_output@

#define MVM_JIT_ARCH @jit_arch@
#define MVM_JIT_PLATFORM @jit_platform@

#define MVM_VECTORIZE_LOOP @vectorizerspecifier@

/* Branch condition compiler hints */
#define MVM_LIKELY(condition) @expect_likely@
#define MVM_UNLIKELY(condition) @expect_unlikely@
#define MVM_EXPECT(condition, expection) @expect_condition@
