[libc++] Disable incomplete library features.
authorMark de Wever <koraq@xs4all.nl>
Sun, 25 Jul 2021 07:18:53 +0000 (09:18 +0200)
committerMark de Wever <koraq@xs4all.nl>
Tue, 27 Jul 2021 20:37:35 +0000 (22:37 +0200)
commit71909de37495c82e31ae3a59f366f48e8fb66e54
treefb3e58a777ce476dc4c1c2abc8dad8502c671894
parentd1c7a57fe8e051aa7886a7d4052627f6bc4a4ae6
[libc++] Disable incomplete library features.

Adds a new CMake option to disable the usage of incomplete headers.
These incomplete headers are not guaranteed to be ABI stable. This
option is intended to be used by vendors so they can avoid their users
from code that's not ready for production usage.

The option is enabled by default.

Differential Revision: https://reviews.llvm.org/D106763
155 files changed:
libcxx/CMakeLists.txt
libcxx/cmake/caches/Apple.cmake
libcxx/docs/BuildingLibcxx.rst
libcxx/include/__config_site.in
libcxx/include/format
libcxx/include/ranges
libcxx/src/CMakeLists.txt
libcxx/test/libcxx/double_include.sh.cpp
libcxx/test/libcxx/inclusions/ranges.inclusions.compile.pass.cpp
libcxx/test/libcxx/min_max_macros.compile.pass.cpp
libcxx/test/libcxx/no_assert_include.compile.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/assign.copy.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/assign.move.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/ctor.default.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/ctor.in_place.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/deref.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/has_value.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/no_unique_address.pass.cpp
libcxx/test/libcxx/ranges/range.adaptors/range.copy.wrap/properties.compile.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/assign.copy.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/assign.move.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/constraints.compile.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/ctor.copy.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/ctor.default.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/ctor.move.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/deref.pass.cpp
libcxx/test/libcxx/ranges/range.nonprop.cache/has_value.pass.cpp
libcxx/test/libcxx/ranges/range.utility.helpers/different_from.compile.pass.cpp
libcxx/test/libcxx/ranges/range.utility.helpers/has_arrow.compile.pass.cpp
libcxx/test/libcxx/ranges/range.utility.helpers/simple_view.compile.pass.cpp
libcxx/test/libcxx/ranges/version.compile.pass.cpp
libcxx/test/libcxx/utilities/format/version.compile.pass.cpp
libcxx/test/std/containers/associative/map/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/multimap/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/multiset/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/set/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/array/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/deque/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/list/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/vector.bool/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/vector/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.map/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.set/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/views/range_concept_conformance.compile.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_iterator/range_concept_conformance.compile.pass.cpp
libcxx/test/std/input.output/filesystems/class.path/range_concept_conformance.compile.pass.cpp
libcxx/test/std/iterators/predef.iterators/iterators.common/assign.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/format.version.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp
libcxx/test/std/ranges/range.access/range.access.begin/begin.pass.cpp
libcxx/test/std/ranges/range.access/range.access.begin/incomplete.compile.verify.cpp
libcxx/test/std/ranges/range.access/range.access.cbegin/incomplete.compile.verify.cpp
libcxx/test/std/ranges/range.access/range.access.cend/incomplete.compile.verify.cpp
libcxx/test/std/ranges/range.access/range.access.end/end.pass.cpp
libcxx/test/std/ranges/range.access/range.access.end/incomplete.compile.verify.cpp
libcxx/test/std/ranges/range.access/range.prim/data.incomplete.verify.cpp
libcxx/test/std/ranges/range.access/range.prim/data.pass.cpp
libcxx/test/std/ranges/range.access/range.prim/empty.incomplete.verify.cpp
libcxx/test/std/ranges/range.access/range.prim/empty.pass.cpp
libcxx/test/std/ranges/range.access/range.prim/size.pass.cpp
libcxx/test/std/ranges/range.access/range.prim/ssize.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.all/all.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.all/all_t.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/base.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/begin.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/borrowing.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/ctad.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/ctor.default.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/ctor.view.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/end.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.common.view/size.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/base.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/ctad.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/ctor.default.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/end.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/general.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.drop/size.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.empty/empty_view.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.ref.view.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/base.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/ctad.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/end.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/general.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/arithmetic.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/base.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/compare.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/ctor.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/deref.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/iter_move.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/plus_minus.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/requirements.compile.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/subscript.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/iterator/types.pass.cpp
libcxx/test/std/ranges/range.adaptors/range.transform/size.pass.cpp
libcxx/test/std/ranges/range.range/borrowed_range.compile.pass.cpp
libcxx/test/std/ranges/range.range/borrowed_range.subsumption.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/enable_borrowed_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/helper_aliases.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/iterator_t.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/range_size_t.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.range/sentinel_t.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/bidirectional_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/common_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/contiguous_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/forward_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/input_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/output_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/random_access_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/subsumption.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.refinements/viewable_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.sized/sized_range.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.sized/subsumption.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.view/enable_view.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.view/view.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.view/view.subsumption.compile.pass.cpp
libcxx/test/std/ranges/range.req/range.view/view_base.compile.pass.cpp
libcxx/test/std/ranges/range.utility/range.dangling/borrowed_iterator.compile.pass.cpp
libcxx/test/std/ranges/range.utility/range.dangling/borrowed_subrange.compile.pass.cpp
libcxx/test/std/ranges/range.utility/range.dangling/dangling.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/access/advance.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/access/get.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/access/primitives.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctad.compile.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctor/begin_end.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctor/begin_end_size.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctor/pair_like_conv.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctor/range.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/ctor/range_size.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/enable_borrowed_range.compile.pass.cpp
libcxx/test/std/ranges/range.utility/range.subrange/general.compile.pass.cpp
libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
libcxx/test/std/re/re.results/range_concept_conformance.compile.pass.cpp
libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp
libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp
libcxx/test/std/utilities/format/format.error/format.error.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/check_arg_id.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.pass.cpp
libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
libcxx/utils/generate_feature_test_macro_components.py
libcxx/utils/generate_header_inclusion_tests.py
libcxx/utils/generate_header_tests.py
libcxx/utils/libcxx/test/features.py