Skip to content

Commit

Permalink
[libcxxabi] Copy headers into build location
Browse files Browse the repository at this point in the history
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
  • Loading branch information
petrhosek committed May 14, 2022
1 parent acbad50 commit 6f5f847
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
9 changes: 8 additions & 1 deletion libcxxabi/CMakeLists.txt
Expand Up @@ -78,7 +78,14 @@ set(LIBCXXABI_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE STRING
"Define suffix of library directory name (32/64)")
option(LIBCXXABI_INSTALL_HEADERS "Install the libc++abi headers." ON)
option(LIBCXXABI_INSTALL_LIBRARY "Install the libc++abi library." ON)
set(LIBCXXABI_INSTALL_INCLUDE_DIR "include/c++/v1" CACHE PATH "Path to install the libc++abi headers at.")

set(LIBCXXABI_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/c++/v1" CACHE PATH "Path to install the libc++abi headers at.")

if(LLVM_LIBRARY_OUTPUT_INTDIR)
set(LIBCXXABI_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
else()
set(LIBCXXABI_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
endif()

# TODO: Remove this after branching for LLVM 15
if(LIBCXXABI_SYSROOT OR LIBCXXABI_TARGET_TRIPLE OR LIBCXXABI_GCC_TOOLCHAIN)
Expand Down
13 changes: 13 additions & 0 deletions libcxxabi/include/CMakeLists.txt
Expand Up @@ -3,7 +3,20 @@ set(files
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)
Expand Down

0 comments on commit 6f5f847

Please sign in to comment.