Skip to content

Commit f4a61f8

Browse files
committed
cmake: 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 f4a61f8

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

CMakeLists.txt

Lines changed: 16 additions & 15 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}")

0 commit comments

Comments
 (0)