llvm-project/libcxxabi/include/CMakeLists.txt
Petr Hosek 6f5f847a36 [libcxxabi] Copy headers into build location
Prior to D120727, the libcxx build was responsible for copying libcxxabi
headers into the right location, both in the build and install trees,
but now it's the responsibility of the libcxxabi build. While the build
already did the right thing for the install tree, it wouldn't copy
headers into the build tree, resulting in errors when trying to use the
just built toolchain as is the case in the runtimes build when building
compiler-rt runtimes.

Differential Revision: https://reviews.llvm.org/D125597
2022-05-14 03:49:09 +00:00

40 lines
1.3 KiB
CMake

set(files
__cxxabi_config.h
cxxabi.h
)
foreach(f ${files})
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
set(dst "${LIBCXXABI_GENERATED_INCLUDE_DIR}/${f}")
add_custom_command(OUTPUT ${dst}
DEPENDS ${src}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
COMMENT "Copying CXXABI header ${f}")
list(APPEND _all_includes "${dst}")
endforeach()
add_custom_target(generate-cxxabi-headers ALL DEPENDS ${_all_includes})
add_library(cxxabi-headers INTERFACE)
add_dependencies(cxxabi-headers generate-cxxabi-headers)
target_include_directories(cxxabi-headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
if (LIBCXXABI_INSTALL_HEADERS)
foreach(file ${files})
get_filename_component(dir ${file} DIRECTORY)
install(FILES ${file}
DESTINATION ${LIBCXXABI_INSTALL_INCLUDE_DIR}/${dir}
COMPONENT cxxabi-headers
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endforeach()
add_custom_target(install-cxxabi-headers
DEPENDS cxxabi-headers
COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=cxxabi-headers
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
# Stripping is a no-op for headers
add_custom_target(install-cxxabi-headers-stripped DEPENDS install-cxxabi-headers)
endif()