blob: 5a1b2ccdc4264f3933a173c2050546a990a155d3 [file] [log] [blame]
Justin Bognerec5714f2013-11-15 18:34:43 +00001if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
2 set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE)
3endif()
Eric Fiselier73ffc782015-10-13 22:12:02 +00004
Justin Bognera0ab0962014-10-23 16:51:12 +00005set(LIBCXX_HEADER_PATTERN
Justin Bognerec5714f2013-11-15 18:34:43 +00006 PATTERN "*"
7 PATTERN "CMakeLists.txt" EXCLUDE
8 PATTERN ".svn" EXCLUDE
Eric Fiselier73ffc782015-10-13 22:12:02 +00009 PATTERN "__config_site.in" EXCLUDE
Justin Bognerec5714f2013-11-15 18:34:43 +000010 ${LIBCXX_SUPPORT_HEADER_PATTERN}
Justin Bognera0ab0962014-10-23 16:51:12 +000011 )
12
Chris Bienemana4b35522016-12-17 21:28:24 +000013if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR)
Chris Bieneman801aa912016-12-16 17:30:51 +000014 file(COPY .
15 DESTINATION "${LLVM_BINARY_DIR}/include/c++/v1"
16 FILES_MATCHING
17 ${LIBCXX_HEADER_PATTERN}
18 )
Chris Bienemanf47e6af2016-08-30 16:51:34 +000019endif()
Justin Bognera0ab0962014-10-23 16:51:12 +000020
Eric Fiselier9acbcee2014-12-12 22:52:58 +000021if (LIBCXX_INSTALL_HEADERS)
22 install(DIRECTORY .
Petr Hosek347be612017-07-11 02:39:50 +000023 DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1
Chris Bienemane0620e22016-08-24 22:17:06 +000024 COMPONENT cxx-headers
Eric Fiselier9acbcee2014-12-12 22:52:58 +000025 FILES_MATCHING
26 ${LIBCXX_HEADER_PATTERN}
27 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
Justin Bognerec5714f2013-11-15 18:34:43 +000028 )
Eric Fiselier73ffc782015-10-13 22:12:02 +000029
30 if (LIBCXX_NEEDS_SITE_CONFIG)
Eric Fiselier73ffc782015-10-13 22:12:02 +000031 # 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 Fiselier1591b372017-01-03 03:55:29 +000034 COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py
Eric Fiseliera53a02b2017-01-03 11:18:17 +000035 ${LIBCXX_BINARY_DIR}/__config_site
Eric Fiselier1591b372017-01-03 03:55:29 +000036 ${LIBCXX_SOURCE_DIR}/include/__config
37 -o ${LIBCXX_BINARY_DIR}/__generated_config
Eric Fiselier73ffc782015-10-13 22:12:02 +000038 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 Fiselierd9343ac2016-05-27 23:33:10 +000044 set(generated_config_deps generate_config_header)
Eric Fiselier73ffc782015-10-13 22:12:02 +000045 # Install the generated header as __config.
46 install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
Petr Hosek347be612017-07-11 02:39:50 +000047 DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1
Eric Fiselier73ffc782015-10-13 22:12:02 +000048 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
49 RENAME __config
Chris Bienemane0620e22016-08-24 22:17:06 +000050 COMPONENT cxx-headers)
Chris Bienemanffa3db22016-04-29 22:17:15 +000051 endif()
52
53 if (NOT CMAKE_CONFIGURATION_TYPES)
54 # this target is just needed as a placeholder for the distribution target
Chris Bienemane0620e22016-08-24 22:17:06 +000055 add_custom_target(cxx-headers)
56 add_custom_target(install-cxx-headers
57 DEPENDS cxx-headers ${generated_config_deps}
Chris Bienemanffa3db22016-04-29 22:17:15 +000058 COMMAND "${CMAKE_COMMAND}"
Chris Bienemane0620e22016-08-24 22:17:06 +000059 -DCMAKE_INSTALL_COMPONENT=cxx-headers
Chris Bienemanffa3db22016-04-29 22:17:15 +000060 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
Chris Bienemane0620e22016-08-24 22:17:06 +000061
62 add_custom_target(libcxx-headers)
63 add_custom_target(install-libcxx-headers DEPENDS install-cxx-headers)
Eric Fiselier73ffc782015-10-13 22:12:02 +000064 endif()
65
Eric Fiselier9acbcee2014-12-12 22:52:58 +000066endif()