Skip to content

Commit 576b538

Browse files
committed
Revert "[libc++] Stop copying headers to the build directory (#115380)"
This reverts commit 428c876. Breaks sanitizer build: https://lab.llvm.org/buildbot/#/builders/51/builds/9056
1 parent 71f238a commit 576b538

File tree

5 files changed

+37
-28
lines changed

5 files changed

+37
-28
lines changed

libcxx/CMakeLists.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,16 +414,15 @@ set(LIBCXX_INSTALL_MODULES_DIR "share/libc++/v1" CACHE STRING
414414
set(LIBCXX_SHARED_OUTPUT_NAME "c++" CACHE STRING "Output name for the shared libc++ runtime library.")
415415
set(LIBCXX_STATIC_OUTPUT_NAME "c++" CACHE STRING "Output name for the static libc++ runtime library.")
416416

417-
set(LIBCXX_GENERATED_INCLUDE_DIR "${LIBCXX_BINARY_DIR}/include/c++/v1")
418-
set(LIBCXX_GENERATED_MODULE_DIR "${LIBCXX_BINARY_DIR}/modules/c++/v1")
419-
420417
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
421418
set(LIBCXX_TARGET_SUBDIR ${LLVM_DEFAULT_TARGET_TRIPLE})
422419
if(LIBCXX_LIBDIR_SUBDIR)
423420
string(APPEND LIBCXX_TARGET_SUBDIR /${LIBCXX_LIBDIR_SUBDIR})
424421
endif()
425422
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBCXX_TARGET_SUBDIR})
426-
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_BINARY_DIR}/include/${LIBCXX_TARGET_SUBDIR}/c++/v1")
423+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
424+
set(LIBCXX_GENERATED_MODULE_DIR "${LLVM_BINARY_DIR}/modules/c++/v1")
425+
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LIBCXX_TARGET_SUBDIR}/c++/v1")
427426
set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LIBCXX_TARGET_SUBDIR} CACHE STRING
428427
"Path where built libc++ libraries should be installed.")
429428
set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${LIBCXX_TARGET_SUBDIR}/c++/v1" CACHE STRING
@@ -432,8 +431,12 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
432431
else()
433432
if(LLVM_LIBRARY_OUTPUT_INTDIR)
434433
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
434+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
435+
set(LIBCXX_GENERATED_MODULE_DIR "${LLVM_BINARY_DIR}/modules/c++/v1")
435436
else()
436437
set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
438+
set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
439+
set(LIBCXX_GENERATED_MODULE_DIR "${CMAKE_BINARY_DIR}/modules/c++/v1")
437440
endif()
438441
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}")
439442
set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX} CACHE STRING

libcxxabi/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ set(LIBCXXABI_STATIC_OUTPUT_NAME "c++abi" CACHE STRING "Output name for the stat
9191

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

94+
if(LLVM_LIBRARY_OUTPUT_INTDIR)
95+
set(LIBCXXABI_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
96+
else()
97+
set(LIBCXXABI_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
98+
endif()
99+
94100
set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE PATH "The path to libc++ library.")
95101
set(LIBCXXABI_LIBRARY_VERSION "1.0" CACHE STRING
96102
"Version of libc++abi. This will be reflected in the name of the shared \

libcxxabi/include/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,20 @@ set(files
33
cxxabi.h
44
)
55

6+
foreach(f ${files})
7+
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
8+
set(dst "${LIBCXXABI_GENERATED_INCLUDE_DIR}/${f}")
9+
add_custom_command(OUTPUT ${dst}
10+
DEPENDS ${src}
11+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
12+
COMMENT "Copying CXXABI header ${f}")
13+
list(APPEND _all_includes "${dst}")
14+
endforeach()
15+
16+
add_custom_target(generate-cxxabi-headers ALL DEPENDS ${_all_includes})
17+
618
add_library(cxxabi-headers INTERFACE)
19+
add_dependencies(cxxabi-headers generate-cxxabi-headers)
720
target_include_directories(cxxabi-headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
821

922
if (LIBCXXABI_INSTALL_HEADERS)

lldb/test/CMakeLists.txt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -157,22 +157,15 @@ if(TARGET clang)
157157
# TestFullLtoStepping depends on LTO, and only runs when the compiler is clang.
158158
add_lldb_test_dependency(LTO)
159159

160-
if ("libcxx" IN_LIST LLVM_ENABLE_RUNTIMES)
160+
if (TARGET libcxx OR ("libcxx" IN_LIST LLVM_ENABLE_RUNTIMES))
161161
set(LLDB_HAS_LIBCXX ON)
162-
# libc++ can only be used for tests after installing to a fake prefix
163-
# which is done by the install-cxx-test-suite-prefix target in libc++. We
164-
# ensure this is run by depending on the runtimes-test-depends target.
165-
# While this could build too many dependencies, it is currently the only
166-
# test dependencies target exposed by the runtimes build.
167-
add_lldb_test_dependency(runtimes-test-depends)
168-
set(LIBCXX_TEST_INSTALL_DIR "${CMAKE_BINARY_DIR}/runtimes/runtimes-${LLVM_DEFAULT_TARGET_TRIPLE}-bins/libcxx/test-suite-install")
169162
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
170-
set(LIBCXX_LIBRARY_DIR ${LIBCXX_TEST_INSTALL_DIR}/lib/${LLVM_DEFAULT_TARGET_TRIPLE})
171-
set(LIBCXX_GENERATED_INCLUDE_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/c++/v1")
172-
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
163+
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
164+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
165+
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
173166
else()
174-
set(LIBCXX_LIBRARY_DIR ${LIBCXX_TEST_INSTALL_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
175-
set(LIBCXX_GENERATED_INCLUDE_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/c++/v1")
167+
set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
168+
set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
176169
endif()
177170
endif()
178171

lldb/utils/lldb-dotest/CMakeLists.txt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,13 @@ llvm_canonicalize_cmake_booleans(
1414

1515
if ("libcxx" IN_LIST LLVM_ENABLE_RUNTIMES)
1616
set(LLDB_HAS_LIBCXX ON)
17-
# libc++ can only be used for tests after installing to a fake prefix
18-
# which is done by the install-cxx-test-suite-prefix target in libc++. We
19-
# ensure this is run by depending on the runtimes-test-depends target.
20-
# While this could build too many dependencies, it is currently the only
21-
# test dependencies target exposed by the runtimes build.
22-
set(LIBCXX_TEST_INSTALL_DIR "${CMAKE_BINARY_DIR}/runtimes/runtimes-${LLVM_DEFAULT_TARGET_TRIPLE}-bins/libcxx/test-suite-install")
2317
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
24-
set(LIBCXX_LIBRARY_DIR ${LIBCXX_TEST_INSTALL_DIR}/lib/${LLVM_DEFAULT_TARGET_TRIPLE})
25-
set(LIBCXX_GENERATED_INCLUDE_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/c++/v1")
26-
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
18+
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
19+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
20+
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
2721
else()
28-
set(LIBCXX_LIBRARY_DIR ${LIBCXX_TEST_INSTALL_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
29-
set(LIBCXX_GENERATED_INCLUDE_DIR "${LIBCXX_TEST_INSTALL_DIR}/include/c++/v1")
22+
set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
23+
set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
3024
endif()
3125
endif()
3226

0 commit comments

Comments
 (0)