// From chromium's buildtools/third_party/libc++/__config_site

#ifndef _LIBCPP_CONFIG_SITE
#define _LIBCPP_CONFIG_SITE

// We set a custom _LIBCPP_ABI_NAMESPACE for the following reasons:
//
// 1. When libcxx_is_shared is true, symbols from libc++.so are exported for all
//    DSOs to use.  If the system libc++ gets loaded (indirectly through a
//    a system library), then it will conflict with our libc++.so.
// 2. The default value of _LIBCPP_ABI_NAMESPACE is the string
//    "_LIBCPP_ABI_NAMESPACE". This contributes to an increase in binary size;
//    on Windows, the increase is great enough that we go above the 4GB size
//    limit for PDBs (https://crbug.com/1327710#c5). To fix this, we set
//    _LIBCPP_ABI_NAMESPACE to a shorter value.
#define _LIBCPP_ABI_NAMESPACE __Cr

#define _LIBCPP_ABI_VERSION 2

/* #undef _LIBCPP_ABI_FORCE_ITANIUM */
/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
/* #undef _LIBCPP_HAS_NO_THREADS */
/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
/* #undef _LIBCPP_HAS_MUSL_LIBC */
/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
/* #undef _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL */
/* #undef _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS */
#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
/* #undef _LIBCPP_NO_VCRUNTIME */
/* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */
/* #undef _LIBCPP_HAS_NO_FILESYSTEM */
/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */
/* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */
/* #undef _LIBCPP_HAS_NO_LOCALIZATION */
/* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */

// TODO(thakis): Is this right?
/* #undef _LIBCPP_HAS_NO_STD_MODULES */

// TODO(thakis): Is this right?
/* #undef _LIBCPP_HAS_NO_TIME_ZONE_DATABASE */

#define _LIBCPP_INSTRUMENTED_WITH_ASAN

// PSTL backends
/* #undef _LIBCPP_PSTL_BACKEND_SERIAL */
#if defined(__APPLE__)
#define _LIBCPP_PSTL_BACKEND_LIBDISPATCH
#else
#define _LIBCPP_PSTL_BACKEND_STD_THREAD
#endif

// PSTL backends, old spelling
// TODO(thakis): Remove these after the next libc++ roll is in.
/* #undef _LIBCPP_PSTL_CPU_BACKEND_SERIAL */
#if defined(__APPLE__)
#define _LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH
#else
#define _LIBCPP_PSTL_CPU_BACKEND_THREAD
#endif

// Settings below aren't part of __config_site upstream.
// We set them here since we want them to take effect everywhere,
// unconditionally.

// Prevent libc++ from embedding linker flags to try to automatically link
// against its runtime library. This is unnecessary with our build system,
// and can also result in build failures if libc++'s name for a library
// does not match ours.  Only has an effect on Windows.
#define _LIBCPP_NO_AUTO_LINK

#define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES

// Don't add ABI tags to libc++ symbols. ABI tags increase mangled name sizes.
// This only exists to allow multiple // libc++ versions to be linked into a
// binary, which Chrome doesn't do.
#define _LIBCPP_NO_ABI_TAG

// Explicitly define  _LIBCPP_VERBOSE_ABORT(...) to call the termination
// function because by default, this macro will does not call the verbose
// termination function on Apple platforms.
#define _LIBCPP_VERBOSE_ABORT(...) ::std::__libcpp_verbose_abort(__VA_ARGS__)

// TODO(crbug.com/40272953) Link against compiler-rt's builtins library to
// enable 128-arithmetic.
#if defined(_WIN32)
#define _LIBCPP_HAS_NO_INT128
#endif

// TODO(thakis): Remove this after LLVM 19's libc++ is rolled in.
#define _LIBCPP_CHAR_TRAITS_REMOVE_BASE_SPECIALIZATION

#define _LIBCPP_HARDENING_MODE_DEFAULT _LIBCPP_HARDENING_MODE_NONE
#endif // _LIBCPP_CONFIG_SITE
