// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

#pragma once

#define SEAL_VERSION "@SEAL_VERSION@"
#define SEAL_VERSION_MAJOR @SEAL_VERSION_MAJOR@
#define SEAL_VERSION_MINOR @SEAL_VERSION_MINOR@
#define SEAL_VERSION_PATCH @SEAL_VERSION_PATCH@

// Are we in debug mode?
#cmakedefine SEAL_DEBUG

// C++17 features
#cmakedefine SEAL_USE_STD_BYTE
#cmakedefine SEAL_USE_ALIGNED_ALLOC
#cmakedefine SEAL_USE_SHARED_MUTEX
#cmakedefine SEAL_USE_IF_CONSTEXPR
#cmakedefine SEAL_USE_MAYBE_UNUSED
#cmakedefine SEAL_USE_NODISCARD
#cmakedefine SEAL_USE_STD_FOR_EACH_N

// Security
#cmakedefine SEAL_THROW_ON_TRANSPARENT_CIPHERTEXT
#cmakedefine SEAL_USE_GAUSSIAN_NOISE
#cmakedefine SEAL_DEFAULT_PRNG @SEAL_DEFAULT_PRNG@
#cmakedefine SEAL_AVOID_BRANCHING

// Intrinsics
#cmakedefine SEAL_USE_INTRIN
#cmakedefine SEAL_USE__UMUL128
#cmakedefine SEAL_USE__BITSCANREVERSE64
#cmakedefine SEAL_USE___BUILTIN_CLZLL
#cmakedefine SEAL_USE___INT128
#cmakedefine SEAL_USE__ADDCARRY_U64
#cmakedefine SEAL_USE__SUBBORROW_U64

// Zero memory functions
#cmakedefine SEAL_USE_EXPLICIT_BZERO
#cmakedefine SEAL_USE_EXPLICIT_MEMSET
#cmakedefine SEAL_USE_MEMSET_S

// Third-party dependencies
#cmakedefine SEAL_USE_MSGSL
#cmakedefine SEAL_USE_ZLIB
#cmakedefine SEAL_USE_ZSTD
#cmakedefine SEAL_USE_INTEL_HEXL
