From 88ffc72717c3b66b185caf8efcb0c19f32c355cd Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 9 Oct 2020 15:31:05 -0400 Subject: [PATCH] [libc++] Add a libc++ configuration that does not support localization When porting libc++ to embedded systems, it can be useful to drop support for localization, which these systems don't implement or care about. Differential Revision: https://reviews.llvm.org/D90072 --- libcxx/CMakeLists.txt | 7 +++ libcxx/cmake/caches/Generic-no-localization.cmake | 1 + libcxx/include/__config_site.in | 1 + libcxx/include/__locale | 5 ++ libcxx/include/complex | 7 ++- libcxx/include/filesystem | 30 +++++++++--- libcxx/src/CMakeLists.txt | 15 ++++-- .../depr/depr.str.strstreams/version.pass.cpp | 2 + libcxx/test/libcxx/double_include.sh.cpp | 31 +++++++----- .../header_regex_libcpp_version.pass.cpp | 1 + libcxx/test/libcxx/fuzzing/regex.pass.cpp | 1 + .../libcxx/input.output/file.streams/lit.local.cfg | 4 ++ .../input.output/iostream.format/lit.local.cfg | 4 ++ .../input.output/iostream.objects/lit.local.cfg | 4 ++ .../input.output/iostreams.base/lit.local.cfg | 4 ++ .../input.output/stream.buffers/lit.local.cfg | 4 ++ .../input.output/string.streams/lit.local.cfg | 4 ++ libcxx/test/libcxx/localization/lit.local.cfg | 4 ++ libcxx/test/libcxx/min_max_macros.compile.pass.cpp | 57 ++++++++++++---------- .../modules/cinttypes_exports.compile.pass.cpp | 7 +-- .../modules/clocale_exports.compile.pass.cpp | 7 +-- .../modules/cstdint_exports.compile.pass.cpp | 7 +-- .../modules/inttypes_h_exports.compile.pass.cpp | 7 +-- .../modules/stdint_h_exports.compile.pass.cpp | 7 +-- libcxx/test/libcxx/modules/stds_include.sh.cpp | 7 +-- .../test/libcxx/no_assert_include.compile.pass.cpp | 31 +++++++----- .../test/std/depr/depr.ios.members/lit.local.cfg | 2 + .../std/depr/depr.str.strstreams/lit.local.cfg | 2 + .../stream_inserter.pass.cpp | 2 + .../ostream_joiner.cons.pass.cpp | 1 + .../make_ostream_joiner.pass.cpp | 1 + .../ostream_joiner.op.assign.pass.cpp | 1 + .../ostream_joiner.op.postincrement.pass.cpp | 1 + .../ostream_joiner.op.pretincrement.pass.cpp | 1 + .../ostream_joiner.op.star.pass.cpp | 1 + .../header_regex_synop.pass.cpp | 1 + .../std/input.output/file.streams/lit.local.cfg | 3 ++ .../class.path/path.member/path.append.pass.cpp | 3 ++ .../path.member/path.assign/source.pass.cpp | 3 ++ .../class.path/path.member/path.concat.pass.cpp | 3 ++ .../path.member/path.construct/source.pass.cpp | 3 ++ .../path.generic.obs/generic_string_alloc.pass.cpp | 3 ++ .../path.generic.obs/named_overloads.pass.cpp | 3 ++ .../path.native.obs/named_overloads.pass.cpp | 3 ++ .../path.native.obs/string_alloc.pass.cpp | 3 ++ .../class.path/path.nonmember/path.io.pass.cpp | 1 + .../input.output.general/lit.local.cfg | 3 ++ .../std/input.output/iostream.format/lit.local.cfg | 3 ++ .../input.output/iostream.forward/lit.local.cfg | 3 ++ .../input.output/iostream.objects/lit.local.cfg | 3 ++ .../std/input.output/iostreams.base/lit.local.cfg | 3 ++ .../iostreams.requirements/lit.local.cfg | 3 ++ .../std/input.output/stream.buffers/lit.local.cfg | 3 ++ .../std/input.output/string.streams/lit.local.cfg | 3 ++ .../std/iterators/stream.iterators/lit.local.cfg | 3 ++ .../iomanip.version.pass.cpp | 2 + .../istream.version.pass.cpp | 2 + .../support.limits.general/locale.version.pass.cpp | 2 + .../ostream.version.pass.cpp | 2 + .../support.limits.general/regex.version.pass.cpp | 2 + libcxx/test/std/localization/lit.local.cfg | 3 ++ .../std/namespace/addressable_functions.sh.cpp | 3 ++ .../complex.ops/stream_input.pass.cpp | 2 + .../complex.ops/stream_output.pass.cpp | 2 + .../rand.adapt.disc/ctor_result_type.pass.cpp | 3 ++ .../rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp | 3 ++ .../rand/rand.adapt/rand.adapt.disc/io.pass.cpp | 2 + .../rand.adapt.ibits/ctor_result_type.pass.cpp | 3 ++ .../rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp | 3 ++ .../rand/rand.adapt/rand.adapt.ibits/io.pass.cpp | 2 + .../rand.adapt.shuf/ctor_result_type.pass.cpp | 3 ++ .../rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp | 3 ++ .../rand/rand.adapt/rand.adapt.shuf/io.pass.cpp | 2 + .../rand.dist.bern.bernoulli/io.pass.cpp | 2 + .../rand.dist.bern.bin/eval.PR44847.pass.cpp | 3 ++ .../rand.dist.bern/rand.dist.bern.bin/io.pass.cpp | 2 + .../rand.dist.bern/rand.dist.bern.geo/io.pass.cpp | 2 + .../rand.dist.bern.negbin/io.pass.cpp | 2 + .../rand.dist.norm.cauchy/io.pass.cpp | 2 + .../rand.dist.norm.chisq/io.pass.cpp | 2 + .../rand.dist.norm/rand.dist.norm.f/io.pass.cpp | 2 + .../rand.dist.norm.lognormal/io.pass.cpp | 2 + .../rand.dist.norm.normal/io.pass.cpp | 2 + .../rand.dist.norm/rand.dist.norm.t/io.pass.cpp | 2 + .../rand.dist.pois/rand.dist.pois.exp/io.pass.cpp | 2 + .../rand.dist.pois.extreme/io.pass.cpp | 2 + .../rand.dist.pois.gamma/io.pass.cpp | 2 + .../rand.dist.pois.poisson/io.pass.cpp | 2 + .../rand.dist.pois.weibull/io.pass.cpp | 2 + .../rand.dist.samp.discrete/io.pass.cpp | 2 + .../rand.dist.samp.pconst/io.pass.cpp | 2 + .../rand.dist.samp.plinear/io.pass.cpp | 2 + .../rand.dist.uni/rand.dist.uni.int/io.pass.cpp | 2 + .../rand.dist.uni/rand.dist.uni.real/io.pass.cpp | 2 + .../rand.eng.lcong/ctor_result_type.pass.cpp | 3 ++ .../rand/rand.eng/rand.eng.lcong/io.pass.cpp | 2 + .../rand.eng.mers/ctor_result_type.pass.cpp | 3 ++ .../rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp | 3 ++ .../rand/rand.eng/rand.eng.mers/io.pass.cpp | 2 + .../rand.eng.sub/ctor_result_type.pass.cpp | 3 ++ .../rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp | 3 ++ .../rand/rand.eng/rand.eng.sub/io.pass.cpp | 2 + libcxx/test/std/re/lit.local.cfg | 3 ++ .../string.nonmembers/string.io/lit.local.cfg | 3 ++ .../string.view.io/stream_insert.pass.cpp | 2 + .../string.view/string.view.nonmem/quoted.pass.cpp | 1 + .../thread.thread.id/stream.pass.cpp | 3 +- .../unique.ptr/unique.ptr.special/io.fail.cpp | 4 +- .../unique.ptr/unique.ptr.special/io.pass.cpp | 2 + .../util.smartptr.shared.io/io.pass.cpp | 2 + .../bitset.operators/stream_in.pass.cpp | 2 + .../bitset.operators/stream_out.pass.cpp | 2 + .../time.cal.day.nonmembers/streaming.pass.cpp | 2 + libcxx/utils/ci/buildkite-pipeline.yml | 7 +++ libcxx/utils/ci/run-buildbot.sh | 6 +++ .../generate_feature_test_macro_components.py | 5 ++ libcxx/utils/libcxx/test/features.py | 1 + 117 files changed, 396 insertions(+), 84 deletions(-) create mode 100644 libcxx/cmake/caches/Generic-no-localization.cmake create mode 100644 libcxx/test/libcxx/input.output/file.streams/lit.local.cfg create mode 100644 libcxx/test/libcxx/input.output/iostream.format/lit.local.cfg create mode 100644 libcxx/test/libcxx/input.output/iostream.objects/lit.local.cfg create mode 100644 libcxx/test/libcxx/input.output/iostreams.base/lit.local.cfg create mode 100644 libcxx/test/libcxx/input.output/stream.buffers/lit.local.cfg create mode 100644 libcxx/test/libcxx/input.output/string.streams/lit.local.cfg create mode 100644 libcxx/test/libcxx/localization/lit.local.cfg create mode 100644 libcxx/test/std/depr/depr.ios.members/lit.local.cfg create mode 100644 libcxx/test/std/depr/depr.str.strstreams/lit.local.cfg create mode 100644 libcxx/test/std/input.output/file.streams/lit.local.cfg create mode 100644 libcxx/test/std/input.output/input.output.general/lit.local.cfg create mode 100644 libcxx/test/std/input.output/iostream.format/lit.local.cfg create mode 100644 libcxx/test/std/input.output/iostream.forward/lit.local.cfg create mode 100644 libcxx/test/std/input.output/iostream.objects/lit.local.cfg create mode 100644 libcxx/test/std/input.output/iostreams.base/lit.local.cfg create mode 100644 libcxx/test/std/input.output/iostreams.requirements/lit.local.cfg create mode 100644 libcxx/test/std/input.output/stream.buffers/lit.local.cfg create mode 100644 libcxx/test/std/input.output/string.streams/lit.local.cfg create mode 100644 libcxx/test/std/iterators/stream.iterators/lit.local.cfg create mode 100644 libcxx/test/std/localization/lit.local.cfg create mode 100644 libcxx/test/std/re/lit.local.cfg create mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 015a359..ee8ba454 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 0000000..79d6b44 --- /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 908fb1e6..8141d3c 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 4721a00..48e7b64 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 ec35f8a..ed84cd4 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 86fff6c..5783ed3 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) @@ -662,6 +665,10 @@ 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, "Char type not convertible"); @@ -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 95dd520..d0e7255 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 59279f7..ac72689 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 42a437b..8384371 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 0d6d97a..ca63a21 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 b027dd0..fca7a9a 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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 0000000..1fc6b79 --- /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 9e9edb8..3347f6f 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 57a5ba5..ec5c8de 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 9220f8e..a460c6e 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 0887b59..c106bf6 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 0add4e1..59b0d62 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 b83e99b..830a251 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 12d2899..5235c7b 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 3cb58cd..182a1f3 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 0000000..ebbd06e --- /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 0000000..ebbd06e --- /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 78f1ca7..2ba88489 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 c5972fe..429388c 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 6e86ce7..ed58745 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 aac14fc..bf9add9 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 57debae..9d9457b 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 a377376..f03fbb0 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 ca18de3..6e54879 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 8f8dea1..faa67a4 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 0000000..cebfbad --- /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 465959b..e787f5d 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 e66df6e..606a816 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 234ad4b..8d02be8 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 ee4d2fe..9e4a882 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 b51ea93..c57ca6e 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 7d385c2..bd32eda 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 970bc0c..12cda19 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 091ea31..cf40392 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 982a7a9..7c60ae2 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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..cebfbad --- /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 0000000..4d09041 --- /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 23378e0..0b1b4ea 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 3d8fb7a..967173e 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 eeea539..4315634 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 d3ba258..bb07375 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 66becad..a73d936 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 0000000..ed0331c --- /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 9b5e80e..de44ba4 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 5c78fe9..344caa2 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 690a16b..9d9f401 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 c3f7812..68e5d8d 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 3cb9df5..2e59866 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 9336b29..c5acba1 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 27f408f..b54aa24 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 37ca482..791ba3c 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 0fb967a..f7cc609 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 e805538..b020229 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 22823ea..3ab141e 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 6bf4c8a..2970c1a 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 68e050a..b55c7b2 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 875e501..c541274 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 7edf05f..accc6c3 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 6cb22c8..c8b4722 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 e0e43d1..a8ca74c 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 2f6bace..2873aef 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 06d7b4e..8a2c380 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 76d4a48..a6aca37 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 cd67c03..92abb3a 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 ae58744..fc136a3 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 2d172dc..1e5e9f6 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 f634f3e..0cf3a5b 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 a3434d8..19ac0ea0 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 ee9f20f..c5cb803 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 afd7713..e5e634a 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 56b2527..06b3325 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 f4576e3..3b21092 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 6256e59..7c761c0 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 92f4d76..f01b38b 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 f3b921a..a52b253 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 e5abad2..7935e6c 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 a273612..0d84604 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 6a93427..f9e9b2d 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 a1f367f..be8ae17 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 9c98e77..a820468 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 6cd1e34..cdb7163 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 08c7a3f..0a8d7e6 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 d522284..472ed2d 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 0000000..a266474 --- /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 0000000..8f204af --- /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 c427e4a..8ba444dc 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 c70d342..3ad9ae2 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 9f1f18d..f04a0eb 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 e63cf4e..583ca60e 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 dd1a9f7..d09e029 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 8903b75..6c3c9e4 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 0127b75..e2667e5 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 3ef0eb8..79621e2 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 2b1e224..d53c67c 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 3400083..925a944 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 31035a4..1f0b3c7 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 be4bfe4..6fef8ea 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 47cfa7d..53509d9 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 += [ -- 2.7.4