diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindWrapLibClang.cmake | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/cmake/FindWrapLibClang.cmake b/cmake/FindWrapLibClang.cmake index 33fc29837..3b21966dc 100644 --- a/cmake/FindWrapLibClang.cmake +++ b/cmake/FindWrapLibClang.cmake @@ -18,6 +18,18 @@ function(qt_tools_find_llvm_version_from_lib_dir lib_dir out_var) endfunction() function(qt_tools_find_lib_clang) + if(NOT QDOC_USE_STATIC_LIBCLANG AND DEFINED ENV{QDOC_USE_STATIC_LIBCLANG}) + set(QDOC_USE_STATIC_LIBCLANG "$ENV{QDOC_USE_STATIC_LIBCLANG}") + endif() + + if(QDOC_USE_STATIC_LIBCLANG AND MSVC) + if (NOT CMAKE_BUILD_TYPE STREQUAL "Release") + 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 PARENT_SCOPE) + return() + endif() + endif() + # We already looked up all the libclang information before, just create the target # and exit early. if(QT_LIB_CLANG_LIBS) @@ -26,10 +38,6 @@ function(qt_tools_find_lib_clang) return() endif() - if(NOT QDOC_USE_STATIC_LIBCLANG AND DEFINED ENV{QDOC_USE_STATIC_LIBCLANG}) - set(QDOC_USE_STATIC_LIBCLANG "$ENV{QDOC_USE_STATIC_LIBCLANG}") - endif() - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") # on Windows we have only two host compilers, MSVC or mingw. The former we never # use for cross-compilation where it isn't also the target compiler. The latter @@ -207,6 +215,10 @@ function(qt_tools_create_lib_clang_target) target_link_directories(WrapLibClang::WrapLibClang INTERFACE ${QT_LIB_CLANG_LIBDIR}) target_include_directories(WrapLibClang::WrapLibClang INTERFACE ${QT_LIB_CLANG_INCLUDEPATH}) target_compile_definitions(WrapLibClang::WrapLibClang INTERFACE ${QT_LIB_CLANG_DEFINES}) + if (NOT TARGET Threads::Threads) + find_package(Threads) + endif() + target_link_libraries(WrapLibClang::WrapLibClang INTERFACE Threads::Threads) endfunction() function(qt_tools_get_flag_list_of_llvm_static_libs out_var) |