Skip to content

Commit 6e5f80c

Browse files
mizvekovalandefreitas
authored andcommitted
build: require libc++ and clang headers
Make CMakeLists.txt enforce the requirement for libc++ and the clang headers. Otherwise, it's possible for configuration to succeed but produce a non-functional mrdocs, where the tests fail in non-obvious ways.
1 parent 0a751ac commit 6e5f80c

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

CMakeLists.txt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,22 @@ endif()
8989
find_package(LLVM REQUIRED CONFIG)
9090
find_package(Clang REQUIRED CONFIG)
9191

92-
if (LLVM_ROOT)
93-
set(LIBCXX_DIR "${LLVM_ROOT}/include/c++/v1/")
94-
message(STATUS "LIBCXX_DIR: ${LIBCXX_DIR}")
95-
if (NOT EXISTS "${LIBCXX_DIR}")
96-
message(FATAL_ERROR
97-
"LIBCXX_DIR (${LIBCXX_DIR}) does not exist.\n"
98-
"LLVM_ROOT is set, but LIBCXX_DIR (/include/c++/v1) does not exist.\n")
99-
endif()
100-
set(STDLIB_INCLUDE_DIR "${LLVM_ROOT}/lib/clang/${Clang_VERSION_MAJOR}/include/")
101-
message(STATUS "STDLIB_INCLUDE_DIR: ${STDLIB_INCLUDE_DIR}")
102-
if (NOT EXISTS "${STDLIB_INCLUDE_DIR}")
103-
message(FATAL_ERROR
104-
"STDLIB_INCLUDE_DIR (${STDLIB_INCLUDE_DIR}) does not exist.\n"
105-
"LLVM_ROOT is set, but STDLIB_INCLUDE_DIR (/lib/clang/${Clang_VERSION_MAJOR}/include) does not exist.\n")
106-
endif()
92+
set(LIBCXX_DIR "${LLVM_INCLUDE_DIR}/c++/v1" CACHE PATH
93+
"Path to libc++ include directory")
94+
message(STATUS "LIBCXX_DIR: ${LIBCXX_DIR}")
95+
if (NOT EXISTS "${LIBCXX_DIR}")
96+
message(FATAL_ERROR
97+
"LIBCXX_DIR (${LIBCXX_DIR}) does not exist.\n"
98+
"Please provide a LLVM with libc++ enabled\n")
99+
endif()
100+
101+
set(STDLIB_INCLUDE_DIR "${LLVM_BINARY_DIR}/lib/clang/${Clang_VERSION_MAJOR}/include"
102+
CACHE PATH "Path to the clang headers include directory")
103+
message(STATUS "STDLIB_INCLUDE_DIR: ${STDLIB_INCLUDE_DIR}")
104+
if (NOT EXISTS "${STDLIB_INCLUDE_DIR}")
105+
message(FATAL_ERROR
106+
"STDLIB_INCLUDE_DIR (${STDLIB_INCLUDE_DIR}) does not exist.\n"
107+
"Missing clang headers\n")
107108
endif()
108109

109110
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
@@ -528,10 +529,10 @@ if (MRDOCS_INSTALL)
528529
#-------------------------------------------------
529530
# share
530531
#-------------------------------------------------
531-
install(DIRECTORY ${LIBCXX_DIR}
532+
install(DIRECTORY ${LIBCXX_DIR}/
532533
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mrdocs/headers/libcxx
533534
FILES_MATCHING PATTERN "*")
534-
install(DIRECTORY ${STDLIB_INCLUDE_DIR}
535+
install(DIRECTORY ${STDLIB_INCLUDE_DIR}/
535536
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mrdocs/headers/clang
536537
FILES_MATCHING PATTERN "*")
537538
install(DIRECTORY ${CMAKE_SOURCE_DIR}/share/mrdocs/headers/libc-stubs/

0 commit comments

Comments
 (0)