Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 849998 Details for
Bug 893404
dev-util/kdevelop: building against sys-devel/clang-16.0.0_pre20230107 results in "Could not find Clang builtin directory"
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
kdevelop-22.12.2-clang-16.patch
kdevelop-22.12.2-clang-16.patch (text/plain), 20.19 KB, created by
Peter Levine
on 2023-02-06 15:39:11 UTC
(
hide
)
Description:
kdevelop-22.12.2-clang-16.patch
Filename:
MIME Type:
Creator:
Peter Levine
Created:
2023-02-06 15:39:11 UTC
Size:
20.19 KB
patch
obsolete
>Fixes building with clang-16+ > >cherry-picked commits > 1a92bed: Drop custom Find* modules and use upstream ClangConfig.cmake > 9913f73: Don't look for Clang's builtin dir in "unclean" version subdir > 1c7bdc2: Look for Clang 16+ builtin dir in major-version subdirs > >diff -Naur a/cmake/modules/FindClang.cmake b/cmake/modules/FindClang.cmake >--- a/cmake/modules/FindClang.cmake 2023-01-29 18:58:29.000000000 -0500 >+++ b/cmake/modules/FindClang.cmake 1969-12-31 19:00:00.000000000 -0500 >@@ -1,152 +0,0 @@ >-# Detect Clang libraries >-# >-# Defines the following variables: >-# 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 >-# >-# CLANG_CLANGFRONTEND_LIB - Clang Frontend (C++) Library >-# CLANG_CLANGDRIVER_LIB - Clang Driver (C++) Library >-# ... >-# >-# CLANG_LIBS - All the Clang C++ libraries >-# >-# Uses the same include and library paths detected by FindLLVM.cmake >-# >-# See https://clang.llvm.org/docs/InternalsManual.html for full list of libraries >- >-#============================================================================= >-# SPDX-FileCopyrightText: 2014-2015 Kevin Funk <kfunk@kde.org> >-# >-# SPDX-License-Identifier: BSD-3-Clause >-#============================================================================= >- >-set(KNOWN_VERSIONS 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8) >- >-foreach(version ${KNOWN_VERSIONS}) >- if(LLVM_FOUND OR (DEFINED Clang_FIND_VERSION AND Clang_FIND_VERSION VERSION_GREATER version)) >- # already found or version doesn't match >- break() >- endif() >- >- find_package(LLVM ${version} QUIET) >-endforeach() >- >-if (${Clang_FIND_REQUIRED}) >- if(NOT DEFINED Clang_FIND_VERSION) >- message(SEND_ERROR "Could not find Clang.") >- else() >- message("Found version ${Clang_FIND_VERSION}") >- endif() >-endif() >- >-set(CLANG_FOUND FALSE) >- >-if (LLVM_FOUND AND LLVM_LIBRARY_DIRS) >- macro(FIND_AND_ADD_CLANG_LIB _libname_) >- string(TOUPPER ${_libname_} _prettylibname_) >- find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} HINTS ${LLVM_LIBRARY_DIRS} ${ARGN}) >- if (CLANG_${_prettylibname_}_LIB) >- set(CLANG_LIBS ${CLANG_LIBS} ${CLANG_${_prettylibname_}_LIB}) >- endif() >- endmacro(FIND_AND_ADD_CLANG_LIB) >- >- FIND_AND_ADD_CLANG_LIB(clangFrontend) >- >- # note: On Windows there's 'libclang.dll' instead of 'clang.dll' -> search for 'libclang', too >- FIND_AND_ADD_CLANG_LIB(clang NAMES clang libclang) # LibClang: high-level C interface >- >- FIND_AND_ADD_CLANG_LIB(clangDriver) >- FIND_AND_ADD_CLANG_LIB(clangCodeGen) >- FIND_AND_ADD_CLANG_LIB(clangSema) >- FIND_AND_ADD_CLANG_LIB(clangChecker) >- FIND_AND_ADD_CLANG_LIB(clangAnalysis) >- FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend) >- FIND_AND_ADD_CLANG_LIB(clangRewrite) >- FIND_AND_ADD_CLANG_LIB(clangAST) >- FIND_AND_ADD_CLANG_LIB(clangParse) >- FIND_AND_ADD_CLANG_LIB(clangLex) >- FIND_AND_ADD_CLANG_LIB(clangBasic) >- FIND_AND_ADD_CLANG_LIB(clangARCMigrate) >- FIND_AND_ADD_CLANG_LIB(clangEdit) >- FIND_AND_ADD_CLANG_LIB(clangFrontendTool) >- FIND_AND_ADD_CLANG_LIB(clangSerialization) >- FIND_AND_ADD_CLANG_LIB(clangTooling) >- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers) >- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore) >- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend) >- FIND_AND_ADD_CLANG_LIB(clangRewriteCore) >-endif() >- >-if(CLANG_LIBS OR CLANG_CLANG_LIB) >- set(CLANG_FOUND TRUE) >-else() >- message(STATUS "Could not find any Clang libraries in ${LLVM_LIBRARY_DIRS}") >-endif() >- >-if(CLANG_FOUND) >- set(CLANG_LIBRARY_DIRS ${LLVM_LIBRARY_DIRS}) >- set(CLANG_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) >- set(CLANG_VERSION ${LLVM_VERSION}) >- >- # svn version of clang has a svn suffix "8.0.0svn" but installs the header in "8.0.0", without the suffix >- string(REPLACE "svn" "" CLANG_VERSION_CLEAN "${CLANG_VERSION}") >- # dito for git >- string(REPLACE "git" "" CLANG_VERSION_CLEAN "${CLANG_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" >- "clang/${CLANG_VERSION_CLEAN}/include" >- "../../../clang/${CLANG_VERSION_CLEAN}/include" >- NO_DEFAULT_PATH >- ) >- >- if (NOT CLANG_BUILTIN_DIR) >- message(FATAL_ERROR "Could not find Clang builtin directory") >- endif() >- get_filename_component(CLANG_BUILTIN_DIR ${CLANG_BUILTIN_DIR} ABSOLUTE) >- >- # check whether llvm-config comes from an install prefix >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root >- OUTPUT_VARIABLE _llvmSourceRoot >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- string(FIND "${LLVM_INCLUDE_DIRS}" "${_llvmSourceRoot}" _llvmIsInstalled) >- if (NOT _llvmIsInstalled) >- message(STATUS "Detected that llvm-config comes from a build-tree, adding more include directories for Clang") >- list(APPEND CLANG_INCLUDE_DIRS >- "${LLVM_INSTALL_PREFIX}/tools/clang/include" # build dir >- ) >- >- # check whether the source is from llvm-project.git (currently recommended way to clone the LLVM projects) >- # contains all LLVM projects in the top-level directory >- get_filename_component(_llvmProjectClangIncludeDir ${_llvmSourceRoot}/../clang/include REALPATH) >- if (EXISTS ${_llvmProjectClangIncludeDir}) >- message(STATUS " Note: llvm-project.git structure detected, using different include path pointing into source dir") >- list(APPEND CLANG_INCLUDE_DIRS "${_llvmProjectClangIncludeDir}") # source dir >- else() >- list(APPEND CLANG_INCLUDE_DIRS "${_llvmSourceRoot}/tools/clang/include") # source dir >- endif() >- endif() >- >- if(NOT Clang_FIND_QUIETLY) >- 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 " Builtin include dir: ${CLANG_BUILTIN_DIR}") >- endif() >-else() >- if(Clang_FIND_REQUIRED) >- message(FATAL_ERROR "Could NOT find Clang") >- endif() >-endif() >diff -Naur a/cmake/modules/FindLLVM.cmake b/cmake/modules/FindLLVM.cmake >--- a/cmake/modules/FindLLVM.cmake 2023-01-29 18:58:29.000000000 -0500 >+++ b/cmake/modules/FindLLVM.cmake 1969-12-31 19:00:00.000000000 -0500 >@@ -1,152 +0,0 @@ >-# Find the native LLVM includes and libraries >-# >-# Defines the following variables >-# LLVM_INCLUDE_DIRS - where to find llvm include files >-# LLVM_LIBRARY_DIRS - where to find llvm libs >-# LLVM_CFLAGS - llvm compiler flags >-# LLVM_LFLAGS - llvm linker flags >-# LLVM_MODULE_LIBS - list of llvm libs for working with modules. >-# LLVM_INSTALL_PREFIX - LLVM installation prefix >-# LLVM_FOUND - True if llvm found. >-# LLVM_VERSION - Version string ("llvm-config --version") >-# >-# This module reads hints about search locations from variables >-# LLVM_ROOT - Preferred LLVM installation prefix (containing bin/, lib/, ...) >-# >-# Note: One may specify these as environment variables if they are not specified as >-# CMake variables or cache entries. >- >-#============================================================================= >-# SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org> >-# >-# SPDX-License-Identifier: BSD-3-Clause >-#============================================================================= >- >-if (NOT LLVM_ROOT AND DEFINED ENV{LLVM_ROOT}) >- file(TO_CMAKE_PATH "$ENV{LLVM_ROOT}" LLVM_ROOT) >-endif() >- >-# if the user specified LLVM_ROOT, use that and fail otherwise >-if (LLVM_ROOT) >- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config HINTS ${LLVM_ROOT}/bin DOC "llvm-config executable" NO_DEFAULT_PATH) >-elseif (NOT LLVM_CONFIG_EXECUTABLE) >- # find llvm-config, prefer the one with a version suffix, e.g. llvm-config-3.5 >- # note: FreeBSD installs llvm-config as llvm-config35 and so on >- # note: on some distributions, only 'llvm-config' is shipped, so let's always try to fallback on that >- string(REPLACE "." "" LLVM_FIND_VERSION_CONCAT ${LLVM_FIND_VERSION}) >- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config-${LLVM_FIND_VERSION} llvm-config${LLVM_FIND_VERSION_CONCAT} llvm-config DOC "llvm-config executable") >- >- # other distributions don't ship llvm-config, but only some llvm-config-VERSION binary >- # try to deduce installed LLVM version by looking up llvm-nm in PATH and *then* find llvm-config-VERSION via that >- if (NOT LLVM_CONFIG_EXECUTABLE) >- find_program(_llvmNmExecutable llvm-nm) >- if (_llvmNmExecutable) >- execute_process(COMMAND ${_llvmNmExecutable} --version OUTPUT_VARIABLE _out) >- string(REGEX REPLACE ".*LLVM version ([^ \n]+).*" "\\1" _versionString "${_out}") >- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config-${_versionString} DOC "llvm-config executable") >- endif() >- endif() >-endif() >- >-set(LLVM_FOUND FALSE) >- >-if (LLVM_CONFIG_EXECUTABLE) >- # verify that we've found the correct version of llvm-config >- execute_process(COMMAND ${LLVM_CONFIG_EXECUTABLE} --version >- OUTPUT_VARIABLE LLVM_VERSION >- OUTPUT_STRIP_TRAILING_WHITESPACE) >- >- if (NOT LLVM_VERSION) >- set(_LLVM_ERROR_MESSAGE "Failed to parse version from ${LLVM_CONFIG_EXECUTABLE}") >- unset(LLVM_CONFIG_EXECUTABLE CACHE) >- elseif (LLVM_FIND_VERSION VERSION_GREATER LLVM_VERSION) >- set(_LLVM_ERROR_MESSAGE "${LLVM_CONFIG_EXECUTABLE} (version ${LLVM_VERSION}) unsuitable: too old for requested version ${LLVM_FIND_VERSION}") >- unset(LLVM_CONFIG_EXECUTABLE CACHE) >- else() >- set(LLVM_FOUND TRUE) >- endif() >-else() >- set(_LLVM_ERROR_MESSAGE "Could NOT find 'llvm-config' executable") >-endif() >- >-if (LLVM_FOUND) >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --includedir >- OUTPUT_VARIABLE LLVM_INCLUDE_DIRS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libdir >- OUTPUT_VARIABLE LLVM_LIBRARY_DIRS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --cppflags >- OUTPUT_VARIABLE LLVM_CFLAGS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --ldflags >- OUTPUT_VARIABLE LLVM_LFLAGS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libs core bitreader asmparser analysis >- OUTPUT_VARIABLE LLVM_MODULE_LIBS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libfiles >- OUTPUT_VARIABLE LLVM_LIBS >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --prefix >- OUTPUT_VARIABLE LLVM_INSTALL_PREFIX >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- >- if (NOT ${LLVM_VERSION} VERSION_LESS "3.8.0") >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --shared-mode >- OUTPUT_VARIABLE _LLVM_SHARED_MODE >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- if (_LLVM_SHARED_MODE STREQUAL "shared") >- set(LLVM_SHARED_MODE ON) >- else() >- set(LLVM_SHARED_MODE OFF) >- endif() >- else() >- set(LLVM_SHARED_MODE OFF) >- endif() >- >- # potentially add include dir from binary dir for non-installed LLVM >- execute_process( >- COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root >- OUTPUT_VARIABLE _llvmSourceRoot >- OUTPUT_STRIP_TRAILING_WHITESPACE >- ) >- string(FIND "${LLVM_INCLUDE_DIRS}" "${_llvmSourceRoot}" _llvmIsInstalled) >- if (NOT _llvmIsInstalled) >- list(APPEND LLVM_INCLUDE_DIRS "${LLVM_INSTALL_PREFIX}/include") >- endif() >-endif() >- >-if (LLVM_FIND_REQUIRED AND NOT LLVM_FOUND) >- message(FATAL_ERROR "Could not find LLVM: ${_LLVM_ERROR_MESSAGE}") >-elseif(_LLVM_ERROR_MESSAGE AND NOT LLVM_FIND_QUIETLY) >- message(STATUS "Could not find LLVM: ${_LLVM_ERROR_MESSAGE}") >-endif() >- >-if(LLVM_FOUND AND NOT LLVM_FIND_QUIETLY) >- message(STATUS "Found LLVM (version: ${LLVM_VERSION}): (using ${LLVM_CONFIG_EXECUTABLE})") >- message(STATUS " Include dirs: ${LLVM_INCLUDE_DIRS}") >- message(STATUS " LLVM libraries: ${LLVM_LIBS}") >-endif() >diff -Naur a/plugins/clang/CMakeLists.txt b/plugins/clang/CMakeLists.txt >--- a/plugins/clang/CMakeLists.txt 2023-02-05 13:48:04.380502379 -0500 >+++ b/plugins/clang/CMakeLists.txt 2023-02-05 13:50:35.572950950 -0500 >@@ -1,6 +1,18 @@ > add_definitions(-DTRANSLATION_DOMAIN=\"kdevclang\") >-add_definitions(${LLVM_CFLAGS}) >-include_directories(${CLANG_INCLUDE_DIRS}) >+ >+if (CLANG_INCLUDE_DIRS) >+ # Targets that link against libclang should inherit Clang include directories >+ # automatically from it. However, when new API is added to a libclang version >+ # not installed in the system and this new API is used in KDevelop, KDevelop >+ # does not compile without the manual include_directories() command below. >+ # This is probably an upstream Clang issue, which KDevelop has to work around. >+ include_directories(${CLANG_INCLUDE_DIRS}) >+else() >+ message(WARNING "CLANG_INCLUDE_DIRS CMake variable is not set. \ >+Has ClangConfig.cmake renamed this variable or removed it as no longer needed?") >+endif() >+ >+include(Locate_CLANG_BUILTIN_DIR.cmake) > > set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS}) > check_cxx_source_compiles( >@@ -89,7 +101,7 @@ > KDev::Language > KDev::Project > KDev::Util >- Clang::clang >+ Clang::libclang > PRIVATE > Qt5::Core > KF5::TextEditor >diff -Naur a/plugins/clang/duchain/clanghelpers.cpp b/plugins/clang/duchain/clanghelpers.cpp >--- a/plugins/clang/duchain/clanghelpers.cpp 2023-01-29 18:58:29.000000000 -0500 >+++ b/plugins/clang/duchain/clanghelpers.cpp 2023-02-05 13:51:28.892885667 -0500 >@@ -383,6 +383,12 @@ > return clangVersion; > } > >+static QString majorClangVersion() >+{ >+ const QString version = ClangHelpers::clangVersion(); >+ return version.left(version.indexOf(QLatin1Char{'.'})); >+} >+ > bool ClangHelpers::isValidClangBuiltingIncludePath(const QString& path) > { > return QFile::exists(path + QLatin1String("/cpuid.h")); >@@ -399,10 +405,15 @@ > return dir; > } > >+ // Since https://github.com/llvm/llvm-project/commit/e1b88c8a09be25b86b13f98755a9bd744b4dbf14 >+ // Clang's resource directory includes only the major version. >+ const QString majorVersion = majorClangVersion(); >+ const QString versionSubdir = majorVersion.toInt() >= 16 ? majorVersion : clangVersion(); >+ > #ifdef Q_OS_WIN32 > // attempt to use the bundled copy on Windows >- dir = QDir::cleanPath(QStringLiteral("%1/../lib/clang/%2/include") >- .arg(QCoreApplication::applicationDirPath(), clangVersion())); >+ dir = QDir::cleanPath( >+ QStringLiteral("%1/../lib/clang/%2/include").arg(QCoreApplication::applicationDirPath(), versionSubdir)); > if (isValidClangBuiltingIncludePath(dir)) { > clangDebug() << "Using builtin dir:" << dir; > return dir; >@@ -413,7 +424,7 @@ > // changed. Try to generate the correct builtin_dir for the current > // major.minor.patchlevel version: pop the last 2 components then > // chdir through with the updated version directory. >- dir = QDir::cleanPath(QStringLiteral(KDEV_CLANG_BUILTIN_DIR "/../../%1/include").arg(clangVersion())); >+ dir = QDir::cleanPath(QStringLiteral(KDEV_CLANG_BUILTIN_DIR "/../../%1/include").arg(versionSubdir)); > if (isValidClangBuiltingIncludePath(dir)) { > clangDebug() << "Using builtin dir:" << dir; > return dir; >@@ -425,8 +436,8 @@ > // we find it by pass any symbol in libclang to dladdr > Dl_info info; > if (dladdr(reinterpret_cast<void*>(&clang_getClangVersion), &info)) { >- dir = QDir::cleanPath(QStringLiteral("%1/../clang/%2/include") >- .arg(QString::fromUtf8(info.dli_fname), clangVersion())); >+ dir = QDir::cleanPath( >+ QStringLiteral("%1/../clang/%2/include").arg(QString::fromUtf8(info.dli_fname), versionSubdir)); > if (isValidClangBuiltingIncludePath(dir)) { > clangDebug() << "Using builtin dir:" << dir; > return dir; >diff -Naur a/plugins/clang/Locate_CLANG_BUILTIN_DIR.cmake b/plugins/clang/Locate_CLANG_BUILTIN_DIR.cmake >--- a/plugins/clang/Locate_CLANG_BUILTIN_DIR.cmake 1969-12-31 19:00:00.000000000 -0500 >+++ b/plugins/clang/Locate_CLANG_BUILTIN_DIR.cmake 2023-02-05 13:51:28.892885667 -0500 >@@ -0,0 +1,32 @@ >+set(CLANG_VERSION "${LLVM_PACKAGE_VERSION}") >+set(CLANG_VERSION_MAJOR "${LLVM_VERSION_MAJOR}") >+ >+# Since https://github.com/llvm/llvm-project/commit/e1b88c8a09be25b86b13f98755a9bd744b4dbf14 >+# Clang's resource directory includes only the major version. >+if (CLANG_VERSION_MAJOR GREATER_EQUAL 16) >+ set(CLANG_VERSION_SUBDIR "${CLANG_VERSION_MAJOR}") >+else() >+ # Git version of Clang ends with the "git" suffix, e.g. "14.0.0git", but >+ # installs builtin headers into a subdirectory without the suffix, e.g. "14.0.0". >+ string(REPLACE "git" "" CLANG_VERSION_SUBDIR "${CLANG_VERSION}") >+endif() >+ >+message(STATUS " LLVM library directories: ${LLVM_LIBRARY_DIRS}") >+message(STATUS " Clang include directories: ${CLANG_INCLUDE_DIRS}") >+ >+find_path(CLANG_BUILTIN_DIR >+ # cpuid.h because it is defined in ClangSupport constructor as valid clang builtin dir indicator >+ NAMES "cpuid.h" >+ PATHS "${LLVM_LIBRARY_DIRS}" >+ "${CLANG_INCLUDE_DIRS}" >+ PATH_SUFFIXES "clang/${CLANG_VERSION_SUBDIR}/include" >+ "../../../clang/${CLANG_VERSION_SUBDIR}/include" >+ NO_DEFAULT_PATH >+) >+ >+if (NOT CLANG_BUILTIN_DIR) >+ message(FATAL_ERROR "Could not find Clang builtin include directory") >+endif() >+get_filename_component(CLANG_BUILTIN_DIR "${CLANG_BUILTIN_DIR}" ABSOLUTE) >+ >+message(STATUS " Builtin include directory: ${CLANG_BUILTIN_DIR}") >diff -Naur a/plugins/clang/tests/CMakeLists.txt b/plugins/clang/tests/CMakeLists.txt >--- a/plugins/clang/tests/CMakeLists.txt 2023-02-05 13:48:04.380502379 -0500 >+++ b/plugins/clang/tests/CMakeLists.txt 2023-02-05 13:50:35.572950950 -0500 >@@ -28,7 +28,7 @@ > ) > ecm_mark_nongui_executable(clang-minimal-visitor) > target_link_libraries(clang-minimal-visitor >- Clang::clang >+ Clang::libclang > ) > > ecm_add_test(test_buddies.cpp >@@ -59,7 +59,7 @@ > LINK_LIBRARIES > KDev::Tests > Qt5::Test >- Clang::clang >+ Clang::libclang > KDevClangPrivate > ) > >diff -Naur a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt >--- a/plugins/CMakeLists.txt 2023-02-05 13:48:04.362502463 -0500 >+++ b/plugins/CMakeLists.txt 2023-02-05 13:50:35.572950950 -0500 >@@ -36,24 +36,28 @@ > > ecm_optional_add_subdirectory(qmljs) > >-find_package(Clang 6.0) >+find_package(Clang CONFIG) > set(clangSearchHint "") >-if (NOT CLANG_FOUND) >- set(clangSearchHint "Please install a package providing libclang. Either pass -DLLVM_ROOT=/path/to/llvm-prefix or install the 'llvm-config' command-line utility for auto-detection.") >+if (NOT Clang_FOUND) >+ set(clangSearchHint " >+ Please install a package providing libclang. >+ You can pass -DClang_DIR=/path/to/lib/cmake/clang to cmake. >+ You may need to remove stale CLANG_BUILTIN_DIR and LLVM_DIR CMake cache variables.") > endif() > set_package_properties(Clang PROPERTIES >- DESCRIPTION "Clang libraries from the LLVM project. ${clangSearchHint}" >+ DESCRIPTION "Clang libraries from the LLVM project, required version >= 6.0${clangSearchHint}" > PURPOSE "Used for KDevelop's C++/C support plugin." > TYPE REQUIRED > ) > >-if (CLANG_FOUND) >- if (NOT CLANG_CLANG_LIB) >- message(FATAL_ERROR "Could not find the Clang C library: libclang") >- endif() >+if (Clang_FOUND) >+ message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") >+ message(STATUS " Using LLVMConfig.cmake in: ${LLVM_DIR}") >+ message(STATUS " Using ClangConfig.cmake in: ${Clang_DIR}") > >- add_library(Clang::clang UNKNOWN IMPORTED) >- set_property(TARGET Clang::clang PROPERTY IMPORTED_LOCATION ${CLANG_CLANG_LIB}) >+ if (NOT TARGET Clang::libclang) >+ add_library(Clang::libclang ALIAS libclang) >+ endif() > ecm_optional_add_subdirectory(clang) > endif() > # END: Languages
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 893404
: 849998 |
850000
|
850002