xref: /openbsd/gnu/llvm/libcxx/include/CMakeLists.txt (revision d415bd75)
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_ref_type.h
8  __algorithm/comp.h
9  __algorithm/copy_backward.h
10  __algorithm/copy_if.h
11  __algorithm/copy_n.h
12  __algorithm/copy.h
13  __algorithm/count_if.h
14  __algorithm/count.h
15  __algorithm/equal_range.h
16  __algorithm/equal.h
17  __algorithm/fill_n.h
18  __algorithm/fill.h
19  __algorithm/find_end.h
20  __algorithm/find_first_of.h
21  __algorithm/find_if_not.h
22  __algorithm/find_if.h
23  __algorithm/find.h
24  __algorithm/for_each_n.h
25  __algorithm/for_each.h
26  __algorithm/generate_n.h
27  __algorithm/generate.h
28  __algorithm/half_positive.h
29  __algorithm/includes.h
30  __algorithm/inplace_merge.h
31  __algorithm/is_heap_until.h
32  __algorithm/is_heap.h
33  __algorithm/is_partitioned.h
34  __algorithm/is_permutation.h
35  __algorithm/is_sorted_until.h
36  __algorithm/is_sorted.h
37  __algorithm/iter_swap.h
38  __algorithm/lexicographical_compare.h
39  __algorithm/lower_bound.h
40  __algorithm/make_heap.h
41  __algorithm/max_element.h
42  __algorithm/max.h
43  __algorithm/merge.h
44  __algorithm/min_element.h
45  __algorithm/min.h
46  __algorithm/minmax_element.h
47  __algorithm/minmax.h
48  __algorithm/mismatch.h
49  __algorithm/move_backward.h
50  __algorithm/move.h
51  __algorithm/next_permutation.h
52  __algorithm/none_of.h
53  __algorithm/nth_element.h
54  __algorithm/partial_sort_copy.h
55  __algorithm/partial_sort.h
56  __algorithm/partition_copy.h
57  __algorithm/partition_point.h
58  __algorithm/partition.h
59  __algorithm/pop_heap.h
60  __algorithm/prev_permutation.h
61  __algorithm/push_heap.h
62  __algorithm/remove_copy_if.h
63  __algorithm/remove_copy.h
64  __algorithm/remove_if.h
65  __algorithm/remove.h
66  __algorithm/replace_copy_if.h
67  __algorithm/replace_copy.h
68  __algorithm/replace_if.h
69  __algorithm/replace.h
70  __algorithm/reverse_copy.h
71  __algorithm/reverse.h
72  __algorithm/rotate_copy.h
73  __algorithm/rotate.h
74  __algorithm/sample.h
75  __algorithm/search_n.h
76  __algorithm/search.h
77  __algorithm/set_difference.h
78  __algorithm/set_intersection.h
79  __algorithm/set_symmetric_difference.h
80  __algorithm/set_union.h
81  __algorithm/shift_left.h
82  __algorithm/shift_right.h
83  __algorithm/shuffle.h
84  __algorithm/sift_down.h
85  __algorithm/sort_heap.h
86  __algorithm/sort.h
87  __algorithm/stable_partition.h
88  __algorithm/stable_sort.h
89  __algorithm/swap_ranges.h
90  __algorithm/transform.h
91  __algorithm/unique_copy.h
92  __algorithm/unique.h
93  __algorithm/unwrap_iter.h
94  __algorithm/upper_bound.h
95  __availability
96  __bit_reference
97  __bits
98  __bsd_locale_defaults.h
99  __bsd_locale_fallbacks.h
100  __config
101  __debug
102  __errc
103  __format/format_error.h
104  __format/format_parse_context.h
105  __function_like.h
106  __functional_base
107  __functional/binary_function.h
108  __functional/binary_negate.h
109  __functional/bind_front.h
110  __functional/bind.h
111  __functional/binder1st.h
112  __functional/binder2nd.h
113  __functional/default_searcher.h
114  __functional/function.h
115  __functional/hash.h
116  __functional/identity.h
117  __functional/invoke.h
118  __functional/is_transparent.h
119  __functional/mem_fn.h
120  __functional/mem_fun_ref.h
121  __functional/not_fn.h
122  __functional/operations.h
123  __functional/perfect_forward.h
124  __functional/pointer_to_binary_function.h
125  __functional/pointer_to_unary_function.h
126  __functional/ranges_operations.h
127  __functional/reference_wrapper.h
128  __functional/unary_function.h
129  __functional/unary_negate.h
130  __functional/unwrap_ref.h
131  __functional/weak_result_type.h
132  __hash_table
133  __iterator/access.h
134  __iterator/advance.h
135  __iterator/back_insert_iterator.h
136  __iterator/common_iterator.h
137  __iterator/concepts.h
138  __iterator/counted_iterator.h
139  __iterator/data.h
140  __iterator/default_sentinel.h
141  __iterator/distance.h
142  __iterator/empty.h
143  __iterator/erase_if_container.h
144  __iterator/front_insert_iterator.h
145  __iterator/incrementable_traits.h
146  __iterator/insert_iterator.h
147  __iterator/istream_iterator.h
148  __iterator/istreambuf_iterator.h
149  __iterator/iter_move.h
150  __iterator/iter_swap.h
151  __iterator/iterator_traits.h
152  __iterator/iterator.h
153  __iterator/move_iterator.h
154  __iterator/next.h
155  __iterator/ostream_iterator.h
156  __iterator/ostreambuf_iterator.h
157  __iterator/prev.h
158  __iterator/projected.h
159  __iterator/readable_traits.h
160  __iterator/reverse_access.h
161  __iterator/reverse_iterator.h
162  __iterator/size.h
163  __iterator/wrap_iter.h
164  __libcpp_version
165  __locale
166  __memory/addressof.h
167  __memory/allocation_guard.h
168  __memory/allocator_arg_t.h
169  __memory/allocator_traits.h
170  __memory/allocator.h
171  __memory/auto_ptr.h
172  __memory/compressed_pair.h
173  __memory/construct_at.h
174  __memory/pointer_safety.h
175  __memory/pointer_traits.h
176  __memory/raw_storage_iterator.h
177  __memory/shared_ptr.h
178  __memory/temporary_buffer.h
179  __memory/uninitialized_algorithms.h
180  __memory/unique_ptr.h
181  __memory/uses_allocator.h
182  __mutex_base
183  __node_handle
184  __nullptr
185  __random/uniform_int_distribution.h
186  __ranges/access.h
187  __ranges/all.h
188  __ranges/common_view.h
189  __ranges/concepts.h
190  __ranges/copyable_box.h
191  __ranges/dangling.h
192  __ranges/data.h
193  __ranges/drop_view.h
194  __ranges/empty_view.h
195  __ranges/empty.h
196  __ranges/enable_borrowed_range.h
197  __ranges/enable_view.h
198  __ranges/non_propagating_cache.h
199  __ranges/ref_view.h
200  __ranges/size.h
201  __ranges/subrange.h
202  __ranges/transform_view.h
203  __ranges/view_interface.h
204  __split_buffer
205  __std_stream
206  __string
207  __support/android/locale_bionic.h
208  __support/fuchsia/xlocale.h
209  __support/ibm/gettod_zos.h
210  __support/ibm/limits.h
211  __support/ibm/locale_mgmt_aix.h
212  __support/ibm/locale_mgmt_zos.h
213  __support/ibm/nanosleep.h
214  __support/ibm/support.h
215  __support/ibm/xlocale.h
216  __support/musl/xlocale.h
217  __support/newlib/xlocale.h
218  __support/nuttx/xlocale.h
219  __support/openbsd/xlocale.h
220  __support/solaris/floatingpoint.h
221  __support/solaris/wchar.h
222  __support/solaris/xlocale.h
223  __support/win32/limits_msvc_win32.h
224  __support/win32/locale_win32.h
225  __support/xlocale/__nop_locale_mgmt.h
226  __support/xlocale/__posix_l_fallback.h
227  __support/xlocale/__strtonum_fallback.h
228  __threading_support
229  __tree
230  __tuple
231  __undef_macros
232  __utility/__decay_copy.h
233  __utility/as_const.h
234  __utility/cmp.h
235  __utility/declval.h
236  __utility/exchange.h
237  __utility/forward.h
238  __utility/in_place.h
239  __utility/integer_sequence.h
240  __utility/move.h
241  __utility/pair.h
242  __utility/piecewise_construct.h
243  __utility/rel_ops.h
244  __utility/swap.h
245  __utility/to_underlying.h
246  __variant/monostate.h
247  algorithm
248  any
249  array
250  atomic
251  barrier
252  bit
253  bitset
254  cassert
255  ccomplex
256  cctype
257  cerrno
258  cfenv
259  cfloat
260  charconv
261  chrono
262  cinttypes
263  ciso646
264  climits
265  clocale
266  cmath
267  codecvt
268  compare
269  complex
270  complex.h
271  concepts
272  condition_variable
273  csetjmp
274  csignal
275  cstdarg
276  cstdbool
277  cstddef
278  cstdint
279  cstdio
280  cstdlib
281  cstring
282  ctgmath
283  ctime
284  ctype.h
285  cwchar
286  cwctype
287  deque
288  errno.h
289  exception
290  execution
291  experimental/__config
292  experimental/__memory
293  experimental/algorithm
294  experimental/coroutine
295  experimental/deque
296  experimental/filesystem
297  experimental/forward_list
298  experimental/functional
299  experimental/iterator
300  experimental/list
301  experimental/map
302  experimental/memory_resource
303  experimental/propagate_const
304  experimental/regex
305  experimental/set
306  experimental/simd
307  experimental/string
308  experimental/type_traits
309  experimental/unordered_map
310  experimental/unordered_set
311  experimental/utility
312  experimental/vector
313  ext/__hash
314  ext/hash_map
315  ext/hash_set
316  fenv.h
317  filesystem
318  float.h
319  format
320  forward_list
321  fstream
322  functional
323  future
324  initializer_list
325  inttypes.h
326  iomanip
327  ios
328  iosfwd
329  iostream
330  istream
331  iterator
332  latch
333  limits
334  limits.h
335  list
336  locale
337  locale.h
338  map
339  math.h
340  memory
341  module.modulemap
342  mutex
343  new
344  numbers
345  numeric
346  optional
347  ostream
348  queue
349  random
350  ranges
351  ranges
352  ratio
353  regex
354  scoped_allocator
355  semaphore
356  set
357  setjmp.h
358  shared_mutex
359  span
360  sstream
361  stack
362  stdbool.h
363  stddef.h
364  stdexcept
365  stdint.h
366  stdio.h
367  stdlib.h
368  streambuf
369  string
370  string_view
371  string.h
372  strstream
373  system_error
374  tgmath.h
375  thread
376  tuple
377  type_traits
378  typeindex
379  typeinfo
380  unordered_map
381  unordered_set
382  utility
383  valarray
384  variant
385  vector
386  version
387  wchar.h
388  wctype.h
389  )
390
391configure_file("__config_site.in" "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site" @ONLY)
392
393set(_all_includes "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site")
394foreach(f ${files})
395  set(src "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
396  set(dst "${LIBCXX_GENERATED_INCLUDE_DIR}/${f}")
397  add_custom_command(OUTPUT ${dst}
398    DEPENDS ${src}
399    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
400    COMMENT "Copying CXX header ${f}")
401  list(APPEND _all_includes "${dst}")
402endforeach()
403
404add_custom_target(generate-cxx-headers ALL DEPENDS ${_all_includes})
405
406add_library(cxx-headers INTERFACE)
407add_dependencies(cxx-headers generate-cxx-headers ${LIBCXX_CXX_ABI_HEADER_TARGET})
408# TODO: Use target_include_directories once we figure out why that breaks the runtimes build
409if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
410  target_compile_options(cxx-headers INTERFACE /I${LIBCXX_GENERATED_INCLUDE_DIR}
411                                     INTERFACE /I${LIBCXX_GENERATED_INCLUDE_TARGET_DIR})
412else()
413  target_compile_options(cxx-headers INTERFACE -I${LIBCXX_GENERATED_INCLUDE_DIR}
414                                     INTERFACE -I${LIBCXX_GENERATED_INCLUDE_TARGET_DIR})
415endif()
416
417if (LIBCXX_INSTALL_HEADERS)
418  foreach(file ${files})
419    get_filename_component(dir ${file} DIRECTORY)
420    install(FILES ${file}
421      DESTINATION ${LIBCXX_INSTALL_INCLUDE_DIR}/${dir}
422      COMPONENT cxx-headers
423      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
424    )
425  endforeach()
426
427  # Install the generated __config_site.
428  install(FILES ${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}/__config_site
429    DESTINATION ${LIBCXX_INSTALL_INCLUDE_TARGET_DIR}
430    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
431    COMPONENT cxx-headers)
432
433  if (NOT CMAKE_CONFIGURATION_TYPES)
434    add_custom_target(install-cxx-headers
435                      DEPENDS cxx-headers
436                      COMMAND "${CMAKE_COMMAND}"
437                              -DCMAKE_INSTALL_COMPONENT=cxx-headers
438                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
439    # Stripping is a no-op for headers
440    add_custom_target(install-cxx-headers-stripped DEPENDS install-cxx-headers)
441  endif()
442endif()
443