Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -606,6 +606,7 @@ config_define_if(LIBCXX_HAS_EXTERNAL_THREAD_API _LIBCPP_HAS_THREAD_API_EXTERNAL) config_define_if(LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) config_define_if(LIBCXX_HAS_MUSL_LIBC _LIBCPP_HAS_MUSL_LIBC) +config_define_if(LIBCXX_DISABLE_AVAILABILITY _LIBCPP_DISABLE_AVAILABILITY) # By default libc++ on Windows expects to use a shared library, which requires # the headers to use DLL import/export semantics. However when building a Index: docs/UsingLibcxx.rst =================================================================== --- docs/UsingLibcxx.rst +++ docs/UsingLibcxx.rst @@ -185,6 +185,9 @@ * Giving `set`, `map`, `multiset`, `multimap` a comparator which is not const callable. +**LIBCXX_DISABLE_AVAILABILITY**: + This macro disables availability annotations in the libc++ headers. + C++17 Specific Configuration Macros ----------------------------------- **_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES**: Index: include/__config_site.in =================================================================== --- include/__config_site.in +++ include/__config_site.in @@ -22,6 +22,7 @@ #cmakedefine _LIBCPP_HAS_THREAD_API_PTHREAD #cmakedefine _LIBCPP_HAS_THREAD_API_EXTERNAL #cmakedefine _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL +#cmakedefine _LIBCPP_DISABLE_AVAILABILITY #cmakedefine _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS #endif // _LIBCPP_CONFIG_SITE Index: utils/libcxx/test/config.py =================================================================== --- utils/libcxx/test/config.py +++ utils/libcxx/test/config.py @@ -652,6 +652,10 @@ if feature_macros[m]: define += '=%s' % (feature_macros[m]) self.cxx.compile_flags += [define] + if m == '_LIBCPP_DISABLE_AVAILABILITY': + assert not self.with_availability, \ + 'Availability is disabled in the site configuration' + continue if m == '_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS': continue if m == '_LIBCPP_ABI_VERSION':