llvm-capstone/libcxx/include/CMakeLists.txt
Christopher Di Bella ab46648082 [libcxx] adds an include-what-you-use (IWYU) mapping file
This makes it possible for programmers to run IWYU and get more accurate
standard library inclusions. Prior to this commit, the following program
would be transformed thusly:

```cpp
// Before
 #include <algorithm>
 #include <vector>

void f() {
  auto v = std::vector{0, 1};
  std::find(std::ranges::begin(v), std::ranges::end(v), 0);
}
```

```cpp
// After
 #include <__algorithm/find.h>
 #include <__ranges/access.h>
 #include <vector>
...
```

There are two ways to fix this issue: to use [comment pragmas](https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUPragmas.md)
on every private include, or to write a canonical [mapping file](https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUMappings.md)
that provides the tool with a manual on how libc++ is laid out. Due to
the complexity of libc++, this commit opts for the latter, to maximise
correctness and minimise developer burden.

To mimimise developer updates to the file, it makes use of wildcards
that match everything within listed subdirectories. A script has also
been added to ensure that the mapping is always fresh in CI, and makes
the process a single step.

Finally, documentation has been added to inform users that IWYU is
supported, and what they need to do in order to leverage the mapping
file.

Closes #56937.

Differential Revision: https://reviews.llvm.org/D138189
2022-11-22 01:09:49 +00:00

898 lines
24 KiB
CMake

set(files
__algorithm/adjacent_find.h
__algorithm/all_of.h
__algorithm/any_of.h
__algorithm/binary_search.h
__algorithm/clamp.h
__algorithm/comp.h
__algorithm/comp_ref_type.h
__algorithm/copy.h
__algorithm/copy_backward.h
__algorithm/copy_if.h
__algorithm/copy_n.h
__algorithm/count.h
__algorithm/count_if.h
__algorithm/equal.h
__algorithm/equal_range.h
__algorithm/fill.h
__algorithm/fill_n.h
__algorithm/find.h
__algorithm/find_end.h
__algorithm/find_first_of.h
__algorithm/find_if.h
__algorithm/find_if_not.h
__algorithm/for_each.h
__algorithm/for_each_n.h
__algorithm/generate.h
__algorithm/generate_n.h
__algorithm/half_positive.h
__algorithm/in_found_result.h
__algorithm/in_fun_result.h
__algorithm/in_in_out_result.h
__algorithm/in_in_result.h
__algorithm/in_out_out_result.h
__algorithm/in_out_result.h
__algorithm/includes.h
__algorithm/inplace_merge.h
__algorithm/is_heap.h
__algorithm/is_heap_until.h
__algorithm/is_partitioned.h
__algorithm/is_permutation.h
__algorithm/is_sorted.h
__algorithm/is_sorted_until.h
__algorithm/iter_swap.h
__algorithm/iterator_operations.h
__algorithm/lexicographical_compare.h
__algorithm/lower_bound.h
__algorithm/make_heap.h
__algorithm/make_projected.h
__algorithm/max.h
__algorithm/max_element.h
__algorithm/merge.h
__algorithm/min.h
__algorithm/min_element.h
__algorithm/min_max_result.h
__algorithm/minmax.h
__algorithm/minmax_element.h
__algorithm/mismatch.h
__algorithm/move.h
__algorithm/move_backward.h
__algorithm/next_permutation.h
__algorithm/none_of.h
__algorithm/nth_element.h
__algorithm/partial_sort.h
__algorithm/partial_sort_copy.h
__algorithm/partition.h
__algorithm/partition_copy.h
__algorithm/partition_point.h
__algorithm/pop_heap.h
__algorithm/prev_permutation.h
__algorithm/push_heap.h
__algorithm/ranges_adjacent_find.h
__algorithm/ranges_all_of.h
__algorithm/ranges_any_of.h
__algorithm/ranges_binary_search.h
__algorithm/ranges_clamp.h
__algorithm/ranges_copy.h
__algorithm/ranges_copy_backward.h
__algorithm/ranges_copy_if.h
__algorithm/ranges_copy_n.h
__algorithm/ranges_count.h
__algorithm/ranges_count_if.h
__algorithm/ranges_equal.h
__algorithm/ranges_equal_range.h
__algorithm/ranges_fill.h
__algorithm/ranges_fill_n.h
__algorithm/ranges_find.h
__algorithm/ranges_find_end.h
__algorithm/ranges_find_first_of.h
__algorithm/ranges_find_if.h
__algorithm/ranges_find_if_not.h
__algorithm/ranges_for_each.h
__algorithm/ranges_for_each_n.h
__algorithm/ranges_generate.h
__algorithm/ranges_generate_n.h
__algorithm/ranges_includes.h
__algorithm/ranges_inplace_merge.h
__algorithm/ranges_is_heap.h
__algorithm/ranges_is_heap_until.h
__algorithm/ranges_is_partitioned.h
__algorithm/ranges_is_permutation.h
__algorithm/ranges_is_sorted.h
__algorithm/ranges_is_sorted_until.h
__algorithm/ranges_iterator_concept.h
__algorithm/ranges_lexicographical_compare.h
__algorithm/ranges_lower_bound.h
__algorithm/ranges_make_heap.h
__algorithm/ranges_max.h
__algorithm/ranges_max_element.h
__algorithm/ranges_merge.h
__algorithm/ranges_min.h
__algorithm/ranges_min_element.h
__algorithm/ranges_minmax.h
__algorithm/ranges_minmax_element.h
__algorithm/ranges_mismatch.h
__algorithm/ranges_move.h
__algorithm/ranges_move_backward.h
__algorithm/ranges_next_permutation.h
__algorithm/ranges_none_of.h
__algorithm/ranges_nth_element.h
__algorithm/ranges_partial_sort.h
__algorithm/ranges_partial_sort_copy.h
__algorithm/ranges_partition.h
__algorithm/ranges_partition_copy.h
__algorithm/ranges_partition_point.h
__algorithm/ranges_pop_heap.h
__algorithm/ranges_prev_permutation.h
__algorithm/ranges_push_heap.h
__algorithm/ranges_remove.h
__algorithm/ranges_remove_copy.h
__algorithm/ranges_remove_copy_if.h
__algorithm/ranges_remove_if.h
__algorithm/ranges_replace.h
__algorithm/ranges_replace_copy.h
__algorithm/ranges_replace_copy_if.h
__algorithm/ranges_replace_if.h
__algorithm/ranges_reverse.h
__algorithm/ranges_reverse_copy.h
__algorithm/ranges_rotate.h
__algorithm/ranges_rotate_copy.h
__algorithm/ranges_sample.h
__algorithm/ranges_search.h
__algorithm/ranges_search_n.h
__algorithm/ranges_set_difference.h
__algorithm/ranges_set_intersection.h
__algorithm/ranges_set_symmetric_difference.h
__algorithm/ranges_set_union.h
__algorithm/ranges_shuffle.h
__algorithm/ranges_sort.h
__algorithm/ranges_sort_heap.h
__algorithm/ranges_stable_partition.h
__algorithm/ranges_stable_sort.h
__algorithm/ranges_swap_ranges.h
__algorithm/ranges_transform.h
__algorithm/ranges_unique.h
__algorithm/ranges_unique_copy.h
__algorithm/ranges_upper_bound.h
__algorithm/remove.h
__algorithm/remove_copy.h
__algorithm/remove_copy_if.h
__algorithm/remove_if.h
__algorithm/replace.h
__algorithm/replace_copy.h
__algorithm/replace_copy_if.h
__algorithm/replace_if.h
__algorithm/reverse.h
__algorithm/reverse_copy.h
__algorithm/rotate.h
__algorithm/rotate_copy.h
__algorithm/sample.h
__algorithm/search.h
__algorithm/search_n.h
__algorithm/set_difference.h
__algorithm/set_intersection.h
__algorithm/set_symmetric_difference.h
__algorithm/set_union.h
__algorithm/shift_left.h
__algorithm/shift_right.h
__algorithm/shuffle.h
__algorithm/sift_down.h
__algorithm/sort.h
__algorithm/sort_heap.h
__algorithm/stable_partition.h
__algorithm/stable_sort.h
__algorithm/swap_ranges.h
__algorithm/transform.h
__algorithm/uniform_random_bit_generator_adaptor.h
__algorithm/unique.h
__algorithm/unique_copy.h
__algorithm/unwrap_iter.h
__algorithm/unwrap_range.h
__algorithm/upper_bound.h
__assert
__availability
__bit/bit_cast.h
__bit/byteswap.h
__bit_reference
__bits
__bsd_locale_defaults.h
__bsd_locale_fallbacks.h
__charconv/chars_format.h
__charconv/from_chars_result.h
__charconv/tables.h
__charconv/to_chars_base_10.h
__charconv/to_chars_result.h
__chrono/calendar.h
__chrono/convert_to_timespec.h
__chrono/convert_to_tm.h
__chrono/day.h
__chrono/duration.h
__chrono/file_clock.h
__chrono/formatter.h
__chrono/hh_mm_ss.h
__chrono/high_resolution_clock.h
__chrono/literals.h
__chrono/month.h
__chrono/month_weekday.h
__chrono/monthday.h
__chrono/ostream.h
__chrono/parser_std_format_spec.h
__chrono/statically_widen.h
__chrono/steady_clock.h
__chrono/system_clock.h
__chrono/time_point.h
__chrono/weekday.h
__chrono/year.h
__chrono/year_month.h
__chrono/year_month_day.h
__chrono/year_month_weekday.h
__compare/common_comparison_category.h
__compare/compare_partial_order_fallback.h
__compare/compare_strong_order_fallback.h
__compare/compare_three_way.h
__compare/compare_three_way_result.h
__compare/compare_weak_order_fallback.h
__compare/is_eq.h
__compare/ordering.h
__compare/partial_order.h
__compare/strong_order.h
__compare/synth_three_way.h
__compare/three_way_comparable.h
__compare/weak_order.h
__concepts/arithmetic.h
__concepts/assignable.h
__concepts/boolean_testable.h
__concepts/class_or_enum.h
__concepts/common_reference_with.h
__concepts/common_with.h
__concepts/constructible.h
__concepts/convertible_to.h
__concepts/copyable.h
__concepts/derived_from.h
__concepts/destructible.h
__concepts/different_from.h
__concepts/equality_comparable.h
__concepts/invocable.h
__concepts/movable.h
__concepts/predicate.h
__concepts/regular.h
__concepts/relation.h
__concepts/same_as.h
__concepts/semiregular.h
__concepts/swappable.h
__concepts/totally_ordered.h
__config
__coroutine/coroutine_handle.h
__coroutine/coroutine_traits.h
__coroutine/noop_coroutine_handle.h
__coroutine/trivial_awaitables.h
__debug
__debug_utils/randomize_range.h
__errc
__filesystem/copy_options.h
__filesystem/directory_entry.h
__filesystem/directory_iterator.h
__filesystem/directory_options.h
__filesystem/file_status.h
__filesystem/file_time_type.h
__filesystem/file_type.h
__filesystem/filesystem_error.h
__filesystem/operations.h
__filesystem/path.h
__filesystem/path_iterator.h
__filesystem/perm_options.h
__filesystem/perms.h
__filesystem/recursive_directory_iterator.h
__filesystem/space_info.h
__filesystem/u8path.h
__format/buffer.h
__format/concepts.h
__format/enable_insertable.h
__format/escaped_output_table.h
__format/extended_grapheme_cluster_table.h
__format/format_arg.h
__format/format_arg_store.h
__format/format_args.h
__format/format_context.h
__format/format_error.h
__format/format_functions.h
__format/format_fwd.h
__format/format_parse_context.h
__format/format_string.h
__format/format_to_n_result.h
__format/formatter.h
__format/formatter_bool.h
__format/formatter_char.h
__format/formatter_floating_point.h
__format/formatter_integer.h
__format/formatter_integral.h
__format/formatter_output.h
__format/formatter_pointer.h
__format/formatter_string.h
__format/parser_std_format_spec.h
__format/unicode.h
__functional/binary_function.h
__functional/binary_negate.h
__functional/bind.h
__functional/bind_back.h
__functional/bind_front.h
__functional/binder1st.h
__functional/binder2nd.h
__functional/boyer_moore_searcher.h
__functional/compose.h
__functional/default_searcher.h
__functional/function.h
__functional/hash.h
__functional/identity.h
__functional/invoke.h
__functional/is_transparent.h
__functional/mem_fn.h
__functional/mem_fun_ref.h
__functional/not_fn.h
__functional/operations.h
__functional/perfect_forward.h
__functional/pointer_to_binary_function.h
__functional/pointer_to_unary_function.h
__functional/ranges_operations.h
__functional/reference_wrapper.h
__functional/unary_function.h
__functional/unary_negate.h
__functional/unwrap_ref.h
__functional/weak_result_type.h
__fwd/array.h
__fwd/get.h
__fwd/hash.h
__fwd/memory_resource.h
__fwd/pair.h
__fwd/span.h
__fwd/string.h
__fwd/string_view.h
__fwd/tuple.h
__hash_table
__ios/fpos.h
__iterator/access.h
__iterator/advance.h
__iterator/back_insert_iterator.h
__iterator/bounded_iter.h
__iterator/common_iterator.h
__iterator/concepts.h
__iterator/counted_iterator.h
__iterator/data.h
__iterator/default_sentinel.h
__iterator/distance.h
__iterator/empty.h
__iterator/erase_if_container.h
__iterator/front_insert_iterator.h
__iterator/incrementable_traits.h
__iterator/indirectly_comparable.h
__iterator/insert_iterator.h
__iterator/istream_iterator.h
__iterator/istreambuf_iterator.h
__iterator/iter_move.h
__iterator/iter_swap.h
__iterator/iterator.h
__iterator/iterator_traits.h
__iterator/mergeable.h
__iterator/move_iterator.h
__iterator/move_sentinel.h
__iterator/next.h
__iterator/ostream_iterator.h
__iterator/ostreambuf_iterator.h
__iterator/permutable.h
__iterator/prev.h
__iterator/projected.h
__iterator/readable_traits.h
__iterator/reverse_access.h
__iterator/reverse_iterator.h
__iterator/size.h
__iterator/sortable.h
__iterator/unreachable_sentinel.h
__iterator/wrap_iter.h
__locale
__mbstate_t.h
__memory/addressof.h
__memory/align.h
__memory/allocate_at_least.h
__memory/allocation_guard.h
__memory/allocator.h
__memory/allocator_arg_t.h
__memory/allocator_destructor.h
__memory/allocator_traits.h
__memory/assume_aligned.h
__memory/auto_ptr.h
__memory/builtin_new_allocator.h
__memory/compressed_pair.h
__memory/concepts.h
__memory/construct_at.h
__memory/destruct_n.h
__memory/pointer_traits.h
__memory/ranges_construct_at.h
__memory/ranges_uninitialized_algorithms.h
__memory/raw_storage_iterator.h
__memory/shared_ptr.h
__memory/swap_allocator.h
__memory/temp_value.h
__memory/temporary_buffer.h
__memory/uninitialized_algorithms.h
__memory/unique_ptr.h
__memory/uses_allocator.h
__memory/uses_allocator_construction.h
__memory/voidify.h
__memory_resource/memory_resource.h
__memory_resource/monotonic_buffer_resource.h
__memory_resource/polymorphic_allocator.h
__memory_resource/pool_options.h
__memory_resource/synchronized_pool_resource.h
__memory_resource/unsynchronized_pool_resource.h
__mutex_base
__node_handle
__numeric/accumulate.h
__numeric/adjacent_difference.h
__numeric/exclusive_scan.h
__numeric/gcd_lcm.h
__numeric/inclusive_scan.h
__numeric/inner_product.h
__numeric/iota.h
__numeric/midpoint.h
__numeric/partial_sum.h
__numeric/reduce.h
__numeric/transform_exclusive_scan.h
__numeric/transform_inclusive_scan.h
__numeric/transform_reduce.h
__random/bernoulli_distribution.h
__random/binomial_distribution.h
__random/cauchy_distribution.h
__random/chi_squared_distribution.h
__random/clamp_to_integral.h
__random/default_random_engine.h
__random/discard_block_engine.h
__random/discrete_distribution.h
__random/exponential_distribution.h
__random/extreme_value_distribution.h
__random/fisher_f_distribution.h
__random/gamma_distribution.h
__random/generate_canonical.h
__random/geometric_distribution.h
__random/independent_bits_engine.h
__random/is_seed_sequence.h
__random/is_valid.h
__random/knuth_b.h
__random/linear_congruential_engine.h
__random/log2.h
__random/lognormal_distribution.h
__random/mersenne_twister_engine.h
__random/negative_binomial_distribution.h
__random/normal_distribution.h
__random/piecewise_constant_distribution.h
__random/piecewise_linear_distribution.h
__random/poisson_distribution.h
__random/random_device.h
__random/ranlux.h
__random/seed_seq.h
__random/shuffle_order_engine.h
__random/student_t_distribution.h
__random/subtract_with_carry_engine.h
__random/uniform_int_distribution.h
__random/uniform_random_bit_generator.h
__random/uniform_real_distribution.h
__random/weibull_distribution.h
__ranges/access.h
__ranges/all.h
__ranges/common_view.h
__ranges/concepts.h
__ranges/copyable_box.h
__ranges/counted.h
__ranges/dangling.h
__ranges/data.h
__ranges/drop_view.h
__ranges/drop_while_view.h
__ranges/empty.h
__ranges/empty_view.h
__ranges/enable_borrowed_range.h
__ranges/enable_view.h
__ranges/filter_view.h
__ranges/iota_view.h
__ranges/istream_view.h
__ranges/join_view.h
__ranges/lazy_split_view.h
__ranges/non_propagating_cache.h
__ranges/owning_view.h
__ranges/range_adaptor.h
__ranges/rbegin.h
__ranges/ref_view.h
__ranges/rend.h
__ranges/reverse_view.h
__ranges/single_view.h
__ranges/size.h
__ranges/subrange.h
__ranges/take_view.h
__ranges/take_while_view.h
__ranges/transform_view.h
__ranges/view_interface.h
__ranges/views.h
__ranges/zip_view.h
__split_buffer
__std_stream
__string/char_traits.h
__string/extern_template_lists.h
__support/android/locale_bionic.h
__support/fuchsia/xlocale.h
__support/ibm/gettod_zos.h
__support/ibm/locale_mgmt_zos.h
__support/ibm/nanosleep.h
__support/ibm/xlocale.h
__support/musl/xlocale.h
__support/newlib/xlocale.h
__support/openbsd/xlocale.h
__support/solaris/floatingpoint.h
__support/solaris/wchar.h
__support/solaris/xlocale.h
__support/win32/locale_win32.h
__support/xlocale/__nop_locale_mgmt.h
__support/xlocale/__posix_l_fallback.h
__support/xlocale/__strtonum_fallback.h
__thread/poll_with_backoff.h
__thread/timed_backoff_policy.h
__threading_support
__tree
__tuple/apply_cv.h
__tuple/make_tuple_types.h
__tuple/sfinae_helpers.h
__tuple/tuple_element.h
__tuple/tuple_indices.h
__tuple/tuple_like.h
__tuple/tuple_size.h
__tuple/tuple_types.h
__type_traits/add_const.h
__type_traits/add_cv.h
__type_traits/add_lvalue_reference.h
__type_traits/add_pointer.h
__type_traits/add_rvalue_reference.h
__type_traits/add_volatile.h
__type_traits/aligned_storage.h
__type_traits/aligned_union.h
__type_traits/alignment_of.h
__type_traits/apply_cv.h
__type_traits/can_extract_key.h
__type_traits/common_reference.h
__type_traits/common_type.h
__type_traits/conditional.h
__type_traits/conjunction.h
__type_traits/copy_cv.h
__type_traits/copy_cvref.h
__type_traits/decay.h
__type_traits/dependent_type.h
__type_traits/disjunction.h
__type_traits/enable_if.h
__type_traits/extent.h
__type_traits/has_unique_object_representation.h
__type_traits/has_virtual_destructor.h
__type_traits/integral_constant.h
__type_traits/is_abstract.h
__type_traits/is_aggregate.h
__type_traits/is_allocator.h
__type_traits/is_arithmetic.h
__type_traits/is_array.h
__type_traits/is_assignable.h
__type_traits/is_base_of.h
__type_traits/is_bounded_array.h
__type_traits/is_callable.h
__type_traits/is_char_like_type.h
__type_traits/is_class.h
__type_traits/is_compound.h
__type_traits/is_const.h
__type_traits/is_constant_evaluated.h
__type_traits/is_constructible.h
__type_traits/is_convertible.h
__type_traits/is_copy_assignable.h
__type_traits/is_copy_constructible.h
__type_traits/is_core_convertible.h
__type_traits/is_default_constructible.h
__type_traits/is_destructible.h
__type_traits/is_empty.h
__type_traits/is_enum.h
__type_traits/is_final.h
__type_traits/is_floating_point.h
__type_traits/is_function.h
__type_traits/is_fundamental.h
__type_traits/is_implicitly_default_constructible.h
__type_traits/is_integral.h
__type_traits/is_literal_type.h
__type_traits/is_member_function_pointer.h
__type_traits/is_member_object_pointer.h
__type_traits/is_member_pointer.h
__type_traits/is_move_assignable.h
__type_traits/is_move_constructible.h
__type_traits/is_nothrow_assignable.h
__type_traits/is_nothrow_constructible.h
__type_traits/is_nothrow_convertible.h
__type_traits/is_nothrow_copy_assignable.h
__type_traits/is_nothrow_copy_constructible.h
__type_traits/is_nothrow_default_constructible.h
__type_traits/is_nothrow_destructible.h
__type_traits/is_nothrow_move_assignable.h
__type_traits/is_nothrow_move_constructible.h
__type_traits/is_null_pointer.h
__type_traits/is_object.h
__type_traits/is_pod.h
__type_traits/is_pointer.h
__type_traits/is_polymorphic.h
__type_traits/is_primary_template.h
__type_traits/is_reference.h
__type_traits/is_reference_wrapper.h
__type_traits/is_referenceable.h
__type_traits/is_same.h
__type_traits/is_scalar.h
__type_traits/is_scoped_enum.h
__type_traits/is_signed.h
__type_traits/is_signed_integer.h
__type_traits/is_standard_layout.h
__type_traits/is_swappable.h
__type_traits/is_trivial.h
__type_traits/is_trivially_assignable.h
__type_traits/is_trivially_constructible.h
__type_traits/is_trivially_copy_assignable.h
__type_traits/is_trivially_copy_constructible.h
__type_traits/is_trivially_copyable.h
__type_traits/is_trivially_default_constructible.h
__type_traits/is_trivially_destructible.h
__type_traits/is_trivially_move_assignable.h
__type_traits/is_trivially_move_constructible.h
__type_traits/is_unbounded_array.h
__type_traits/is_union.h
__type_traits/is_unsigned.h
__type_traits/is_unsigned_integer.h
__type_traits/is_valid_expansion.h
__type_traits/is_void.h
__type_traits/is_volatile.h
__type_traits/lazy.h
__type_traits/make_32_64_or_128_bit.h
__type_traits/make_const_lvalue_ref.h
__type_traits/make_signed.h
__type_traits/make_unsigned.h
__type_traits/maybe_const.h
__type_traits/nat.h
__type_traits/negation.h
__type_traits/noexcept_move_assign_container.h
__type_traits/promote.h
__type_traits/rank.h
__type_traits/remove_all_extents.h
__type_traits/remove_const.h
__type_traits/remove_const_ref.h
__type_traits/remove_cv.h
__type_traits/remove_cvref.h
__type_traits/remove_extent.h
__type_traits/remove_pointer.h
__type_traits/remove_reference.h
__type_traits/remove_volatile.h
__type_traits/result_of.h
__type_traits/type_identity.h
__type_traits/type_list.h
__type_traits/underlying_type.h
__type_traits/void_t.h
__undef_macros
__utility/as_const.h
__utility/auto_cast.h
__utility/cmp.h
__utility/convert_to_integral.h
__utility/declval.h
__utility/exchange.h
__utility/forward.h
__utility/forward_like.h
__utility/in_place.h
__utility/integer_sequence.h
__utility/move.h
__utility/pair.h
__utility/piecewise_construct.h
__utility/priority_tag.h
__utility/rel_ops.h
__utility/swap.h
__utility/to_underlying.h
__utility/transaction.h
__utility/unreachable.h
__variant/monostate.h
__verbose_abort
algorithm
any
array
atomic
barrier
bit
bitset
cassert
ccomplex
cctype
cerrno
cfenv
cfloat
charconv
chrono
cinttypes
ciso646
climits
clocale
cmath
codecvt
compare
complex
complex.h
concepts
condition_variable
coroutine
csetjmp
csignal
cstdarg
cstdbool
cstddef
cstdint
cstdio
cstdlib
cstring
ctgmath
ctime
ctype.h
cuchar
cwchar
cwctype
deque
errno.h
exception
execution
experimental/__config
experimental/__memory
experimental/algorithm
experimental/coroutine
experimental/deque
experimental/forward_list
experimental/functional
experimental/iterator
experimental/list
experimental/map
experimental/memory_resource
experimental/propagate_const
experimental/regex
experimental/set
experimental/simd
experimental/string
experimental/type_traits
experimental/unordered_map
experimental/unordered_set
experimental/utility
experimental/vector
ext/__hash
ext/hash_map
ext/hash_set
fenv.h
filesystem
float.h
format
forward_list
fstream
functional
future
initializer_list
inttypes.h
iomanip
ios
iosfwd
iostream
istream
iterator
latch
libcxx.imp
limits
limits.h
list
locale
locale.h
map
math.h
memory
memory_resource
mutex
new
numbers
numeric
optional
ostream
queue
random
ranges
ratio
regex
scoped_allocator
semaphore
set
setjmp.h
shared_mutex
span
sstream
stack
stdatomic.h
stdbool.h
stddef.h
stdexcept
stdint.h
stdio.h
stdlib.h
streambuf
string
string.h
string_view
strstream
system_error
tgmath.h
thread
tuple
type_traits
typeindex
typeinfo
uchar.h
unordered_map
unordered_set
utility
valarray
variant
vector
version
wchar.h
wctype.h
)
foreach(feature LIBCXX_ENABLE_FILESYSTEM LIBCXX_ENABLE_LOCALIZATION LIBCXX_ENABLE_FSTREAM LIBCXX_ENABLE_THREADS LIBCXX_ENABLE_WIDE_CHARACTERS)
if (NOT ${${feature}})
set(requires_${feature} "requires LIBCXX_CONFIGURED_WITHOUT_SUPPORT_FOR_THIS_HEADER")
endif()
endforeach()
configure_file("__config_site.in" "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site" @ONLY)
configure_file("module.modulemap.in" "${LIBCXX_GENERATED_INCLUDE_DIR}/module.modulemap" @ONLY)
set(_all_includes "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site"
"${LIBCXX_GENERATED_INCLUDE_DIR}/module.modulemap")
foreach(f ${files})
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
set(dst "${LIBCXX_GENERATED_INCLUDE_DIR}/${f}")
add_custom_command(OUTPUT ${dst}
DEPENDS ${src}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
COMMENT "Copying CXX header ${f}")
list(APPEND _all_includes "${dst}")
endforeach()
add_custom_target(generate-cxx-headers ALL DEPENDS ${_all_includes})
add_library(cxx-headers INTERFACE)
target_link_libraries(cxx-headers INTERFACE libcxx-abi-headers)
add_dependencies(cxx-headers generate-cxx-headers)
target_include_directories(cxx-headers INTERFACE ${LIBCXX_GENERATED_INCLUDE_DIR}
${LIBCXX_GENERATED_INCLUDE_TARGET_DIR})
if (LIBCXX_INSTALL_HEADERS)
foreach(file ${files})
get_filename_component(dir ${file} DIRECTORY)
install(FILES ${file}
DESTINATION "${LIBCXX_INSTALL_INCLUDE_DIR}/${dir}"
COMPONENT cxx-headers
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endforeach()
# Install the generated __config_site and the generated modulemap file.
install(FILES "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site"
"${LIBCXX_GENERATED_INCLUDE_DIR}/module.modulemap"
DESTINATION "${LIBCXX_INSTALL_INCLUDE_TARGET_DIR}"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
COMPONENT cxx-headers)
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-cxx-headers
DEPENDS cxx-headers
COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=cxx-headers
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
# Stripping is a no-op for headers
add_custom_target(install-cxx-headers-stripped DEPENDS install-cxx-headers)
endif()
endif()