1set(files
2  __algorithm/adjacent_find.h
3  __algorithm/all_of.h
4  __algorithm/any_of.h
5  __algorithm/binary_search.h
6  __algorithm/clamp.h
7  __algorithm/comp.h
8  __algorithm/comp_ref_type.h
9  __algorithm/copy.h
10  __algorithm/copy_backward.h
11  __algorithm/copy_if.h
12  __algorithm/copy_n.h
13  __algorithm/count.h
14  __algorithm/count_if.h
15  __algorithm/equal.h
16  __algorithm/equal_range.h
17  __algorithm/fill.h
18  __algorithm/fill_n.h
19  __algorithm/find.h
20  __algorithm/find_end.h
21  __algorithm/find_first_of.h
22  __algorithm/find_if.h
23  __algorithm/find_if_not.h
24  __algorithm/for_each.h
25  __algorithm/for_each_n.h
26  __algorithm/generate.h
27  __algorithm/generate_n.h
28  __algorithm/half_positive.h
29  __algorithm/in_found_result.h
30  __algorithm/in_fun_result.h
31  __algorithm/in_in_out_result.h
32  __algorithm/in_in_result.h
33  __algorithm/in_out_out_result.h
34  __algorithm/in_out_result.h
35  __algorithm/includes.h
36  __algorithm/inplace_merge.h
37  __algorithm/is_heap.h
38  __algorithm/is_heap_until.h
39  __algorithm/is_partitioned.h
40  __algorithm/is_permutation.h
41  __algorithm/is_sorted.h
42  __algorithm/is_sorted_until.h
43  __algorithm/iter_swap.h
44  __algorithm/lexicographical_compare.h
45  __algorithm/lower_bound.h
46  __algorithm/make_heap.h
47  __algorithm/max.h
48  __algorithm/max_element.h
49  __algorithm/merge.h
50  __algorithm/min.h
51  __algorithm/min_element.h
52  __algorithm/min_max_result.h
53  __algorithm/minmax.h
54  __algorithm/minmax_element.h
55  __algorithm/mismatch.h
56  __algorithm/move.h
57  __algorithm/move_backward.h
58  __algorithm/next_permutation.h
59  __algorithm/none_of.h
60  __algorithm/nth_element.h
61  __algorithm/partial_sort.h
62  __algorithm/partial_sort_copy.h
63  __algorithm/partition.h
64  __algorithm/partition_copy.h
65  __algorithm/partition_point.h
66  __algorithm/pop_heap.h
67  __algorithm/prev_permutation.h
68  __algorithm/push_heap.h
69  __algorithm/ranges_copy.h
70  __algorithm/ranges_copy_backward.h
71  __algorithm/ranges_copy_if.h
72  __algorithm/ranges_copy_n.h
73  __algorithm/ranges_count.h
74  __algorithm/ranges_count_if.h
75  __algorithm/ranges_find.h
76  __algorithm/ranges_find_if.h
77  __algorithm/ranges_find_if_not.h
78  __algorithm/ranges_for_each.h
79  __algorithm/ranges_for_each_n.h
80  __algorithm/ranges_is_partitioned.h
81  __algorithm/ranges_max.h
82  __algorithm/ranges_max_element.h
83  __algorithm/ranges_min.h
84  __algorithm/ranges_min_element.h
85  __algorithm/ranges_minmax.h
86  __algorithm/ranges_minmax_element.h
87  __algorithm/ranges_mismatch.h
88  __algorithm/ranges_swap_ranges.h
89  __algorithm/ranges_transform.h
90  __algorithm/remove.h
91  __algorithm/remove_copy.h
92  __algorithm/remove_copy_if.h
93  __algorithm/remove_if.h
94  __algorithm/replace.h
95  __algorithm/replace_copy.h
96  __algorithm/replace_copy_if.h
97  __algorithm/replace_if.h
98  __algorithm/reverse.h
99  __algorithm/reverse_copy.h
100  __algorithm/rotate.h
101  __algorithm/rotate_copy.h
102  __algorithm/sample.h
103  __algorithm/search.h
104  __algorithm/search_n.h
105  __algorithm/set_difference.h
106  __algorithm/set_intersection.h
107  __algorithm/set_symmetric_difference.h
108  __algorithm/set_union.h
109  __algorithm/shift_left.h
110  __algorithm/shift_right.h
111  __algorithm/shuffle.h
112  __algorithm/sift_down.h
113  __algorithm/sort.h
114  __algorithm/sort_heap.h
115  __algorithm/stable_partition.h
116  __algorithm/stable_sort.h
117  __algorithm/swap_ranges.h
118  __algorithm/transform.h
119  __algorithm/unique.h
120  __algorithm/unique_copy.h
121  __algorithm/unwrap_iter.h
122  __algorithm/upper_bound.h
123  __assert
124  __availability
125  __bit/bit_cast.h
126  __bit/byteswap.h
127  __bit_reference
128  __bits
129  __bsd_locale_defaults.h
130  __bsd_locale_fallbacks.h
131  __charconv/chars_format.h
132  __charconv/from_chars_result.h
133  __charconv/to_chars_result.h
134  __chrono/calendar.h
135  __chrono/convert_to_timespec.h
136  __chrono/day.h
137  __chrono/duration.h
138  __chrono/file_clock.h
139  __chrono/hh_mm_ss.h
140  __chrono/high_resolution_clock.h
141  __chrono/literals.h
142  __chrono/month.h
143  __chrono/month_weekday.h
144  __chrono/monthday.h
145  __chrono/steady_clock.h
146  __chrono/system_clock.h
147  __chrono/time_point.h
148  __chrono/weekday.h
149  __chrono/year.h
150  __chrono/year_month.h
151  __chrono/year_month_day.h
152  __chrono/year_month_weekday.h
153  __compare/common_comparison_category.h
154  __compare/compare_partial_order_fallback.h
155  __compare/compare_strong_order_fallback.h
156  __compare/compare_three_way.h
157  __compare/compare_three_way_result.h
158  __compare/compare_weak_order_fallback.h
159  __compare/is_eq.h
160  __compare/ordering.h
161  __compare/partial_order.h
162  __compare/strong_order.h
163  __compare/synth_three_way.h
164  __compare/three_way_comparable.h
165  __compare/weak_order.h
166  __concepts/arithmetic.h
167  __concepts/assignable.h
168  __concepts/boolean_testable.h
169  __concepts/class_or_enum.h
170  __concepts/common_reference_with.h
171  __concepts/common_with.h
172  __concepts/constructible.h
173  __concepts/convertible_to.h
174  __concepts/copyable.h
175  __concepts/derived_from.h
176  __concepts/destructible.h
177  __concepts/different_from.h
178  __concepts/equality_comparable.h
179  __concepts/invocable.h
180  __concepts/movable.h
181  __concepts/predicate.h
182  __concepts/regular.h
183  __concepts/relation.h
184  __concepts/same_as.h
185  __concepts/semiregular.h
186  __concepts/swappable.h
187  __concepts/totally_ordered.h
188  __config
189  __coroutine/coroutine_handle.h
190  __coroutine/coroutine_traits.h
191  __coroutine/noop_coroutine_handle.h
192  __coroutine/trivial_awaitables.h
193  __debug
194  __errc
195  __filesystem/copy_options.h
196  __filesystem/directory_entry.h
197  __filesystem/directory_iterator.h
198  __filesystem/directory_options.h
199  __filesystem/file_status.h
200  __filesystem/file_time_type.h
201  __filesystem/file_type.h
202  __filesystem/filesystem_error.h
203  __filesystem/operations.h
204  __filesystem/path.h
205  __filesystem/path_iterator.h
206  __filesystem/perm_options.h
207  __filesystem/perms.h
208  __filesystem/recursive_directory_iterator.h
209  __filesystem/space_info.h
210  __filesystem/u8path.h
211  __format/buffer.h
212  __format/enable_insertable.h
213  __format/format_arg.h
214  __format/format_args.h
215  __format/format_context.h
216  __format/format_error.h
217  __format/format_fwd.h
218  __format/format_parse_context.h
219  __format/format_string.h
220  __format/format_to_n_result.h
221  __format/formatter.h
222  __format/formatter_bool.h
223  __format/formatter_char.h
224  __format/formatter_floating_point.h
225  __format/formatter_integer.h
226  __format/formatter_integral.h
227  __format/formatter_pointer.h
228  __format/formatter_string.h
229  __format/parser_std_format_spec.h
230  __functional/binary_function.h
231  __functional/binary_negate.h
232  __functional/bind.h
233  __functional/bind_back.h
234  __functional/bind_front.h
235  __functional/binder1st.h
236  __functional/binder2nd.h
237  __functional/compose.h
238  __functional/default_searcher.h
239  __functional/function.h
240  __functional/hash.h
241  __functional/identity.h
242  __functional/invoke.h
243  __functional/is_transparent.h
244  __functional/mem_fn.h
245  __functional/mem_fun_ref.h
246  __functional/not_fn.h
247  __functional/operations.h
248  __functional/perfect_forward.h
249  __functional/pointer_to_binary_function.h
250  __functional/pointer_to_unary_function.h
251  __functional/ranges_operations.h
252  __functional/reference_wrapper.h
253  __functional/unary_function.h
254  __functional/unary_negate.h
255  __functional/unwrap_ref.h
256  __functional/weak_result_type.h
257  __fwd/span.h
258  __fwd/string_view.h
259  __hash_table
260  __ios/fpos.h
261  __iterator/access.h
262  __iterator/advance.h
263  __iterator/back_insert_iterator.h
264  __iterator/common_iterator.h
265  __iterator/concepts.h
266  __iterator/counted_iterator.h
267  __iterator/data.h
268  __iterator/default_sentinel.h
269  __iterator/distance.h
270  __iterator/empty.h
271  __iterator/erase_if_container.h
272  __iterator/front_insert_iterator.h
273  __iterator/incrementable_traits.h
274  __iterator/indirectly_comparable.h
275  __iterator/insert_iterator.h
276  __iterator/istream_iterator.h
277  __iterator/istreambuf_iterator.h
278  __iterator/iter_move.h
279  __iterator/iter_swap.h
280  __iterator/iterator.h
281  __iterator/iterator_traits.h
282  __iterator/mergeable.h
283  __iterator/move_iterator.h
284  __iterator/move_sentinel.h
285  __iterator/next.h
286  __iterator/ostream_iterator.h
287  __iterator/ostreambuf_iterator.h
288  __iterator/permutable.h
289  __iterator/prev.h
290  __iterator/projected.h
291  __iterator/readable_traits.h
292  __iterator/reverse_access.h
293  __iterator/reverse_iterator.h
294  __iterator/size.h
295  __iterator/sortable.h
296  __iterator/unreachable_sentinel.h
297  __iterator/wrap_iter.h
298  __locale
299  __mbstate_t.h
300  __memory/addressof.h
301  __memory/allocate_at_least.h
302  __memory/allocation_guard.h
303  __memory/allocator.h
304  __memory/allocator_arg_t.h
305  __memory/allocator_traits.h
306  __memory/assume_aligned.h
307  __memory/auto_ptr.h
308  __memory/compressed_pair.h
309  __memory/concepts.h
310  __memory/construct_at.h
311  __memory/pointer_traits.h
312  __memory/ranges_construct_at.h
313  __memory/ranges_uninitialized_algorithms.h
314  __memory/raw_storage_iterator.h
315  __memory/shared_ptr.h
316  __memory/temporary_buffer.h
317  __memory/uninitialized_algorithms.h
318  __memory/unique_ptr.h
319  __memory/uses_allocator.h
320  __memory/voidify.h
321  __mutex_base
322  __node_handle
323  __numeric/accumulate.h
324  __numeric/adjacent_difference.h
325  __numeric/exclusive_scan.h
326  __numeric/gcd_lcm.h
327  __numeric/inclusive_scan.h
328  __numeric/inner_product.h
329  __numeric/iota.h
330  __numeric/midpoint.h
331  __numeric/partial_sum.h
332  __numeric/reduce.h
333  __numeric/transform_exclusive_scan.h
334  __numeric/transform_inclusive_scan.h
335  __numeric/transform_reduce.h
336  __random/bernoulli_distribution.h
337  __random/binomial_distribution.h
338  __random/cauchy_distribution.h
339  __random/chi_squared_distribution.h
340  __random/clamp_to_integral.h
341  __random/default_random_engine.h
342  __random/discard_block_engine.h
343  __random/discrete_distribution.h
344  __random/exponential_distribution.h
345  __random/extreme_value_distribution.h
346  __random/fisher_f_distribution.h
347  __random/gamma_distribution.h
348  __random/generate_canonical.h
349  __random/geometric_distribution.h
350  __random/independent_bits_engine.h
351  __random/is_seed_sequence.h
352  __random/is_valid.h
353  __random/knuth_b.h
354  __random/linear_congruential_engine.h
355  __random/log2.h
356  __random/lognormal_distribution.h
357  __random/mersenne_twister_engine.h
358  __random/negative_binomial_distribution.h
359  __random/normal_distribution.h
360  __random/piecewise_constant_distribution.h
361  __random/piecewise_linear_distribution.h
362  __random/poisson_distribution.h
363  __random/random_device.h
364  __random/ranlux.h
365  __random/seed_seq.h
366  __random/shuffle_order_engine.h
367  __random/student_t_distribution.h
368  __random/subtract_with_carry_engine.h
369  __random/uniform_int_distribution.h
370  __random/uniform_random_bit_generator.h
371  __random/uniform_real_distribution.h
372  __random/weibull_distribution.h
373  __ranges/access.h
374  __ranges/all.h
375  __ranges/common_view.h
376  __ranges/concepts.h
377  __ranges/copyable_box.h
378  __ranges/counted.h
379  __ranges/dangling.h
380  __ranges/data.h
381  __ranges/drop_view.h
382  __ranges/empty.h
383  __ranges/empty_view.h
384  __ranges/enable_borrowed_range.h
385  __ranges/enable_view.h
386  __ranges/filter_view.h
387  __ranges/iota_view.h
388  __ranges/join_view.h
389  __ranges/lazy_split_view.h
390  __ranges/non_propagating_cache.h
391  __ranges/owning_view.h
392  __ranges/range_adaptor.h
393  __ranges/rbegin.h
394  __ranges/ref_view.h
395  __ranges/rend.h
396  __ranges/reverse_view.h
397  __ranges/single_view.h
398  __ranges/size.h
399  __ranges/subrange.h
400  __ranges/take_view.h
401  __ranges/transform_view.h
402  __ranges/view_interface.h
403  __ranges/views.h
404  __ranges/zip_view.h
405  __split_buffer
406  __std_stream
407  __string
408  __support/android/locale_bionic.h
409  __support/fuchsia/xlocale.h
410  __support/ibm/gettod_zos.h
411  __support/ibm/limits.h
412  __support/ibm/locale_mgmt_zos.h
413  __support/ibm/nanosleep.h
414  __support/ibm/support.h
415  __support/ibm/xlocale.h
416  __support/musl/xlocale.h
417  __support/newlib/xlocale.h
418  __support/openbsd/xlocale.h
419  __support/solaris/floatingpoint.h
420  __support/solaris/wchar.h
421  __support/solaris/xlocale.h
422  __support/win32/limits_msvc_win32.h
423  __support/win32/locale_win32.h
424  __support/xlocale/__nop_locale_mgmt.h
425  __support/xlocale/__posix_l_fallback.h
426  __support/xlocale/__strtonum_fallback.h
427  __thread/poll_with_backoff.h
428  __thread/timed_backoff_policy.h
429  __threading_support
430  __tree
431  __tuple
432  __type_traits/integral_constant.h
433  __type_traits/is_callable.h
434  __undef_macros
435  __utility/as_const.h
436  __utility/auto_cast.h
437  __utility/cmp.h
438  __utility/declval.h
439  __utility/exchange.h
440  __utility/forward.h
441  __utility/in_place.h
442  __utility/integer_sequence.h
443  __utility/move.h
444  __utility/pair.h
445  __utility/piecewise_construct.h
446  __utility/priority_tag.h
447  __utility/rel_ops.h
448  __utility/swap.h
449  __utility/to_underlying.h
450  __utility/transaction.h
451  __utility/unreachable.h
452  __variant/monostate.h
453  algorithm
454  any
455  array
456  atomic
457  barrier
458  bit
459  bitset
460  cassert
461  ccomplex
462  cctype
463  cerrno
464  cfenv
465  cfloat
466  charconv
467  chrono
468  cinttypes
469  ciso646
470  climits
471  clocale
472  cmath
473  codecvt
474  compare
475  complex
476  complex.h
477  concepts
478  condition_variable
479  coroutine
480  csetjmp
481  csignal
482  cstdarg
483  cstdbool
484  cstddef
485  cstdint
486  cstdio
487  cstdlib
488  cstring
489  ctgmath
490  ctime
491  ctype.h
492  cuchar
493  cwchar
494  cwctype
495  deque
496  errno.h
497  exception
498  execution
499  experimental/__config
500  experimental/__memory
501  experimental/algorithm
502  experimental/coroutine
503  experimental/deque
504  experimental/forward_list
505  experimental/functional
506  experimental/iterator
507  experimental/list
508  experimental/map
509  experimental/memory_resource
510  experimental/propagate_const
511  experimental/regex
512  experimental/set
513  experimental/simd
514  experimental/string
515  experimental/type_traits
516  experimental/unordered_map
517  experimental/unordered_set
518  experimental/utility
519  experimental/vector
520  ext/__hash
521  ext/hash_map
522  ext/hash_set
523  fenv.h
524  filesystem
525  float.h
526  format
527  forward_list
528  fstream
529  functional
530  future
531  initializer_list
532  inttypes.h
533  iomanip
534  ios
535  iosfwd
536  iostream
537  istream
538  iterator
539  latch
540  limits
541  limits.h
542  list
543  locale
544  locale.h
545  map
546  math.h
547  memory
548  module.modulemap
549  mutex
550  new
551  numbers
552  numeric
553  optional
554  ostream
555  queue
556  random
557  ranges
558  ratio
559  regex
560  scoped_allocator
561  semaphore
562  set
563  setjmp.h
564  shared_mutex
565  span
566  sstream
567  stack
568  stdatomic.h
569  stdbool.h
570  stddef.h
571  stdexcept
572  stdint.h
573  stdio.h
574  stdlib.h
575  streambuf
576  string
577  string.h
578  string_view
579  strstream
580  system_error
581  tgmath.h
582  thread
583  tuple
584  type_traits
585  typeindex
586  typeinfo
587  uchar.h
588  unordered_map
589  unordered_set
590  utility
591  valarray
592  variant
593  vector
594  version
595  wchar.h
596  wctype.h
597  )
598
599configure_file("__config_site.in" "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site" @ONLY)
600
601set(_all_includes "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site")
602foreach(f ${files})
603  set(src "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
604  set(dst "${LIBCXX_GENERATED_INCLUDE_DIR}/${f}")
605  add_custom_command(OUTPUT ${dst}
606    DEPENDS ${src}
607    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
608    COMMENT "Copying CXX header ${f}")
609  list(APPEND _all_includes "${dst}")
610endforeach()
611
612add_custom_target(generate-cxx-headers ALL DEPENDS ${_all_includes})
613
614add_library(cxx-headers INTERFACE)
615add_dependencies(cxx-headers generate-cxx-headers ${LIBCXX_CXX_ABI_HEADER_TARGET})
616target_include_directories(cxx-headers INTERFACE ${LIBCXX_GENERATED_INCLUDE_DIR}
617                                                 ${LIBCXX_GENERATED_INCLUDE_TARGET_DIR})
618
619if (LIBCXX_INSTALL_HEADERS)
620  foreach(file ${files})
621    get_filename_component(dir ${file} DIRECTORY)
622    install(FILES ${file}
623      DESTINATION "${LIBCXX_INSTALL_INCLUDE_DIR}/${dir}"
624      COMPONENT cxx-headers
625      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
626    )
627  endforeach()
628
629  # Install the generated __config_site.
630  install(FILES ${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site
631    DESTINATION "${LIBCXX_INSTALL_INCLUDE_TARGET_DIR}"
632    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
633    COMPONENT cxx-headers)
634
635  if (NOT CMAKE_CONFIGURATION_TYPES)
636    add_custom_target(install-cxx-headers
637                      DEPENDS cxx-headers
638                      COMMAND "${CMAKE_COMMAND}"
639                              -DCMAKE_INSTALL_COMPONENT=cxx-headers
640                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
641    # Stripping is a no-op for headers
642    add_custom_target(install-cxx-headers-stripped DEPENDS install-cxx-headers)
643  endif()
644endif()
645