• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
2  set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE)
3endif()
4
5set(LIBCXX_HEADER_PATTERN
6  PATTERN "*"
7  PATTERN "CMakeLists.txt" EXCLUDE
8  PATTERN ".svn" EXCLUDE
9  PATTERN "__config_site.in" EXCLUDE
10  ${LIBCXX_SUPPORT_HEADER_PATTERN}
11  )
12
13if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR)
14  file(COPY .
15    DESTINATION "${LLVM_BINARY_DIR}/include/c++/v1"
16    FILES_MATCHING
17    ${LIBCXX_HEADER_PATTERN}
18    )
19endif()
20
21if (LIBCXX_INSTALL_HEADERS)
22  install(DIRECTORY .
23    DESTINATION include/c++/v1
24    COMPONENT cxx-headers
25    FILES_MATCHING
26    ${LIBCXX_HEADER_PATTERN}
27    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
28  )
29
30  if (LIBCXX_NEEDS_SITE_CONFIG)
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
34      COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py
35        ${LIBCXX_BINARY_DIR}/__config_site
36        ${LIBCXX_SOURCE_DIR}/include/__config
37        -o ${LIBCXX_BINARY_DIR}/__generated_config
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)
44    set(generated_config_deps generate_config_header)
45    # Install the generated header as __config.
46    install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
47      DESTINATION include/c++/v1
48      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
49      RENAME __config
50      COMPONENT cxx-headers)
51  endif()
52
53  if (NOT CMAKE_CONFIGURATION_TYPES)
54    # this target is just needed as a placeholder for the distribution target
55    add_custom_target(cxx-headers)
56    add_custom_target(install-cxx-headers
57                      DEPENDS cxx-headers ${generated_config_deps}
58                      COMMAND "${CMAKE_COMMAND}"
59                              -DCMAKE_INSTALL_COMPONENT=cxx-headers
60                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
61
62    add_custom_target(libcxx-headers)
63    add_custom_target(install-libcxx-headers DEPENDS install-cxx-headers)
64  endif()
65
66endif()
67