diff --git a/cmake/modules/FindClang.cmake b/cmake/modules/FindClang.cmake --- a/cmake/modules/FindClang.cmake +++ b/cmake/modules/FindClang.cmake @@ -4,6 +4,7 @@ # CLANG_FOUND - True if Clang was found # CLANG_INCLUDE_DIRS - Where to find Clang includes # CLANG_LIBRARY_DIRS - Where to find Clang libraries +# CLANG_BUILTIN_DIR - Where to find Clang builtin includes # # CLANG_CLANG_LIB - Libclang C library # @@ -92,6 +93,19 @@ set(CLANG_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) set(CLANG_VERSION ${LLVM_VERSION}) + find_path(CLANG_BUILTIN_DIR + # cpuid.h because it is defined in ClangSupport constructor as valid clang builtin dir indicator + NAMES "cpuid.h" + PATHS "${CLANG_LIBRARY_DIRS}" + "${CLANG_INCLUDE_DIRS}" + PATH_SUFFIXES "clang/${CLANG_VERSION}/include" + "../../../clang/${CLANG_VERSION}/include" + ) + + if (NOT CLANG_BUILTIN_DIR) + message(FATAL_ERROR "Could not find Clang builtin directory") + endif() + # check whether llvm-config comes from an install prefix execute_process( COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root @@ -108,9 +122,10 @@ endif() message(STATUS "Found Clang (LLVM version: ${CLANG_VERSION})") - message(STATUS " Include dirs: ${CLANG_INCLUDE_DIRS}") - message(STATUS " Clang libraries: ${CLANG_LIBS}") - message(STATUS " Libclang C library: ${CLANG_CLANG_LIB}") + message(STATUS " Include dirs: ${CLANG_INCLUDE_DIRS}") + message(STATUS " Clang libraries: ${CLANG_LIBS}") + message(STATUS " Libclang C library: ${CLANG_CLANG_LIB}") + message(STATUS " Builtin include dir: ${CLANG_BUILTIN_DIR}") else() if(Clang_FIND_REQUIRED) message(FATAL_ERROR "Could NOT find Clang") diff --git a/plugins/clang/libclang_include_path.h.cmake b/plugins/clang/libclang_include_path.h.cmake --- a/plugins/clang/libclang_include_path.h.cmake +++ b/plugins/clang/libclang_include_path.h.cmake @@ -19,4 +19,4 @@ Boston, MA 02110-1301, USA. */ -#define KDEV_CLANG_BUILTIN_DIR "@CLANG_LIBRARY_DIRS@/clang/@CLANG_VERSION@/include" +#define KDEV_CLANG_BUILTIN_DIR "@CLANG_BUILTIN_DIR@"