• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#ifndef _LIBCPP_CONFIG_SITE
2#define _LIBCPP_CONFIG_SITE
3
4// We set a custom _LIBCPP_ABI_NAMESPACE for the following reasons:
5//
6// 1. When libcxx_is_shared is true, symbols from libc++.so are exported for all
7//    DSOs to use.  If the system libc++ gets loaded (indirectly through a
8//    a system library), then it will conflict with our libc++.so.
9// 2. The default value of _LIBCPP_ABI_NAMESPACE is the string
10//    "_LIBCPP_ABI_NAMESPACE". This contributes to an increase in binary size;
11//    on Windows, the increase is great enough that we go above the 4GB size
12//    limit for PDBs (https://crbug.com/1327710#c5). To fix this, we set
13//    _LIBCPP_ABI_NAMESPACE to a shorter value.
14#define _LIBCPP_ABI_NAMESPACE __Cr
15#define _LIBCPP_ABI_VERSION 2
16
17/* #undef _LIBCPP_ABI_FORCE_ITANIUM */
18/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
19/* #undef _LIBCPP_HAS_NO_THREADS */
20/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
21/* #undef _LIBCPP_HAS_MUSL_LIBC */
22/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
23/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
24/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
25/* #undef _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL */
26/* #undef _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS */
27#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
28/* #undef _LIBCPP_NO_VCRUNTIME */
29/* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */
30/* #undef _LIBCPP_HAS_NO_FILESYSTEM */
31/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */
32/* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */
33/* #undef _LIBCPP_HAS_NO_LOCALIZATION */
34/* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */
35
36// PSTL backends
37/* #undef _LIBCPP_PSTL_CPU_BACKEND_SERIAL */
38#if defined(__APPLE__)
39#define _LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH
40#else
41#define _LIBCPP_PSTL_CPU_BACKEND_THREAD
42#endif
43
44// Settings below aren't part of __config_site upstream.
45// We set them here since we want them to take effect everywhere,
46// unconditionally.
47
48// Prevent libc++ from embedding linker flags to try to automatically link
49// against its runtime library. This is unnecessary with our build system,
50// and can also result in build failures if libc++'s name for a library
51// does not match ours.  Only has an effect on Windows.
52#define _LIBCPP_NO_AUTO_LINK
53
54#define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES
55
56// Don't add ABI tags to libc++ symbols. ABI tags increase mangled name sizes.
57// This only exists to allow multiple // libc++ versions to be linked into a
58// binary, which Chrome doesn't do.
59#define _LIBCPP_NO_ABI_TAG
60
61// Explicitly define  _LIBCPP_VERBOSE_ABORT(...) to call the termination
62// function because by default, this macro will does not call the verbose
63// termination function on Apple platforms.
64#define _LIBCPP_VERBOSE_ABORT(...) ::std::__libcpp_verbose_abort(__VA_ARGS__)
65
66// TODO(crbug.com/1455923) Link against compiler-rt's builtins library to
67// enable 128-arithmetic.
68#if defined(_WIN32)
69#define _LIBCPP_HAS_NO_INT128
70#endif
71
72// TODO(thakis): Remove this after LLVM 19's libc++ is rolled in.
73#define _LIBCPP_CHAR_TRAITS_REMOVE_BASE_SPECIALIZATION
74
75#endif // _LIBCPP_CONFIG_SITE
76