summaryrefslogtreecommitdiff
path: root/cmake/FindWrapLibClang.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindWrapLibClang.cmake')
-rw-r--r--cmake/FindWrapLibClang.cmake49
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)