diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-06-23 13:17:06 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-06-29 12:20:12 +0200 |
commit | 896cdd0e28a8dc4e03bb287fea5c71519297886e (patch) | |
tree | 88beb22d4819ae58780297f5e1f546513ad40c03 /cmake | |
parent | b31764887505df43d62013db2cb903b5c537a0bf (diff) |
CMake: Fix configure.cmake usage for libclang
Now that the qmake situation of the configure.json files in regards to
libclang is fixed, we need to adjust the CMake files to do the same.
Remove the old stale configure.cmake files, create the top-level
configure.cmake file, evaluate its features in src dir, and make sure
to also create the forwarding headers in the global QtTools module as
well.
Change FindWrapLibClang to accept a version number, and modify
configure.cmake to pass the minimum version to be "8".
While libclang 6.x is enough to build Qt with qmake, for some reason
CMake needs at least 8.x. Explicitly specifying the minimum version
will prevent an old libclang library to be found in Coin, and thus
breaking integrations during compilation.
Once Coin is updated to include latest libclang, qdoc and lupdate
will be built as usual.
Change-Id: Iab8ec25d256358005850f25d6395d81e0068edfe
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindWrapLibClang.cmake | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/cmake/FindWrapLibClang.cmake b/cmake/FindWrapLibClang.cmake index df6c011f5..30be70b66 100644 --- a/cmake/FindWrapLibClang.cmake +++ b/cmake/FindWrapLibClang.cmake @@ -5,30 +5,47 @@ endif() find_package(Clang CONFIG) -if(TARGET libclang AND TARGET clangHandleCXX) +set(WrapLibClang_FOUND FALSE) +set(__wrap_lib_clang_requested_version_found FALSE) + +# Need to explicitly handle the version check, because the Clang package doesn't. +if(WrapLibClang_FIND_VERSION AND LLVM_PACKAGE_VERSION + AND LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL "${WrapLibClang_FIND_VERSION}") + set(__wrap_lib_clang_requested_version_found TRUE) +endif() + +if(TARGET libclang AND TARGET clangHandleCXX AND __wrap_lib_clang_requested_version_found) + set(WrapLibClang_FOUND TRUE) + get_target_property(type libclang TYPE) if (MSVC AND type STREQUAL "STATIC_LIBRARY") if (NOT CMAKE_BUILD_TYPE MATCHES "(Release|MinSizeRel|RelWithDebInfo)") message(STATUS "Static linkage against libclang with MSVC was requested, but the build is not a release build, therefore libclang cannot be used.") set(WrapLibClang_FOUND FALSE) - return() endif() endif() - add_library(WrapLibClang::WrapLibClang IMPORTED INTERFACE) + if(WrapLibClang_FOUND) + add_library(WrapLibClang::WrapLibClang IMPORTED INTERFACE) - target_include_directories(WrapLibClang::WrapLibClang INTERFACE ${CLANG_INCLUDE_DIRS}) - if (NOT TARGET Threads::Threads) - find_package(Threads) - endif() - target_link_libraries(WrapLibClang::WrapLibClang INTERFACE libclang clangHandleCXX Threads::Threads) - - foreach(version MAJOR MINOR PATCH) - set(QT_LIB_CLANG_VERSION_${version} ${LLVM_VERSION_${version}} CACHE STRING "" FORCE) - endforeach() - set(QT_LIB_CLANG_VERSION ${LLVM_PACKAGE_VERSION} CACHE STRING "" FORCE) - set(QT_LIB_CLANG_LIBDIR "${LLVM_LIBRARY_DIRS}" CACHE STRING "" FORCE) - set(QT_LIBCLANG_RESOURCE_DIR "\"${QT_LIB_CLANG_LIBDIR}/clang/${QT_LIB_CLANG_VERSION}/include\"" CACHE STRING "" FORCE) + target_include_directories(WrapLibClang::WrapLibClang INTERFACE ${CLANG_INCLUDE_DIRS}) + if (NOT TARGET Threads::Threads) + find_package(Threads) + endif() + target_link_libraries(WrapLibClang::WrapLibClang + INTERFACE libclang clangHandleCXX Threads::Threads) - set(WrapLibClang_FOUND TRUE) + foreach(version MAJOR MINOR PATCH) + set(QT_LIB_CLANG_VERSION_${version} ${LLVM_VERSION_${version}} CACHE STRING "" FORCE) + endforeach() + set(QT_LIB_CLANG_VERSION ${LLVM_PACKAGE_VERSION} CACHE STRING "" FORCE) + set(QT_LIB_CLANG_LIBDIR "${LLVM_LIBRARY_DIRS}" CACHE STRING "" FORCE) + set(QT_LIBCLANG_RESOURCE_DIR + "\"${QT_LIB_CLANG_LIBDIR}/clang/${QT_LIB_CLANG_VERSION}/include\"" CACHE STRING "" FORCE) + endif() endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(WrapLibClang + REQUIRED_VARS WrapLibClang_FOUND + VERSION_VAR LLVM_PACKAGE_VERSION) |