[libcxx-commits] [libcxx] [libc++] Make the __availability header a sub-header of __config (PR #93083)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue May 28 04:23:22 PDT 2024
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/93083
>From ef9515f653a4b297bf37c1ba9f157dd32bc0af1f Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Fri, 3 May 2024 14:49:31 -0600
Subject: [PATCH] [libc++] Make the __availability header a sub-header of
__config
In essence, this header has always been related to configuration of
the library but we didn't want to put it inside <__config> due to
complexity reasons. Now that we have sub-headers in <__config>, we
can move <__availability> to it and stop including it everywhere since
we already obtain the required macros via <__config>.
---
libcxx/CMakeLists.txt | 2 +-
libcxx/include/CMakeLists.txt | 3 +-
libcxx/include/__atomic/atomic_base.h | 1 -
libcxx/include/__atomic/atomic_flag.h | 1 -
libcxx/include/__atomic/atomic_sync.h | 1 -
.../__charconv/to_chars_floating_point.h | 1 -
libcxx/include/__chrono/file_clock.h | 1 -
libcxx/include/__chrono/tzdb_list.h | 1 -
libcxx/include/__config | 29 +-----------
.../availability.h} | 9 ++--
libcxx/include/__configuration/language.h | 46 +++++++++++++++++++
libcxx/include/__exception/exception_ptr.h | 1 -
.../include/__expected/bad_expected_access.h | 1 -
libcxx/include/__filesystem/directory_entry.h | 1 -
.../include/__filesystem/directory_iterator.h | 1 -
.../include/__filesystem/filesystem_error.h | 1 -
libcxx/include/__filesystem/operations.h | 1 -
libcxx/include/__filesystem/path.h | 1 -
libcxx/include/__filesystem/path_iterator.h | 1 -
.../recursive_directory_iterator.h | 1 -
libcxx/include/__filesystem/u8path.h | 1 -
libcxx/include/__functional/function.h | 1 -
libcxx/include/__fwd/memory_resource.h | 1 -
libcxx/include/__fwd/string.h | 1 -
.../__memory_resource/memory_resource.h | 1 -
.../monotonic_buffer_resource.h | 1 -
.../__memory_resource/polymorphic_allocator.h | 1 -
.../synchronized_pool_resource.h | 1 -
.../unsynchronized_pool_resource.h | 1 -
libcxx/include/__ostream/print.h | 1 -
libcxx/include/__stop_token/stop_callback.h | 1 -
libcxx/include/__stop_token/stop_source.h | 1 -
libcxx/include/__stop_token/stop_state.h | 1 -
libcxx/include/__stop_token/stop_token.h | 1 -
libcxx/include/__thread/jthread.h | 1 -
libcxx/include/__thread/poll_with_backoff.h | 1 -
libcxx/include/__verbose_abort | 1 -
libcxx/include/barrier | 1 -
libcxx/include/condition_variable | 1 -
libcxx/include/deque | 1 -
libcxx/include/forward_list | 1 -
libcxx/include/fstream | 1 -
libcxx/include/latch | 1 -
libcxx/include/list | 1 -
libcxx/include/map | 1 -
libcxx/include/module.modulemap | 6 +--
libcxx/include/optional | 1 -
libcxx/include/print | 1 -
libcxx/include/regex | 1 -
libcxx/include/semaphore | 1 -
libcxx/include/set | 1 -
libcxx/include/sstream | 1 -
libcxx/include/unordered_map | 1 -
libcxx/include/unordered_set | 1 -
libcxx/include/variant | 1 -
libcxx/include/vector | 1 -
libcxx/include/version | 1 -
libcxx/src/optional.cpp | 1 -
libcxx/src/ostream.cpp | 1 -
...lity-with-pedantic-errors.compile.pass.cpp | 2 +-
.../generate_feature_test_macro_components.py | 4 +-
61 files changed, 60 insertions(+), 94 deletions(-)
rename libcxx/include/{__availability => __configuration/availability.h} (98%)
create mode 100644 libcxx/include/__configuration/language.h
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index cb5e0e5e6cdb5..bbde9abc57919 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -122,7 +122,7 @@ option(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS
on definitions in a shared library. By default, we assume that we're not building
libc++ for any specific vendor, and we disable those annotations. Vendors wishing
to provide compile-time errors when using features unavailable on some version of
- the shared library they shipped should turn this on and see `include/__availability`
+ the shared library they shipped should turn this on and see `include/__configuration/availability.h`
for more details." OFF)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 161d7a7d215bd..cfe1f44777bca 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -219,7 +219,6 @@ set(files
__atomic/kill_dependency.h
__atomic/memory_order.h
__atomic/to_gcc_order.h
- __availability
__bit/bit_cast.h
__bit/bit_ceil.h
__bit/bit_floor.h
@@ -315,7 +314,9 @@ set(files
__condition_variable/condition_variable.h
__config
__configuration/abi.h
+ __configuration/availability.h
__configuration/compiler.h
+ __configuration/language.h
__configuration/platform.h
__coroutine/coroutine_handle.h
__coroutine/coroutine_traits.h
diff --git a/libcxx/include/__atomic/atomic_base.h b/libcxx/include/__atomic/atomic_base.h
index e9badccc25a62..d7a5b99b54691 100644
--- a/libcxx/include/__atomic/atomic_base.h
+++ b/libcxx/include/__atomic/atomic_base.h
@@ -14,7 +14,6 @@
#include <__atomic/cxx_atomic_impl.h>
#include <__atomic/is_always_lock_free.h>
#include <__atomic/memory_order.h>
-#include <__availability>
#include <__config>
#include <__memory/addressof.h>
#include <__type_traits/is_integral.h>
diff --git a/libcxx/include/__atomic/atomic_flag.h b/libcxx/include/__atomic/atomic_flag.h
index 3ec3366ecaaf9..00b157cdff78b 100644
--- a/libcxx/include/__atomic/atomic_flag.h
+++ b/libcxx/include/__atomic/atomic_flag.h
@@ -13,7 +13,6 @@
#include <__atomic/contention_t.h>
#include <__atomic/cxx_atomic_impl.h>
#include <__atomic/memory_order.h>
-#include <__availability>
#include <__chrono/duration.h>
#include <__config>
#include <__memory/addressof.h>
diff --git a/libcxx/include/__atomic/atomic_sync.h b/libcxx/include/__atomic/atomic_sync.h
index 175700be54c01..1de5037329f81 100644
--- a/libcxx/include/__atomic/atomic_sync.h
+++ b/libcxx/include/__atomic/atomic_sync.h
@@ -13,7 +13,6 @@
#include <__atomic/cxx_atomic_impl.h>
#include <__atomic/memory_order.h>
#include <__atomic/to_gcc_order.h>
-#include <__availability>
#include <__chrono/duration.h>
#include <__config>
#include <__memory/addressof.h>
diff --git a/libcxx/include/__charconv/to_chars_floating_point.h b/libcxx/include/__charconv/to_chars_floating_point.h
index 08720e1078852..118f316b21a10 100644
--- a/libcxx/include/__charconv/to_chars_floating_point.h
+++ b/libcxx/include/__charconv/to_chars_floating_point.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H
#define _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H
-#include <__availability>
#include <__charconv/chars_format.h>
#include <__charconv/to_chars_result.h>
#include <__config>
diff --git a/libcxx/include/__chrono/file_clock.h b/libcxx/include/__chrono/file_clock.h
index 7d25729fec013..4dd3f88ce5ba4 100644
--- a/libcxx/include/__chrono/file_clock.h
+++ b/libcxx/include/__chrono/file_clock.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___CHRONO_FILE_CLOCK_H
#define _LIBCPP___CHRONO_FILE_CLOCK_H
-#include <__availability>
#include <__chrono/duration.h>
#include <__chrono/system_clock.h>
#include <__chrono/time_point.h>
diff --git a/libcxx/include/__chrono/tzdb_list.h b/libcxx/include/__chrono/tzdb_list.h
index 62db7e3d2e0b5..aeef4fe1aba3c 100644
--- a/libcxx/include/__chrono/tzdb_list.h
+++ b/libcxx/include/__chrono/tzdb_list.h
@@ -16,7 +16,6 @@
// Enable the contents of the header only when libc++ was built with experimental features enabled.
#if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_TZDB)
-# include <__availability>
# include <__chrono/time_zone.h>
# include <__chrono/tzdb.h>
# include <__config>
diff --git a/libcxx/include/__config b/libcxx/include/__config
index e048dad52c466..79422e8f6c5d1 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -12,6 +12,7 @@
#include <__config_site>
#include <__configuration/abi.h>
+#include <__configuration/availability.h>
#include <__configuration/compiler.h>
#include <__configuration/platform.h>
@@ -35,25 +36,6 @@
# define _LIBCPP_FREESTANDING
# endif
-// NOLINTBEGIN(libcpp-cpp-version-check)
-# ifndef _LIBCPP_STD_VER
-# if __cplusplus <= 201103L
-# define _LIBCPP_STD_VER 11
-# elif __cplusplus <= 201402L
-# define _LIBCPP_STD_VER 14
-# elif __cplusplus <= 201703L
-# define _LIBCPP_STD_VER 17
-# elif __cplusplus <= 202002L
-# define _LIBCPP_STD_VER 20
-# elif __cplusplus <= 202302L
-# define _LIBCPP_STD_VER 23
-# else
-// Expected release year of the next C++ standard
-# define _LIBCPP_STD_VER 26
-# endif
-# endif // _LIBCPP_STD_VER
-// NOLINTEND(libcpp-cpp-version-check)
-
// HARDENING {
// TODO(hardening): deprecate this in LLVM 19.
@@ -364,10 +346,6 @@ typedef __char32_t char32_t;
# endif
-# if !defined(__cpp_exceptions) || __cpp_exceptions < 199711L
-# define _LIBCPP_HAS_NO_EXCEPTIONS
-# endif
-
# define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp)
# if defined(_LIBCPP_COMPILER_CLANG_BASED)
@@ -840,11 +818,6 @@ typedef __char32_t char32_t;
# define _LIBCPP_CONSTEXPR_SINCE_CXX23
# endif
-// Try to find out if RTTI is disabled.
-# if !defined(__cpp_rtti) || __cpp_rtti < 199711L
-# define _LIBCPP_HAS_NO_RTTI
-# endif
-
# ifndef _LIBCPP_WEAK
# define _LIBCPP_WEAK __attribute__((__weak__))
# endif
diff --git a/libcxx/include/__availability b/libcxx/include/__configuration/availability.h
similarity index 98%
rename from libcxx/include/__availability
rename to libcxx/include/__configuration/availability.h
index e44ac1962df36..1115431115ec3 100644
--- a/libcxx/include/__availability
+++ b/libcxx/include/__configuration/availability.h
@@ -7,10 +7,11 @@
//
//===----------------------------------------------------------------------===//
-#ifndef _LIBCPP___AVAILABILITY
-#define _LIBCPP___AVAILABILITY
+#ifndef _LIBCPP___CONFIGURATION_AVAILABILITY_H
+#define _LIBCPP___CONFIGURATION_AVAILABILITY_H
-#include <__config>
+#include <__configuration/compiler.h>
+#include <__configuration/language.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -374,4 +375,4 @@
# define _LIBCPP_AVAILABILITY_INIT_PRIMARY_EXCEPTION
#endif
-#endif // _LIBCPP___AVAILABILITY
+#endif // _LIBCPP___CONFIGURATION_AVAILABILITY_H
diff --git a/libcxx/include/__configuration/language.h b/libcxx/include/__configuration/language.h
new file mode 100644
index 0000000000000..fa62a7b6f5c2a
--- /dev/null
+++ b/libcxx/include/__configuration/language.h
@@ -0,0 +1,46 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___CONFIGURATION_LANGUAGE_H
+#define _LIBCPP___CONFIGURATION_LANGUAGE_H
+
+#include <__config_site>
+
+#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
+# pragma GCC system_header
+#endif
+
+// NOLINTBEGIN(libcpp-cpp-version-check)
+#ifdef __cplusplus
+# if __cplusplus <= 201103L
+# define _LIBCPP_STD_VER 11
+# elif __cplusplus <= 201402L
+# define _LIBCPP_STD_VER 14
+# elif __cplusplus <= 201703L
+# define _LIBCPP_STD_VER 17
+# elif __cplusplus <= 202002L
+# define _LIBCPP_STD_VER 20
+# elif __cplusplus <= 202302L
+# define _LIBCPP_STD_VER 23
+# else
+// Expected release year of the next C++ standard
+# define _LIBCPP_STD_VER 26
+# endif
+#endif // __cplusplus
+// NOLINTEND(libcpp-cpp-version-check)
+
+#if !defined(__cpp_rtti) || __cpp_rtti < 199711L
+# define _LIBCPP_HAS_NO_RTTI
+#endif
+
+#if !defined(__cpp_exceptions) || __cpp_exceptions < 199711L
+# define _LIBCPP_HAS_NO_EXCEPTIONS
+#endif
+
+#endif // _LIBCPP___CONFIGURATION_LANGUAGE_H
diff --git a/libcxx/include/__exception/exception_ptr.h b/libcxx/include/__exception/exception_ptr.h
index 868fd7c015339..0a8337fa39de3 100644
--- a/libcxx/include/__exception/exception_ptr.h
+++ b/libcxx/include/__exception/exception_ptr.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___EXCEPTION_EXCEPTION_PTR_H
#define _LIBCPP___EXCEPTION_EXCEPTION_PTR_H
-#include <__availability>
#include <__config>
#include <__exception/operations.h>
#include <__memory/addressof.h>
diff --git a/libcxx/include/__expected/bad_expected_access.h b/libcxx/include/__expected/bad_expected_access.h
index ef29fa5088313..1b734389e8311 100644
--- a/libcxx/include/__expected/bad_expected_access.h
+++ b/libcxx/include/__expected/bad_expected_access.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H
#define _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H
-#include <__availability>
#include <__config>
#include <__exception/exception.h>
#include <__utility/move.h>
diff --git a/libcxx/include/__filesystem/directory_entry.h b/libcxx/include/__filesystem/directory_entry.h
index 016ad94a853dc..96d88dcd90b4c 100644
--- a/libcxx/include/__filesystem/directory_entry.h
+++ b/libcxx/include/__filesystem/directory_entry.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H
#define _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H
-#include <__availability>
#include <__chrono/time_point.h>
#include <__compare/ordering.h>
#include <__config>
diff --git a/libcxx/include/__filesystem/directory_iterator.h b/libcxx/include/__filesystem/directory_iterator.h
index a5aa5ff5432da..e0246d8001e19 100644
--- a/libcxx/include/__filesystem/directory_iterator.h
+++ b/libcxx/include/__filesystem/directory_iterator.h
@@ -11,7 +11,6 @@
#define _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H
#include <__assert>
-#include <__availability>
#include <__config>
#include <__filesystem/directory_entry.h>
#include <__filesystem/directory_options.h>
diff --git a/libcxx/include/__filesystem/filesystem_error.h b/libcxx/include/__filesystem/filesystem_error.h
index bfdcc5eaee521..80a11e3b1932c 100644
--- a/libcxx/include/__filesystem/filesystem_error.h
+++ b/libcxx/include/__filesystem/filesystem_error.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H
#define _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H
-#include <__availability>
#include <__config>
#include <__filesystem/path.h>
#include <__memory/shared_ptr.h>
diff --git a/libcxx/include/__filesystem/operations.h b/libcxx/include/__filesystem/operations.h
index 9bb83576f54bc..f588189ed1d9d 100644
--- a/libcxx/include/__filesystem/operations.h
+++ b/libcxx/include/__filesystem/operations.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___FILESYSTEM_OPERATIONS_H
#define _LIBCPP___FILESYSTEM_OPERATIONS_H
-#include <__availability>
#include <__chrono/time_point.h>
#include <__config>
#include <__filesystem/copy_options.h>
diff --git a/libcxx/include/__filesystem/path.h b/libcxx/include/__filesystem/path.h
index 89d319b4b19b5..ff468d517722f 100644
--- a/libcxx/include/__filesystem/path.h
+++ b/libcxx/include/__filesystem/path.h
@@ -12,7 +12,6 @@
#include <__algorithm/replace.h>
#include <__algorithm/replace_copy.h>
-#include <__availability>
#include <__config>
#include <__functional/unary_function.h>
#include <__fwd/functional.h>
diff --git a/libcxx/include/__filesystem/path_iterator.h b/libcxx/include/__filesystem/path_iterator.h
index d2d65cd122cab..f4d486d86cf38 100644
--- a/libcxx/include/__filesystem/path_iterator.h
+++ b/libcxx/include/__filesystem/path_iterator.h
@@ -11,7 +11,6 @@
#define _LIBCPP___FILESYSTEM_PATH_ITERATOR_H
#include <__assert>
-#include <__availability>
#include <__config>
#include <__filesystem/path.h>
#include <__iterator/iterator_traits.h>
diff --git a/libcxx/include/__filesystem/recursive_directory_iterator.h b/libcxx/include/__filesystem/recursive_directory_iterator.h
index a8af4f73b14a5..caa1396eb301f 100644
--- a/libcxx/include/__filesystem/recursive_directory_iterator.h
+++ b/libcxx/include/__filesystem/recursive_directory_iterator.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H
#define _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H
-#include <__availability>
#include <__config>
#include <__filesystem/directory_entry.h>
#include <__filesystem/directory_options.h>
diff --git a/libcxx/include/__filesystem/u8path.h b/libcxx/include/__filesystem/u8path.h
index bde878054865e..dae5823128f02 100644
--- a/libcxx/include/__filesystem/u8path.h
+++ b/libcxx/include/__filesystem/u8path.h
@@ -11,7 +11,6 @@
#define _LIBCPP___FILESYSTEM_U8PATH_H
#include <__algorithm/unwrap_iter.h>
-#include <__availability>
#include <__config>
#include <__filesystem/path.h>
#include <string>
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 36057706933d4..244e55be3403c 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -11,7 +11,6 @@
#define _LIBCPP___FUNCTIONAL_FUNCTION_H
#include <__assert>
-#include <__availability>
#include <__config>
#include <__exception/exception.h>
#include <__functional/binary_function.h>
diff --git a/libcxx/include/__fwd/memory_resource.h b/libcxx/include/__fwd/memory_resource.h
index 03b78ad2bd3c0..d68b2c2b63154 100644
--- a/libcxx/include/__fwd/memory_resource.h
+++ b/libcxx/include/__fwd/memory_resource.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___FWD_MEMORY_RESOURCE_H
#define _LIBCPP___FWD_MEMORY_RESOURCE_H
-#include <__availability>
#include <__config>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__fwd/string.h b/libcxx/include/__fwd/string.h
index 320c4e4c81836..2418e1f9b23d0 100644
--- a/libcxx/include/__fwd/string.h
+++ b/libcxx/include/__fwd/string.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___FWD_STRING_H
#define _LIBCPP___FWD_STRING_H
-#include <__availability>
#include <__config>
#include <__fwd/memory.h>
#include <__fwd/memory_resource.h>
diff --git a/libcxx/include/__memory_resource/memory_resource.h b/libcxx/include/__memory_resource/memory_resource.h
index e605838bf5ea4..ea85e50cd568b 100644
--- a/libcxx/include/__memory_resource/memory_resource.h
+++ b/libcxx/include/__memory_resource/memory_resource.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___MEMORY_RESOURCE_MEMORY_RESOURCE_H
#define _LIBCPP___MEMORY_RESOURCE_MEMORY_RESOURCE_H
-#include <__availability>
#include <__config>
#include <__fwd/memory_resource.h>
#include <cstddef>
diff --git a/libcxx/include/__memory_resource/monotonic_buffer_resource.h b/libcxx/include/__memory_resource/monotonic_buffer_resource.h
index 0c83f1ebc8db4..f45b30fdb3861 100644
--- a/libcxx/include/__memory_resource/monotonic_buffer_resource.h
+++ b/libcxx/include/__memory_resource/monotonic_buffer_resource.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___MEMORY_RESOURCE_MONOTONIC_BUFFER_RESOURCE_H
#define _LIBCPP___MEMORY_RESOURCE_MONOTONIC_BUFFER_RESOURCE_H
-#include <__availability>
#include <__config>
#include <__memory/addressof.h>
#include <__memory_resource/memory_resource.h>
diff --git a/libcxx/include/__memory_resource/polymorphic_allocator.h b/libcxx/include/__memory_resource/polymorphic_allocator.h
index 8fda201124387..a71096d3e4784 100644
--- a/libcxx/include/__memory_resource/polymorphic_allocator.h
+++ b/libcxx/include/__memory_resource/polymorphic_allocator.h
@@ -10,7 +10,6 @@
#define _LIBCPP___MEMORY_RESOURCE_POLYMORPHIC_ALLOCATOR_H
#include <__assert>
-#include <__availability>
#include <__config>
#include <__fwd/pair.h>
#include <__memory_resource/memory_resource.h>
diff --git a/libcxx/include/__memory_resource/synchronized_pool_resource.h b/libcxx/include/__memory_resource/synchronized_pool_resource.h
index b261fb0b194a8..50a673c2861d1 100644
--- a/libcxx/include/__memory_resource/synchronized_pool_resource.h
+++ b/libcxx/include/__memory_resource/synchronized_pool_resource.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___MEMORY_RESOURCE_SYNCHRONIZED_POOL_RESOURCE_H
#define _LIBCPP___MEMORY_RESOURCE_SYNCHRONIZED_POOL_RESOURCE_H
-#include <__availability>
#include <__config>
#include <__memory_resource/memory_resource.h>
#include <__memory_resource/pool_options.h>
diff --git a/libcxx/include/__memory_resource/unsynchronized_pool_resource.h b/libcxx/include/__memory_resource/unsynchronized_pool_resource.h
index 81d5f9ec4da87..783db84262af7 100644
--- a/libcxx/include/__memory_resource/unsynchronized_pool_resource.h
+++ b/libcxx/include/__memory_resource/unsynchronized_pool_resource.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___MEMORY_RESOURCE_UNSYNCHRONIZED_POOL_RESOURCE_H
#define _LIBCPP___MEMORY_RESOURCE_UNSYNCHRONIZED_POOL_RESOURCE_H
-#include <__availability>
#include <__config>
#include <__memory_resource/memory_resource.h>
#include <__memory_resource/pool_options.h>
diff --git a/libcxx/include/__ostream/print.h b/libcxx/include/__ostream/print.h
index 97680cdab6da3..8265ac00777e2 100644
--- a/libcxx/include/__ostream/print.h
+++ b/libcxx/include/__ostream/print.h
@@ -9,7 +9,6 @@
#ifndef _LIBCPP___OSTREAM_PRINT_H
#define _LIBCPP___OSTREAM_PRINT_H
-#include <__availability>
#include <__config>
#include <__fwd/ostream.h>
#include <__iterator/ostreambuf_iterator.h>
diff --git a/libcxx/include/__stop_token/stop_callback.h b/libcxx/include/__stop_token/stop_callback.h
index 7b526820f98a3..760cf2bb55b0c 100644
--- a/libcxx/include/__stop_token/stop_callback.h
+++ b/libcxx/include/__stop_token/stop_callback.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___STOP_TOKEN_STOP_CALLBACK_H
#define _LIBCPP___STOP_TOKEN_STOP_CALLBACK_H
-#include <__availability>
#include <__concepts/constructible.h>
#include <__concepts/destructible.h>
#include <__concepts/invocable.h>
diff --git a/libcxx/include/__stop_token/stop_source.h b/libcxx/include/__stop_token/stop_source.h
index 1080069cf3b8b..70697462784ab 100644
--- a/libcxx/include/__stop_token/stop_source.h
+++ b/libcxx/include/__stop_token/stop_source.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___STOP_TOKEN_STOP_SOURCE_H
#define _LIBCPP___STOP_TOKEN_STOP_SOURCE_H
-#include <__availability>
#include <__config>
#include <__stop_token/intrusive_shared_ptr.h>
#include <__stop_token/stop_state.h>
diff --git a/libcxx/include/__stop_token/stop_state.h b/libcxx/include/__stop_token/stop_state.h
index df07573f87862..b0eed13a143cf 100644
--- a/libcxx/include/__stop_token/stop_state.h
+++ b/libcxx/include/__stop_token/stop_state.h
@@ -11,7 +11,6 @@
#define _LIBCPP___STOP_TOKEN_STOP_STATE_H
#include <__assert>
-#include <__availability>
#include <__config>
#include <__stop_token/atomic_unique_lock.h>
#include <__stop_token/intrusive_list_view.h>
diff --git a/libcxx/include/__stop_token/stop_token.h b/libcxx/include/__stop_token/stop_token.h
index f2eadb990bdec..1bd75cbbf6f8d 100644
--- a/libcxx/include/__stop_token/stop_token.h
+++ b/libcxx/include/__stop_token/stop_token.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___STOP_TOKEN_STOP_TOKEN_H
#define _LIBCPP___STOP_TOKEN_STOP_TOKEN_H
-#include <__availability>
#include <__config>
#include <__stop_token/intrusive_shared_ptr.h>
#include <__stop_token/stop_state.h>
diff --git a/libcxx/include/__thread/jthread.h b/libcxx/include/__thread/jthread.h
index 253e3a935d9b7..b3d5c25fb71c7 100644
--- a/libcxx/include/__thread/jthread.h
+++ b/libcxx/include/__thread/jthread.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___THREAD_JTHREAD_H
#define _LIBCPP___THREAD_JTHREAD_H
-#include <__availability>
#include <__config>
#include <__functional/invoke.h>
#include <__stop_token/stop_source.h>
diff --git a/libcxx/include/__thread/poll_with_backoff.h b/libcxx/include/__thread/poll_with_backoff.h
index d8354e6ca2398..4f961fe3f7629 100644
--- a/libcxx/include/__thread/poll_with_backoff.h
+++ b/libcxx/include/__thread/poll_with_backoff.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___THREAD_POLL_WITH_BACKOFF_H
#define _LIBCPP___THREAD_POLL_WITH_BACKOFF_H
-#include <__availability>
#include <__chrono/duration.h>
#include <__chrono/high_resolution_clock.h>
#include <__config>
diff --git a/libcxx/include/__verbose_abort b/libcxx/include/__verbose_abort
index 259c70dda8fe8..1e2265a6bf755 100644
--- a/libcxx/include/__verbose_abort
+++ b/libcxx/include/__verbose_abort
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___VERBOSE_ABORT
#define _LIBCPP___VERBOSE_ABORT
-#include <__availability>
#include <__config>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/barrier b/libcxx/include/barrier
index a6b4d2288309e..bce67bb5d3425 100644
--- a/libcxx/include/barrier
+++ b/libcxx/include/barrier
@@ -54,7 +54,6 @@ namespace std
#include <__assert>
#include <__atomic/atomic_base.h>
#include <__atomic/memory_order.h>
-#include <__availability>
#include <__memory/unique_ptr.h>
#include <__thread/poll_with_backoff.h>
#include <__thread/timed_backoff_policy.h>
diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable
index 4ded1140d46b1..5195cd6057dd3 100644
--- a/libcxx/include/condition_variable
+++ b/libcxx/include/condition_variable
@@ -118,7 +118,6 @@ public:
*/
-#include <__availability>
#include <__chrono/duration.h>
#include <__chrono/steady_clock.h>
#include <__chrono/time_point.h>
diff --git a/libcxx/include/deque b/libcxx/include/deque
index 3c33e04e9f05f..555761aae6afd 100644
--- a/libcxx/include/deque
+++ b/libcxx/include/deque
@@ -189,7 +189,6 @@ template <class T, class Allocator, class Predicate>
#include <__algorithm/remove_if.h>
#include <__algorithm/unwrap_iter.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__debug_utils/sanitizers.h>
#include <__format/enable_insertable.h>
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index 80dd49fe3d75a..363931e3f2388 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -199,7 +199,6 @@ template <class T, class Allocator, class Predicate>
#include <__algorithm/lexicographical_compare.h>
#include <__algorithm/lexicographical_compare_three_way.h>
#include <__algorithm/min.h>
-#include <__availability>
#include <__config>
#include <__iterator/distance.h>
#include <__iterator/iterator_traits.h>
diff --git a/libcxx/include/fstream b/libcxx/include/fstream
index 7128f72e16119..18f4dd3eed0b2 100644
--- a/libcxx/include/fstream
+++ b/libcxx/include/fstream
@@ -188,7 +188,6 @@ typedef basic_fstream<wchar_t> wfstream;
#include <__algorithm/max.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__fwd/fstream.h>
#include <__locale>
diff --git a/libcxx/include/latch b/libcxx/include/latch
index 1937617f7dcc6..da8dae149c79f 100644
--- a/libcxx/include/latch
+++ b/libcxx/include/latch
@@ -50,7 +50,6 @@ namespace std
#include <__atomic/atomic_base.h>
#include <__atomic/atomic_sync.h>
#include <__atomic/memory_order.h>
-#include <__availability>
#include <cstddef>
#include <limits>
#include <version>
diff --git a/libcxx/include/list b/libcxx/include/list
index 610a24e384600..87f15e144ac8f 100644
--- a/libcxx/include/list
+++ b/libcxx/include/list
@@ -203,7 +203,6 @@ template <class T, class Allocator, class Predicate>
#include <__algorithm/lexicographical_compare_three_way.h>
#include <__algorithm/min.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__format/enable_insertable.h>
#include <__iterator/distance.h>
diff --git a/libcxx/include/map b/libcxx/include/map
index 1d1c062a0267c..7efa715e84aa7 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -575,7 +575,6 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
#include <__algorithm/lexicographical_compare.h>
#include <__algorithm/lexicographical_compare_three_way.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__functional/binary_function.h>
#include <__functional/is_transparent.h>
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 1f7c2a183f63d..48391b2a12095 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -570,10 +570,6 @@ module std_private_assert [system] {
header "__assert"
export *
}
-module std_private_availability [system] {
- header "__availability"
- export *
-}
module std_private_bit_reference [system] {
header "__bit_reference"
export *
@@ -584,7 +580,9 @@ module std_private_fwd_bit_reference [system] {
module std_private_config [system] {
textual header "__config"
textual header "__configuration/abi.h"
+ textual header "__configuration/availability.h"
textual header "__configuration/compiler.h"
+ textual header "__configuration/language.h"
textual header "__configuration/platform.h"
export *
}
diff --git a/libcxx/include/optional b/libcxx/include/optional
index a16e48502e250..622e150f7a9f7 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -178,7 +178,6 @@ namespace std {
*/
#include <__assert>
-#include <__availability>
#include <__compare/compare_three_way_result.h>
#include <__compare/three_way_comparable.h>
#include <__concepts/invocable.h>
diff --git a/libcxx/include/print b/libcxx/include/print
index e0bcf214ea239..5bdaa559af724 100644
--- a/libcxx/include/print
+++ b/libcxx/include/print
@@ -34,7 +34,6 @@ namespace std {
*/
#include <__assert>
-#include <__availability>
#include <__concepts/same_as.h>
#include <__config>
#include <__system_error/system_error.h>
diff --git a/libcxx/include/regex b/libcxx/include/regex
index ce9f34260254a..b3869d36de1df 100644
--- a/libcxx/include/regex
+++ b/libcxx/include/regex
@@ -792,7 +792,6 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
#include <__algorithm/find.h>
#include <__algorithm/search.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__iterator/back_insert_iterator.h>
#include <__iterator/default_sentinel.h>
diff --git a/libcxx/include/semaphore b/libcxx/include/semaphore
index cb2f42c106ca8..8d3b04475c092 100644
--- a/libcxx/include/semaphore
+++ b/libcxx/include/semaphore
@@ -55,7 +55,6 @@ using binary_semaphore = counting_semaphore<1>;
#include <__atomic/atomic_base.h>
#include <__atomic/atomic_sync.h>
#include <__atomic/memory_order.h>
-#include <__availability>
#include <__chrono/time_point.h>
#include <__thread/poll_with_backoff.h>
#include <__thread/support.h>
diff --git a/libcxx/include/set b/libcxx/include/set
index d9377ee6c3322..ab3a4363499af 100644
--- a/libcxx/include/set
+++ b/libcxx/include/set
@@ -516,7 +516,6 @@ erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred); // C++20
#include <__algorithm/lexicographical_compare.h>
#include <__algorithm/lexicographical_compare_three_way.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__functional/is_transparent.h>
#include <__functional/operations.h>
diff --git a/libcxx/include/sstream b/libcxx/include/sstream
index 5009fe5c0057b..9ba43ffeb850f 100644
--- a/libcxx/include/sstream
+++ b/libcxx/include/sstream
@@ -312,7 +312,6 @@ typedef basic_stringstream<wchar_t> wstringstream;
// clang-format on
-#include <__availability>
#include <__config>
#include <__fwd/sstream.h>
#include <__ostream/basic_ostream.h>
diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map
index c838cd96b1123..2e25b0f050695 100644
--- a/libcxx/include/unordered_map
+++ b/libcxx/include/unordered_map
@@ -585,7 +585,6 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
#include <__algorithm/is_permutation.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__functional/is_transparent.h>
#include <__functional/operations.h>
diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set
index 5de1458beb1e6..c966cc8eb4df1 100644
--- a/libcxx/include/unordered_set
+++ b/libcxx/include/unordered_set
@@ -533,7 +533,6 @@ template <class Value, class Hash, class Pred, class Alloc>
#include <__algorithm/is_permutation.h>
#include <__assert>
-#include <__availability>
#include <__config>
#include <__functional/is_transparent.h>
#include <__functional/operations.h>
diff --git a/libcxx/include/variant b/libcxx/include/variant
index 631ffceab5f68..7ebd0534b1641 100644
--- a/libcxx/include/variant
+++ b/libcxx/include/variant
@@ -212,7 +212,6 @@ namespace std {
*/
-#include <__availability>
#include <__compare/common_comparison_category.h>
#include <__compare/compare_three_way_result.h>
#include <__compare/three_way_comparable.h>
diff --git a/libcxx/include/vector b/libcxx/include/vector
index b190557fb7b7e..cbfc2cefa1fd9 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -316,7 +316,6 @@ template<class T, class charT> requires is-vector-bool-reference<T> // Since C++
#include <__algorithm/rotate.h>
#include <__algorithm/unwrap_iter.h>
#include <__assert>
-#include <__availability>
#include <__bit_reference>
#include <__concepts/same_as.h>
#include <__config>
diff --git a/libcxx/include/version b/libcxx/include/version
index 69556d731f1cf..a9b6caee8b1d1 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -255,7 +255,6 @@ __cpp_lib_void_t 201411L <type_traits>
*/
-#include <__availability>
#include <__config>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/src/optional.cpp b/libcxx/src/optional.cpp
index 6ba63f2d89f5a..62b474a312be2 100644
--- a/libcxx/src/optional.cpp
+++ b/libcxx/src/optional.cpp
@@ -6,7 +6,6 @@
//
//===----------------------------------------------------------------------===//
-#include <__availability>
#include <optional>
#include <stdexcept>
diff --git a/libcxx/src/ostream.cpp b/libcxx/src/ostream.cpp
index 443dce9a390be..e1a9a4bc1de71 100644
--- a/libcxx/src/ostream.cpp
+++ b/libcxx/src/ostream.cpp
@@ -6,7 +6,6 @@
//
//===----------------------------------------------------------------------===//
-#include <__availability>
#include <__config>
#ifndef _LIBCPP_HAS_NO_FILESYSTEM
# include <fstream>
diff --git a/libcxx/test/libcxx/vendor/apple/availability-with-pedantic-errors.compile.pass.cpp b/libcxx/test/libcxx/vendor/apple/availability-with-pedantic-errors.compile.pass.cpp
index c55a0a4d6e5d1..60723bf7b6e97 100644
--- a/libcxx/test/libcxx/vendor/apple/availability-with-pedantic-errors.compile.pass.cpp
+++ b/libcxx/test/libcxx/vendor/apple/availability-with-pedantic-errors.compile.pass.cpp
@@ -15,7 +15,7 @@
// ADDITIONAL_COMPILE_FLAGS: -pedantic-errors
-#include <__availability>
+#include <__config>
#if defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)
# error Availability annotations should be enabled on Apple platforms in the system configuration!
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index b04cb4f511554..de9a0f0cb3503 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -61,7 +61,8 @@ def add_version_header(tc):
# just libc++. It may depend on
# * macros defined by the compiler itself, or
# * macros generated by CMake.
-# In some cases we add also depend on macros defined in <__availability>.
+# In some cases we add also depend on macros defined in
+# <__configuration/availability.h>.
# libcxx_guard An optional string field. When this field is provided,
# `test_suite_guard` must also be provided. This field is used
# only to guard the feature-test macro in <version>. It may
@@ -1562,7 +1563,6 @@ def produce_version_header():
*/
-#include <__availability>
#include <__config>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
More information about the libcxx-commits
mailing list