1set(files
2  __bit_reference
3  __bsd_locale_defaults.h
4  __bsd_locale_fallbacks.h
5  __errc
6  __debug
7  __functional_03
8  __functional_base
9  __functional_base_03
10  __hash_table
11  __libcpp_version
12  __locale
13  __mutex_base
14  __node_handle
15  __nullptr
16  __split_buffer
17  __sso_allocator
18  __std_stream
19  __string
20  __threading_support
21  __tree
22  __tuple
23  __undef_macros
24  algorithm
25  any
26  array
27  atomic
28  bit
29  bitset
30  cassert
31  ccomplex
32  cctype
33  cerrno
34  cfenv
35  cfloat
36  charconv
37  chrono
38  cinttypes
39  ciso646
40  climits
41  clocale
42  cmath
43  codecvt
44  compare
45  complex
46  complex.h
47  condition_variable
48  csetjmp
49  csignal
50  cstdarg
51  cstdbool
52  cstddef
53  cstdint
54  cstdio
55  cstdlib
56  cstring
57  ctgmath
58  ctime
59  ctype.h
60  cwchar
61  cwctype
62  deque
63  errno.h
64  exception
65  experimental/__config
66  experimental/__memory
67  experimental/algorithm
68  experimental/any
69  experimental/chrono
70  experimental/coroutine
71  experimental/deque
72  experimental/filesystem
73  experimental/forward_list
74  experimental/functional
75  experimental/iterator
76  experimental/list
77  experimental/map
78  experimental/memory_resource
79  experimental/numeric
80  experimental/optional
81  experimental/propagate_const
82  experimental/ratio
83  experimental/regex
84  experimental/set
85  experimental/simd
86  experimental/string
87  experimental/string_view
88  experimental/system_error
89  experimental/tuple
90  experimental/type_traits
91  experimental/unordered_map
92  experimental/unordered_set
93  experimental/utility
94  experimental/vector
95  ext/__hash
96  ext/hash_map
97  ext/hash_set
98  filesystem
99  float.h
100  forward_list
101  fstream
102  functional
103  future
104  initializer_list
105  inttypes.h
106  iomanip
107  ios
108  iosfwd
109  iostream
110  istream
111  iterator
112  limits
113  limits.h
114  list
115  locale
116  locale.h
117  map
118  math.h
119  memory
120  module.modulemap
121  mutex
122  new
123  numeric
124  optional
125  ostream
126  queue
127  random
128  ratio
129  regex
130  scoped_allocator
131  set
132  setjmp.h
133  shared_mutex
134  span
135  sstream
136  stack
137  stdbool.h
138  stddef.h
139  stdexcept
140  stdint.h
141  stdio.h
142  stdlib.h
143  streambuf
144  string
145  string.h
146  string_view
147  strstream
148  system_error
149  tgmath.h
150  thread
151  tuple
152  type_traits
153  typeindex
154  typeinfo
155  unordered_map
156  unordered_set
157  utility
158  valarray
159  variant
160  vector
161  version
162  wchar.h
163  wctype.h
164  )
165
166if(LIBCXX_INSTALL_SUPPORT_HEADERS)
167  set(files
168    ${files}
169    support/android/locale_bionic.h
170    support/fuchsia/xlocale.h
171    support/ibm/limits.h
172    support/ibm/locale_mgmt_aix.h
173    support/ibm/support.h
174    support/ibm/xlocale.h
175    support/musl/xlocale.h
176    support/newlib/xlocale.h
177    support/solaris/floatingpoint.h
178    support/solaris/wchar.h
179    support/solaris/xlocale.h
180    support/win32/limits_msvc_win32.h
181    support/win32/locale_win32.h
182    support/xlocale/__nop_locale_mgmt.h
183    support/xlocale/__posix_l_fallback.h
184    support/xlocale/__strtonum_fallback.h
185    support/xlocale/xlocale.h
186    )
187endif()
188
189if (LIBCXX_NEEDS_SITE_CONFIG)
190  # Generate a custom __config header. The new header is created
191  # by prepending __config_site to the current __config header.
192  add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config
193    COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py
194      ${LIBCXX_BINARY_DIR}/__config_site
195      ${LIBCXX_SOURCE_DIR}/include/__config
196      -o ${LIBCXX_BINARY_DIR}/__generated_config
197    DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config
198            ${LIBCXX_BINARY_DIR}/__config_site
199  )
200  # Add a target that executes the generation commands.
201  add_custom_target(cxx-generated-config ALL
202    DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config)
203  set(generated_config_deps cxx-generated-config)
204else()
205  set(files
206    ${files}
207    __config
208    )
209endif()
210
211if(NOT LIBCXX_USING_INSTALLED_LLVM AND LIBCXX_HEADER_DIR)
212  set(output_dir ${LIBCXX_HEADER_DIR}/include/c++/v1)
213
214  set(out_files)
215  foreach(f ${files})
216    set(src ${CMAKE_CURRENT_SOURCE_DIR}/${f})
217    set(dst ${output_dir}/${f})
218    add_custom_command(OUTPUT ${dst}
219      DEPENDS ${src}
220      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
221      COMMENT "Copying CXX header ${f}")
222    list(APPEND out_files ${dst})
223  endforeach()
224
225  if (LIBCXX_NEEDS_SITE_CONFIG)
226    # Copy the generated header as __config into build directory.
227    set(src ${LIBCXX_BINARY_DIR}/__generated_config)
228    set(dst ${output_dir}/__config)
229    add_custom_command(OUTPUT ${dst}
230        DEPENDS ${src} ${generated_config_deps}
231        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
232        COMMENT "Copying CXX __config")
233    list(APPEND out_files ${dst})
234  endif()
235
236  add_custom_target(cxx-headers ALL DEPENDS ${out_files} ${LIBCXX_CXX_ABI_HEADER_TARGET})
237else()
238  add_custom_target(cxx-headers)
239endif()
240set_target_properties(cxx-headers PROPERTIES FOLDER "Misc")
241
242if (LIBCXX_INSTALL_HEADERS)
243  foreach(file ${files})
244    get_filename_component(dir ${file} DIRECTORY)
245    install(FILES ${file}
246      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir}
247      COMPONENT cxx-headers
248      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
249    )
250  endforeach()
251
252  if (LIBCXX_NEEDS_SITE_CONFIG)
253    # Install the generated header as __config.
254    install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
255      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1
256      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
257      RENAME __config
258      COMPONENT cxx-headers)
259  endif()
260
261  if (NOT CMAKE_CONFIGURATION_TYPES)
262    add_custom_target(install-cxx-headers
263                      DEPENDS cxx-headers ${generated_config_deps}
264                      COMMAND "${CMAKE_COMMAND}"
265                              -DCMAKE_INSTALL_COMPONENT=cxx-headers
266                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
267    # Stripping is a no-op for headers
268    add_custom_target(install-cxx-headers-stripped DEPENDS install-cxx-headers)
269
270    add_custom_target(install-libcxx-headers DEPENDS install-cxx-headers)
271    add_custom_target(install-libcxx-headers-stripped DEPENDS install-cxx-headers-stripped)
272  endif()
273endif()
274