diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 015a359bfb48..ee8ba4543340 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -115,6 +115,12 @@ option(LIBCXX_ENABLE_RANDOM_DEVICE a source of randomness, such as some embedded platforms. When this is not supported, most of will still be available, but std::random_device will not." ON) +option(LIBCXX_ENABLE_LOCALIZATION + "Whether to include support for localization in the library. Disabling + localization can be useful when porting to platforms that don't support + the C locale API (e.g. embedded). When localization is not supported, + several parts of the library will be disabled: , , + will be completely unusable, and other parts may be only partly available." ON) option(LIBCXX_TEST_GDB_PRETTY_PRINTERS "Test gdb pretty printers." OFF) set(LIBCXX_TEST_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/test/configs/legacy.cfg.in" CACHE STRING "The Lit testing configuration to use when running the tests.") @@ -843,6 +849,7 @@ config_define_if(LIBCXX_HAS_MUSL_LIBC _LIBCPP_HAS_MUSL_LIBC) config_define_if(LIBCXX_NO_VCRUNTIME _LIBCPP_NO_VCRUNTIME) config_define_if(LIBCXX_ENABLE_PARALLEL_ALGORITHMS _LIBCPP_HAS_PARALLEL_ALGORITHMS) config_define_if_not(LIBCXX_ENABLE_RANDOM_DEVICE _LIBCPP_HAS_NO_RANDOM_DEVICE) +config_define_if_not(LIBCXX_ENABLE_LOCALIZATION _LIBCPP_HAS_NO_LOCALIZATION) if (LIBCXX_ABI_DEFINES) set(abi_defines) diff --git a/libcxx/cmake/caches/Generic-no-localization.cmake b/libcxx/cmake/caches/Generic-no-localization.cmake new file mode 100644 index 000000000000..79d6b44c7139 --- /dev/null +++ b/libcxx/cmake/caches/Generic-no-localization.cmake @@ -0,0 +1 @@ +set(LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "") diff --git a/libcxx/include/__config_site.in b/libcxx/include/__config_site.in index 908fb1e674ce..8141d3c419f4 100644 --- a/libcxx/include/__config_site.in +++ b/libcxx/include/__config_site.in @@ -33,6 +33,7 @@ #cmakedefine _LIBCPP_ABI_NAMESPACE @_LIBCPP_ABI_NAMESPACE@ #cmakedefine _LIBCPP_HAS_PARALLEL_ALGORITHMS #cmakedefine _LIBCPP_HAS_NO_RANDOM_DEVICE +#cmakedefine _LIBCPP_HAS_NO_LOCALIZATION @_LIBCPP_ABI_DEFINES@ diff --git a/libcxx/include/__locale b/libcxx/include/__locale index 4721a00337ef..48e7b642f884 100644 --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -11,6 +11,11 @@ #define _LIBCPP___LOCALE #include <__config> + +#if defined(_LIBCPP_HAS_NO_LOCALIZATION) +# error "Localization is not supported by this configuration of libc++" +#endif + #include #include #include diff --git a/libcxx/include/complex b/libcxx/include/complex index ec35f8ab27c3..ed84cd4cd39f 100644 --- a/libcxx/include/complex +++ b/libcxx/include/complex @@ -236,9 +236,12 @@ template complex tanh (const complex&); #include #include #include -#include #include +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) +# include // for std::basic_ostringstream +#endif + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif @@ -1430,6 +1433,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x) return __is; } +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) @@ -1441,6 +1445,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) __s << '(' << __x.real() << ',' << __x.imag() << ')'; return __os << __s.str(); } +#endif // !_LIBCPP_HAS_NO_LOCALIZATION #if _LIBCPP_STD_VER > 11 // Literal suffix for complex number literals [complex.literals] diff --git a/libcxx/include/filesystem b/libcxx/include/filesystem index 86fff6ce60b7..5783ed3560ba 100644 --- a/libcxx/include/filesystem +++ b/libcxx/include/filesystem @@ -235,16 +235,19 @@ #include #include #include -#include #include #include #include #include #include -#include // for quoted #include #include +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) +# include +# include // for quoted +#endif + #include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -661,6 +664,10 @@ struct __is_pathable<_Tp, false, true, false> : __is_pathable_char_array<_Tp> { template struct __is_pathable<_Tp, false, false, true> : __is_pathable_iter<_Tp> {}; +template +struct _PathCVT; + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template struct _PathCVT { static_assert(__can_convert_char<_ECharT>::value, @@ -703,6 +710,7 @@ struct _PathCVT { _Traits::__range_end(__s)); } }; +#endif // !_LIBCPP_HAS_NO_LOCALIZATION template <> struct _PathCVT { @@ -779,12 +787,14 @@ public: _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); } +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) // TODO Implement locale conversions. template > path(const _Source& __src, const locale& __loc, format = format::auto_format); template path(_InputIt __first, _InputIt _last, const locale& __loc, format = format::auto_format); +#endif _LIBCPP_INLINE_VISIBILITY ~path() = default; @@ -983,6 +993,10 @@ public: _LIBCPP_INLINE_VISIBILITY operator string_type() const { return __pn_; } + _LIBCPP_INLINE_VISIBILITY std::string string() const { return __pn_; } + _LIBCPP_INLINE_VISIBILITY std::string u8string() const { return __pn_; } + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template , class _Allocator = allocator<_ECharT> > basic_string<_ECharT, _Traits, _Allocator> @@ -995,19 +1009,22 @@ public: return __s; } - _LIBCPP_INLINE_VISIBILITY std::string string() const { return __pn_; } _LIBCPP_INLINE_VISIBILITY std::wstring wstring() const { return string(); } - _LIBCPP_INLINE_VISIBILITY std::string u8string() const { return __pn_; } _LIBCPP_INLINE_VISIBILITY std::u16string u16string() const { return string(); } _LIBCPP_INLINE_VISIBILITY std::u32string u32string() const { return string(); } +#endif // generic format observers + std::string generic_string() const { return __pn_; } + std::string generic_u8string() const { return __pn_; } + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template , class _Allocator = allocator<_ECharT> > basic_string<_ECharT, _Traits, _Allocator> @@ -1015,11 +1032,10 @@ public: return string<_ECharT, _Traits, _Allocator>(__a); } - std::string generic_string() const { return __pn_; } std::wstring generic_wstring() const { return string(); } - std::string generic_u8string() const { return __pn_; } std::u16string generic_u16string() const { return string(); } std::u32string generic_u32string() const { return string(); } +#endif private: int __compare(__string_view) const; @@ -1123,6 +1139,7 @@ public: iterator begin() const; iterator end() const; +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) template _LIBCPP_INLINE_VISIBILITY friend typename enable_if::value && @@ -1151,6 +1168,7 @@ public: __p = __tmp; return __is; } +#endif // !_LIBCPP_HAS_NO_LOCALIZATION friend _LIBCPP_INLINE_VISIBILITY bool operator==(const path& __lhs, const path& __rhs) noexcept { return __lhs.compare(__rhs) == 0; diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index 95dd520d1e3e..d0e7255f5f60 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -19,20 +19,15 @@ set(LIBCXX_SOURCES include/atomic_support.h include/config_elast.h include/refstring.h - ios.cpp - iostream.cpp - locale.cpp memory.cpp mutex.cpp mutex_destructor.cpp new.cpp optional.cpp random_shuffle.cpp - regex.cpp shared_mutex.cpp stdexcept.cpp string.cpp - strstream.cpp support/runtime/exception_fallback.ipp support/runtime/exception_glibcxx.ipp support/runtime/exception_libcxxabi.ipp @@ -66,6 +61,16 @@ if (LIBCXX_ENABLE_RANDOM_DEVICE) ) endif() +if (LIBCXX_ENABLE_LOCALIZATION) + list(APPEND LIBCXX_SOURCES + ios.cpp + iostream.cpp + locale.cpp + regex.cpp + strstream.cpp + ) +endif() + if(WIN32) list(APPEND LIBCXX_SOURCES support/win32/locale_win32.cpp diff --git a/libcxx/test/libcxx/depr/depr.str.strstreams/version.pass.cpp b/libcxx/test/libcxx/depr/depr.str.strstreams/version.pass.cpp index 59279f7ac6c2..ac7268969c92 100644 --- a/libcxx/test/libcxx/depr/depr.str.strstreams/version.pass.cpp +++ b/libcxx/test/libcxx/depr/depr.str.strstreams/version.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // #include diff --git a/libcxx/test/libcxx/double_include.sh.cpp b/libcxx/test/libcxx/double_include.sh.cpp index 42a437bbdbe1..838437130176 100644 --- a/libcxx/test/libcxx/double_include.sh.cpp +++ b/libcxx/test/libcxx/double_include.sh.cpp @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include @@ -77,23 +76,17 @@ #include #include #include -#include #include #ifndef _LIBCPP_HAS_NO_THREADS #include #endif #include #include -#include -#include #include -#include -#include #include #include #include #include -#include #include #include #include @@ -105,11 +98,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include @@ -117,7 +108,6 @@ #include #endif #include -#include #include #include #include @@ -125,11 +115,9 @@ #include #include #include -#include #include #include #include -#include #include #include #ifndef _LIBCPP_HAS_NO_THREADS @@ -149,6 +137,24 @@ #include #include +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# if __cplusplus >= 201103L +# include +# endif +#endif + // experimental headers #if __cplusplus >= 201103L #include @@ -164,7 +170,6 @@ #include #include #include -#include #include #include #include diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.aliases/header_regex_libcpp_version.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.aliases/header_regex_libcpp_version.pass.cpp index 0d6d97a7c28e..ca63a212dbc7 100644 --- a/libcxx/test/libcxx/experimental/memory/memory.resource.aliases/header_regex_libcpp_version.pass.cpp +++ b/libcxx/test/libcxx/experimental/memory/memory.resource.aliases/header_regex_libcpp_version.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03 +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/libcxx/fuzzing/regex.pass.cpp b/libcxx/test/libcxx/fuzzing/regex.pass.cpp index b027dd0a0fa4..fca7a9accf2c 100644 --- a/libcxx/test/libcxx/fuzzing/regex.pass.cpp +++ b/libcxx/test/libcxx/fuzzing/regex.pass.cpp @@ -8,6 +8,7 @@ // UNSUPPORTED: c++03, c++11 // UNSUPPORTED: no-exceptions +// UNSUPPORTED: libcpp-has-no-localization #include #include diff --git a/libcxx/test/libcxx/input.output/file.streams/lit.local.cfg b/libcxx/test/libcxx/input.output/file.streams/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/file.streams/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/input.output/iostream.format/lit.local.cfg b/libcxx/test/libcxx/input.output/iostream.format/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/iostream.format/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/input.output/iostream.objects/lit.local.cfg b/libcxx/test/libcxx/input.output/iostream.objects/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/iostream.objects/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/input.output/iostreams.base/lit.local.cfg b/libcxx/test/libcxx/input.output/iostreams.base/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/iostreams.base/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/input.output/stream.buffers/lit.local.cfg b/libcxx/test/libcxx/input.output/stream.buffers/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/stream.buffers/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/input.output/string.streams/lit.local.cfg b/libcxx/test/libcxx/input.output/string.streams/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/input.output/string.streams/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/localization/lit.local.cfg b/libcxx/test/libcxx/localization/lit.local.cfg new file mode 100644 index 000000000000..1fc6b7941603 --- /dev/null +++ b/libcxx/test/libcxx/localization/lit.local.cfg @@ -0,0 +1,4 @@ +# Load the same local configuration as the corresponding one in libcxx/test/std +import os +localConfig = os.path.realpath(__file__).replace('/test/libcxx/', '/test/std/') +config.load_from_path(localConfig, lit_config) diff --git a/libcxx/test/libcxx/min_max_macros.compile.pass.cpp b/libcxx/test/libcxx/min_max_macros.compile.pass.cpp index 9e9edb86e791..3347f6f9f6ea 100644 --- a/libcxx/test/libcxx/min_max_macros.compile.pass.cpp +++ b/libcxx/test/libcxx/min_max_macros.compile.pass.cpp @@ -61,8 +61,6 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -109,8 +107,6 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #ifndef _LIBCPP_HAS_NO_THREADS @@ -121,16 +117,8 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -139,8 +127,6 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -159,16 +145,12 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -181,8 +163,6 @@ TEST_MACROS(); #endif #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -197,16 +177,12 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include @@ -240,6 +216,37 @@ TEST_MACROS(); #include TEST_MACROS(); +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# include + TEST_MACROS(); +# if __cplusplus >= 201103L +# include + TEST_MACROS(); +# endif +#endif + // experimental headers #if __cplusplus >= 201103L #include @@ -262,8 +269,6 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include diff --git a/libcxx/test/libcxx/modules/cinttypes_exports.compile.pass.cpp b/libcxx/test/libcxx/modules/cinttypes_exports.compile.pass.cpp index 57a5ba5c55cb..ec5c8de3f01b 100644 --- a/libcxx/test/libcxx/modules/cinttypes_exports.compile.pass.cpp +++ b/libcxx/test/libcxx/modules/cinttypes_exports.compile.pass.cpp @@ -10,9 +10,10 @@ // are not modular // XFAIL: LIBCXX-WINDOWS-FIXME -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // REQUIRES: modules-support // ADDITIONAL_COMPILE_FLAGS: -fmodules diff --git a/libcxx/test/libcxx/modules/clocale_exports.compile.pass.cpp b/libcxx/test/libcxx/modules/clocale_exports.compile.pass.cpp index 9220f8e1af02..a460c6e884ff 100644 --- a/libcxx/test/libcxx/modules/clocale_exports.compile.pass.cpp +++ b/libcxx/test/libcxx/modules/clocale_exports.compile.pass.cpp @@ -10,9 +10,10 @@ // are not modular // XFAIL: LIBCXX-WINDOWS-FIXME -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // UNSUPPORTED: c++03 diff --git a/libcxx/test/libcxx/modules/cstdint_exports.compile.pass.cpp b/libcxx/test/libcxx/modules/cstdint_exports.compile.pass.cpp index 0887b597b5bf..c106bf68e86c 100644 --- a/libcxx/test/libcxx/modules/cstdint_exports.compile.pass.cpp +++ b/libcxx/test/libcxx/modules/cstdint_exports.compile.pass.cpp @@ -10,9 +10,10 @@ // are not modular // XFAIL: LIBCXX-WINDOWS-FIXME -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // Test that re-exports diff --git a/libcxx/test/libcxx/modules/inttypes_h_exports.compile.pass.cpp b/libcxx/test/libcxx/modules/inttypes_h_exports.compile.pass.cpp index 0add4e1a00ca..59b0d6256d7e 100644 --- a/libcxx/test/libcxx/modules/inttypes_h_exports.compile.pass.cpp +++ b/libcxx/test/libcxx/modules/inttypes_h_exports.compile.pass.cpp @@ -10,9 +10,10 @@ // are not modular // XFAIL: LIBCXX-WINDOWS-FIXME -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // Test that intypes.h re-exports stdint.h diff --git a/libcxx/test/libcxx/modules/stdint_h_exports.compile.pass.cpp b/libcxx/test/libcxx/modules/stdint_h_exports.compile.pass.cpp index b83e99bcc9c6..830a2515be03 100644 --- a/libcxx/test/libcxx/modules/stdint_h_exports.compile.pass.cpp +++ b/libcxx/test/libcxx/modules/stdint_h_exports.compile.pass.cpp @@ -6,9 +6,10 @@ // //===----------------------------------------------------------------------===// -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // Test that int8_t and the like are exported from stdint.h, not inttypes.h diff --git a/libcxx/test/libcxx/modules/stds_include.sh.cpp b/libcxx/test/libcxx/modules/stds_include.sh.cpp index 12d2899cf4ce..5235c7b05432 100644 --- a/libcxx/test/libcxx/modules/stds_include.sh.cpp +++ b/libcxx/test/libcxx/modules/stds_include.sh.cpp @@ -15,9 +15,10 @@ // are not modular // XFAIL: LIBCXX-WINDOWS-FIXME -// FIXME: The header is not supported for single-threaded systems, -// but still gets built as part of the 'std' module, which breaks the build. -// XFAIL: libcpp-has-no-threads +// Some headers are not available when these features are disabled, but they +// still get built as part of the 'std' module, which breaks the build. +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // REQUIRES: modules-support diff --git a/libcxx/test/libcxx/no_assert_include.compile.pass.cpp b/libcxx/test/libcxx/no_assert_include.compile.pass.cpp index 3cb58cd5ca56..182a1f31777d 100644 --- a/libcxx/test/libcxx/no_assert_include.compile.pass.cpp +++ b/libcxx/test/libcxx/no_assert_include.compile.pass.cpp @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -66,23 +65,17 @@ #include #include #include -#include #include #ifndef _LIBCPP_HAS_NO_THREADS #include #endif #include #include -#include -#include #include -#include -#include #include #include #include #include -#include #include #include #include @@ -93,11 +86,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include @@ -105,7 +96,6 @@ #include #endif #include -#include #include #include #include @@ -113,11 +103,9 @@ #include #include #include -#include #include #include #include -#include #include #include #ifndef _LIBCPP_HAS_NO_THREADS @@ -137,6 +125,24 @@ #include #include +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# if __cplusplus >= 201103L +# include +# endif +#endif + // experimental headers #if __cplusplus >= 201103L #include @@ -152,7 +158,6 @@ #include #include #include -#include #include #include #include diff --git a/libcxx/test/std/depr/depr.ios.members/lit.local.cfg b/libcxx/test/std/depr/depr.ios.members/lit.local.cfg new file mode 100644 index 000000000000..ebbd06ec931c --- /dev/null +++ b/libcxx/test/std/depr/depr.ios.members/lit.local.cfg @@ -0,0 +1,2 @@ +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/depr/depr.str.strstreams/lit.local.cfg b/libcxx/test/std/depr/depr.str.strstreams/lit.local.cfg new file mode 100644 index 000000000000..ebbd06ec931c --- /dev/null +++ b/libcxx/test/std/depr/depr.str.strstreams/lit.local.cfg @@ -0,0 +1,2 @@ +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/stream_inserter.pass.cpp b/libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/stream_inserter.pass.cpp index 78f1ca7da52c..2ba88489d452 100644 --- a/libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/stream_inserter.pass.cpp +++ b/libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/stream_inserter.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // class error_code diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp index c5972fe18237..429388c277a5 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.creation/make_ostream_joiner.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.creation/make_ostream_joiner.pass.cpp index 6e86ce781e7d..ed58745d79f0 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.creation/make_ostream_joiner.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.creation/make_ostream_joiner.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp index aac14fccf06e..bf9add9a13bc 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp index 57debaebca24..9d9457bafdf2 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp index a3773766d1d5..f03fbb0e98d5 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp index ca18de3d5c45..6e54879fe64e 100644 --- a/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp +++ b/libcxx/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // // diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp index 8f8dea1acc51..faa67a4be599 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03 +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/std/input.output/file.streams/lit.local.cfg b/libcxx/test/std/input.output/file.streams/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/file.streams/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp index 465959ba87e3..e787f5dc1b8b 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp index e66df6e302a2..606a8167d14e 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp index 234ad4be984c..8d02be832d22 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp index ee4d2fe15262..9e4a882186d1 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp index b51ea93fce92..c57ca6ebbaec 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp index 7d385c20bb73..bd32eda4c351 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp index 970bc0cf632d..12cda192b8e8 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++03 +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp index 091ea3140773..cf403925b965 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp @@ -9,6 +9,9 @@ // UNSUPPORTED: c++03 // REQUIRES: libc++ +// These tests require locale for non-char paths +// UNSUPPORTED: libcpp-has-no-localization + // // class path diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp index 982a7a97fe04..7c60ae208a58 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03 +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/std/input.output/input.output.general/lit.local.cfg b/libcxx/test/std/input.output/input.output.general/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/input.output.general/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/iostream.format/lit.local.cfg b/libcxx/test/std/input.output/iostream.format/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/iostream.format/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/iostream.forward/lit.local.cfg b/libcxx/test/std/input.output/iostream.forward/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/iostream.forward/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/iostream.objects/lit.local.cfg b/libcxx/test/std/input.output/iostream.objects/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/iostream.objects/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/iostreams.base/lit.local.cfg b/libcxx/test/std/input.output/iostreams.base/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/iostreams.base/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/iostreams.requirements/lit.local.cfg b/libcxx/test/std/input.output/iostreams.requirements/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/iostreams.requirements/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/stream.buffers/lit.local.cfg b/libcxx/test/std/input.output/stream.buffers/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/stream.buffers/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/input.output/string.streams/lit.local.cfg b/libcxx/test/std/input.output/string.streams/lit.local.cfg new file mode 100644 index 000000000000..cebfbadef2a0 --- /dev/null +++ b/libcxx/test/std/input.output/string.streams/lit.local.cfg @@ -0,0 +1,3 @@ +# All non-trivial uses of iostreams require localization support +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/iterators/stream.iterators/lit.local.cfg b/libcxx/test/std/iterators/stream.iterators/lit.local.cfg new file mode 100644 index 000000000000..4d0904117654 --- /dev/null +++ b/libcxx/test/std/iterators/stream.iterators/lit.local.cfg @@ -0,0 +1,3 @@ +# stream iterators rely on the streams library, which requires localization +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.pass.cpp index 23378e0e2e3c..0b1b4ea3e106 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.pass.cpp @@ -9,6 +9,8 @@ // WARNING: This test was generated by generate_feature_test_macro_components.py // and should not be edited manually. +// UNSUPPORTED: libcpp-has-no-localization + // // Test the feature test macros defined by diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.pass.cpp index 3d8fb7a4cf9c..967173ea61a1 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.pass.cpp @@ -9,6 +9,8 @@ // WARNING: This test was generated by generate_feature_test_macro_components.py // and should not be edited manually. +// UNSUPPORTED: libcpp-has-no-localization + // // Test the feature test macros defined by diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.pass.cpp index eeea5390afd8..43156342555f 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.pass.cpp @@ -9,6 +9,8 @@ // WARNING: This test was generated by generate_feature_test_macro_components.py // and should not be edited manually. +// UNSUPPORTED: libcpp-has-no-localization + // // Test the feature test macros defined by diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.pass.cpp index d3ba25867d05..bb0737583ba4 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.pass.cpp @@ -9,6 +9,8 @@ // WARNING: This test was generated by generate_feature_test_macro_components.py // and should not be edited manually. +// UNSUPPORTED: libcpp-has-no-localization + // // Test the feature test macros defined by diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.pass.cpp index 66becadbbfb8..a73d936dd4ab 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.pass.cpp @@ -9,6 +9,8 @@ // WARNING: This test was generated by generate_feature_test_macro_components.py // and should not be edited manually. +// UNSUPPORTED: libcpp-has-no-localization + // // Test the feature test macros defined by diff --git a/libcxx/test/std/localization/lit.local.cfg b/libcxx/test/std/localization/lit.local.cfg new file mode 100644 index 000000000000..ed0331c463d6 --- /dev/null +++ b/libcxx/test/std/localization/lit.local.cfg @@ -0,0 +1,3 @@ +# tests are obviously not supported when localization support is disabled +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/namespace/addressable_functions.sh.cpp b/libcxx/test/std/namespace/addressable_functions.sh.cpp index 9b5e80ec1b01..de44ba42fb84 100644 --- a/libcxx/test/std/namespace/addressable_functions.sh.cpp +++ b/libcxx/test/std/namespace/addressable_functions.sh.cpp @@ -17,6 +17,9 @@ // RUN: %{cxx} %t.tu1.o %t.tu2.o %{flags} %{link_flags} -o %t.exe // RUN: %{exec} %t.exe +// The functions checked below come from & friends +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp index 5c78fe98dd13..344caa2841c1 100644 --- a/libcxx/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp +++ b/libcxx/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/complex.number/complex.ops/stream_output.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/stream_output.pass.cpp index 690a16b800ee..9d9f4011b1dc 100644 --- a/libcxx/test/std/numerics/complex.number/complex.ops/stream_output.pass.cpp +++ b/libcxx/test/std/numerics/complex.number/complex.ops/stream_output.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_result_type.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_result_type.pass.cpp index c3f781209fd4..68e5d8d0e4fa 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_result_type.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_result_type.pass.cpp @@ -13,6 +13,9 @@ // explicit discard_block_engine(result_type s = default_seed); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp index 3cb9df560d53..2e598664ea9d 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp @@ -13,6 +13,9 @@ // template explicit discard_block_engine(Sseq& q); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/io.pass.cpp index 9336b29a3c55..c5acba18e5d1 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp index 27f408f4af41..b54aa24a42c5 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp @@ -13,6 +13,9 @@ // explicit independent_bits_engine(result_type s = default_seed); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp index 37ca482ee0b7..791ba3c1c675 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp @@ -13,6 +13,9 @@ // template explicit independent_bits_engine(Sseq& q); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp index 0fb967acfb43..f7cc60961fae 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_result_type.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_result_type.pass.cpp index e80553863017..b02022919582 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_result_type.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_result_type.pass.cpp @@ -13,6 +13,9 @@ // explicit shuffle_order_engine(result_type s = default_seed); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp index 22823ea91396..3ab141e79927 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp @@ -13,6 +13,9 @@ // template explicit shuffle_order_engine(Sseq& q); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/io.pass.cpp index 6bf4c8a00bdd..2970c1a2215c 100644 --- a/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/io.pass.cpp index 68e050aab580..b55c7b2da079 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // class bernoulli_distribution diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp index 875e501837e9..c54127422325 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp @@ -15,6 +15,9 @@ // Test the fix for https://llvm.org/PR44847. +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp index 7edf05fae8bc..accc6c3aea73 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp index 6cb22c8df459..c8b47227d6c5 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/io.pass.cpp index e0e43d1a2db7..a8ca74c23ca2 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/io.pass.cpp index 2f6bace070e9..2873aefae570 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/io.pass.cpp index 06d7b4e4320e..8a2c3805d729 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/io.pass.cpp index 76d4a48ec02f..a6aca373767a 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/io.pass.cpp index cd67c03b6a23..92abb3a49a5f 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/io.pass.cpp index ae58744d558d..fc136a3be38c 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/io.pass.cpp index 2d172dc149c0..1e5e9f693eaa 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/io.pass.cpp index f634f3efe2a2..0cf3a5bf95dd 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/io.pass.cpp index a3434d854469..19ac0ea02f3a 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/io.pass.cpp index ee9f20f563fa..c5cb803a77e6 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/io.pass.cpp index afd77131ddc2..e5e634af2dbb 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/io.pass.cpp index 56b25275e71a..06b3325b9f95 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/io.pass.cpp index f4576e37202f..3b21092069e6 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/io.pass.cpp index 6256e59d5574..7c761c045caf 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/io.pass.cpp index 92f4d7666481..f01b38b93c51 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/io.pass.cpp index f3b921afec3c..a52b253a6b26 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/io.pass.cpp index e5abad268fdd..7935e6c2c8d0 100644 --- a/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp index a27361246005..0d84604f2744 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp @@ -13,6 +13,9 @@ // explicit linear_congruential_engine(result_type s = default_seed); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/io.pass.cpp index 6a93427f8e52..f9e9b2d19b2a 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp index a1f367f6aab5..be8ae17222fc 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp @@ -15,6 +15,9 @@ // explicit mersenne_twister_engine(result_type s = default_seed); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp index 9c98e77ace74..a820468f1f93 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp @@ -15,6 +15,9 @@ // template explicit mersenne_twister_engine(Sseq& q); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp index 6cd1e34f2b57..cdb71638ff68 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template #include #include diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp index 08c7a3f6251f..0a8d7e661b4d 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp @@ -13,6 +13,9 @@ // template explicit subtract_with_carry_engine(Sseq& q); +// Serializing/deserializing the state of the RNG requires iostreams +// UNSUPPORTED: libcpp-has-no-localization + #include #include #include diff --git a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/io.pass.cpp index d5222842294d..472ed2dc2571 100644 --- a/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/io.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/re/lit.local.cfg b/libcxx/test/std/re/lit.local.cfg new file mode 100644 index 000000000000..a2664746cc18 --- /dev/null +++ b/libcxx/test/std/re/lit.local.cfg @@ -0,0 +1,3 @@ +# Unfortunately, uses locales in regex_traits +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg new file mode 100644 index 000000000000..8f204af4a58c --- /dev/null +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg @@ -0,0 +1,3 @@ +# These std::string functions require iostreams, which requires localization +if 'libcpp-has-no-localization' in config.available_features: + config.unsupported = True diff --git a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp index c427e4a84403..8ba444dc2cea 100644 --- a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // template diff --git a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp index c70d342ddd0b..3ad9ae22a95d 100644 --- a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp index 9f1f18dd6647..f04a0ebdf299 100644 --- a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp +++ b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp @@ -5,8 +5,9 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp index e63cf4e2388a..583ca60e7681 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp @@ -6,8 +6,10 @@ // //===----------------------------------------------------------------------===// +// Because we don't have a functioning decltype in C++03 // UNSUPPORTED: c++03 -// Because we don't have a functioning decltype in C++03 + +// UNSUPPORTED: libcpp-has-no-localization // diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.pass.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.pass.cpp index dd1a9f7fa3c5..d09e029878b0 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.pass.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.pass.cpp @@ -9,6 +9,8 @@ // UNSUPPORTED: c++03 // Because we don't have a functioning decltype in C++03 +// UNSUPPORTED: libcpp-has-no-localization + // // unique_ptr diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp index 8903b75ae4e2..6c3c9e47f105 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // // shared_ptr diff --git a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp index 0127b75160ba..e2667e537987 100644 --- a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp +++ b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // test: // template diff --git a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_out.pass.cpp b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_out.pass.cpp index 3ef0eb8bf9bf..79621e25cc5a 100644 --- a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_out.pass.cpp +++ b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_out.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: libcpp-has-no-localization + // test: // template diff --git a/libcxx/test/std/utilities/time/time.cal/time.cal.day/time.cal.day.nonmembers/streaming.pass.cpp b/libcxx/test/std/utilities/time/time.cal/time.cal.day/time.cal.day.nonmembers/streaming.pass.cpp index 2b1e224ad434..d53c67c492d9 100644 --- a/libcxx/test/std/utilities/time/time.cal/time.cal.day/time.cal.day.nonmembers/streaming.pass.cpp +++ b/libcxx/test/std/utilities/time/time.cal/time.cal.day/time.cal.day.nonmembers/streaming.pass.cpp @@ -5,7 +5,9 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// + // UNSUPPORTED: c++03, c++11, c++14, c++17 +// UNSUPPORTED: libcpp-has-no-localization // XFAIL: * // diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml index 3400083fb404..925a944811da 100644 --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -113,6 +113,13 @@ steps: agents: queue: "libcxx-builders" + - label: "No locale" + command: "libcxx/utils/ci/run-buildbot.sh generic-no-localization" + artifact_paths: + - "**/test-results.xml" + agents: + queue: "libcxx-builders" + - label: "MacOS C++20" command: "libcxx/utils/ci/run-buildbot.sh generic-cxx2a" artifact_paths: diff --git a/libcxx/utils/ci/run-buildbot.sh b/libcxx/utils/ci/run-buildbot.sh index 31035a4dd4fa..1f0b3c7c71b3 100755 --- a/libcxx/utils/ci/run-buildbot.sh +++ b/libcxx/utils/ci/run-buildbot.sh @@ -143,6 +143,12 @@ generic-no-random_device) generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake" check-cxx-cxxabi ;; +generic-no-localization) + export CC=clang + export CXX=clang++ + generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.cmake" + check-cxx-cxxabi +;; x86_64-apple-system) export CC=clang export CXX=clang++ diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py index be4bfe475667..6fef8ea85606 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -493,6 +493,11 @@ lit_markup = { "atomic": ["UNSUPPORTED: libcpp-has-no-threads"], "shared_mutex": ["UNSUPPORTED: libcpp-has-no-threads"], "thread": ["UNSUPPORTED: libcpp-has-no-threads"], + "iomanip": ["UNSUPPORTED: libcpp-has-no-localization"], + "istream": ["UNSUPPORTED: libcpp-has-no-localization"], + "locale": ["UNSUPPORTED: libcpp-has-no-localization"], + "ostream": ["UNSUPPORTED: libcpp-has-no-localization"], + "regex": ["UNSUPPORTED: libcpp-has-no-localization"], } def get_std_dialects(): diff --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py index 47cfa7da67f8..53509d95ae21 100644 --- a/libcxx/utils/libcxx/test/features.py +++ b/libcxx/utils/libcxx/test/features.py @@ -75,6 +75,7 @@ macros = { '_LIBCPP_ABI_VERSION': 'libcpp-abi-version', '_LIBCPP_ABI_UNSTABLE': 'libcpp-abi-unstable', '_LIBCPP_HAS_NO_RANDOM_DEVICE': 'libcpp-has-no-random-device', + '_LIBCPP_HAS_NO_LOCALIZATION': 'libcpp-has-no-localization', } for macro, feature in macros.items(): DEFAULT_FEATURES += [