Justin Bogner | ec5714f | 2013-11-15 18:34:43 +0000 | [diff] [blame] | 1 | if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS) |
| 2 | set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE) |
| 3 | endif() |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 4 | |
Justin Bogner | a0ab096 | 2014-10-23 16:51:12 +0000 | [diff] [blame] | 5 | set(LIBCXX_HEADER_PATTERN |
Justin Bogner | ec5714f | 2013-11-15 18:34:43 +0000 | [diff] [blame] | 6 | PATTERN "*" |
| 7 | PATTERN "CMakeLists.txt" EXCLUDE |
| 8 | PATTERN ".svn" EXCLUDE |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 9 | PATTERN "__config_site.in" EXCLUDE |
Justin Bogner | ec5714f | 2013-11-15 18:34:43 +0000 | [diff] [blame] | 10 | ${LIBCXX_SUPPORT_HEADER_PATTERN} |
Justin Bogner | a0ab096 | 2014-10-23 16:51:12 +0000 | [diff] [blame] | 11 | ) |
| 12 | |
Chris Bieneman | a4b3552 | 2016-12-17 21:28:24 +0000 | [diff] [blame] | 13 | if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR) |
Chris Bieneman | 801aa91 | 2016-12-16 17:30:51 +0000 | [diff] [blame] | 14 | file(COPY . |
| 15 | DESTINATION "${LLVM_BINARY_DIR}/include/c++/v1" |
| 16 | FILES_MATCHING |
| 17 | ${LIBCXX_HEADER_PATTERN} |
| 18 | ) |
Chris Bieneman | f47e6af | 2016-08-30 16:51:34 +0000 | [diff] [blame] | 19 | endif() |
Justin Bogner | a0ab096 | 2014-10-23 16:51:12 +0000 | [diff] [blame] | 20 | |
Eric Fiselier | 9acbcee | 2014-12-12 22:52:58 +0000 | [diff] [blame] | 21 | if (LIBCXX_INSTALL_HEADERS) |
| 22 | install(DIRECTORY . |
Petr Hosek | 347be61 | 2017-07-11 02:39:50 +0000 | [diff] [blame] | 23 | DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1 |
Chris Bieneman | e0620e2 | 2016-08-24 22:17:06 +0000 | [diff] [blame] | 24 | COMPONENT cxx-headers |
Eric Fiselier | 9acbcee | 2014-12-12 22:52:58 +0000 | [diff] [blame] | 25 | FILES_MATCHING |
| 26 | ${LIBCXX_HEADER_PATTERN} |
| 27 | PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
Justin Bogner | ec5714f | 2013-11-15 18:34:43 +0000 | [diff] [blame] | 28 | ) |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 29 | |
| 30 | if (LIBCXX_NEEDS_SITE_CONFIG) |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 31 | # Generate and install a custom __config header. The new header is created |
| 32 | # by prepending __config_site to the current __config header. |
| 33 | add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config |
Eric Fiselier | 1591b37 | 2017-01-03 03:55:29 +0000 | [diff] [blame] | 34 | COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py |
Eric Fiselier | a53a02b | 2017-01-03 11:18:17 +0000 | [diff] [blame] | 35 | ${LIBCXX_BINARY_DIR}/__config_site |
Eric Fiselier | 1591b37 | 2017-01-03 03:55:29 +0000 | [diff] [blame] | 36 | ${LIBCXX_SOURCE_DIR}/include/__config |
| 37 | -o ${LIBCXX_BINARY_DIR}/__generated_config |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 38 | DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config |
| 39 | ${LIBCXX_BINARY_DIR}/__config_site |
| 40 | ) |
| 41 | # Add a target that executes the generation commands. |
| 42 | add_custom_target(generate_config_header ALL |
| 43 | DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config) |
Eric Fiselier | d9343ac | 2016-05-27 23:33:10 +0000 | [diff] [blame] | 44 | set(generated_config_deps generate_config_header) |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 45 | # Install the generated header as __config. |
| 46 | install(FILES ${LIBCXX_BINARY_DIR}/__generated_config |
Petr Hosek | 347be61 | 2017-07-11 02:39:50 +0000 | [diff] [blame] | 47 | DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1 |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 48 | PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
| 49 | RENAME __config |
Chris Bieneman | e0620e2 | 2016-08-24 22:17:06 +0000 | [diff] [blame] | 50 | COMPONENT cxx-headers) |
Chris Bieneman | ffa3db2 | 2016-04-29 22:17:15 +0000 | [diff] [blame] | 51 | endif() |
| 52 | |
| 53 | if (NOT CMAKE_CONFIGURATION_TYPES) |
| 54 | # this target is just needed as a placeholder for the distribution target |
Chris Bieneman | e0620e2 | 2016-08-24 22:17:06 +0000 | [diff] [blame] | 55 | add_custom_target(cxx-headers) |
| 56 | add_custom_target(install-cxx-headers |
| 57 | DEPENDS cxx-headers ${generated_config_deps} |
Chris Bieneman | ffa3db2 | 2016-04-29 22:17:15 +0000 | [diff] [blame] | 58 | COMMAND "${CMAKE_COMMAND}" |
Chris Bieneman | e0620e2 | 2016-08-24 22:17:06 +0000 | [diff] [blame] | 59 | -DCMAKE_INSTALL_COMPONENT=cxx-headers |
Chris Bieneman | ffa3db2 | 2016-04-29 22:17:15 +0000 | [diff] [blame] | 60 | -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") |
Chris Bieneman | e0620e2 | 2016-08-24 22:17:06 +0000 | [diff] [blame] | 61 | |
| 62 | add_custom_target(libcxx-headers) |
| 63 | add_custom_target(install-libcxx-headers DEPENDS install-cxx-headers) |
Eric Fiselier | 73ffc78 | 2015-10-13 22:12:02 +0000 | [diff] [blame] | 64 | endif() |
| 65 | |
Eric Fiselier | 9acbcee | 2014-12-12 22:52:58 +0000 | [diff] [blame] | 66 | endif() |