summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-12-10 13:02:02 +0100
committerEike Ziller <eike.ziller@qt.io>2020-12-10 13:02:02 +0100
commit1283b15117e2c6ee110942ef6f97f120a1a4b533 (patch)
treee83ff378de66c6718e82e55d7f95fcc69af2ebd2 /cmake
parentf440dfe43a286ef1d84d4fe1e281ea8996e64148 (diff)
parent8d6ca33a7af5d69883e52a0e785d6d238de67a0a (diff)
downloadqt-creator-1283b15117e2c6ee110942ef6f97f120a1a4b533.tar.gz
Merge remote-tracking branch 'origin/4.14'
Conflicts: doc/qtdesignstudio/examples/loginui1/qtquickcontrols2.conf doc/qtdesignstudio/examples/loginui2/qtquickcontrols2.conf doc/qtdesignstudio/examples/loginui3/qtquickcontrols2.conf doc/qtdesignstudio/examples/loginui4/qtquickcontrols2.conf share/qtcreator/debugger/dumper.py share/qtcreator/debugger/qttypes.py Change-Id: Id44a67cdeeb0889ff96eddcdf409d20ca7cbdd0b
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindClang.cmake45
1 files changed, 35 insertions, 10 deletions
diff --git a/cmake/FindClang.cmake b/cmake/FindClang.cmake
index fcc9f241e1..b515820be1 100644
--- a/cmake/FindClang.cmake
+++ b/cmake/FindClang.cmake
@@ -13,14 +13,39 @@ elseif (TARGET clang-cpp)
set(CLANG_TOOLING_LIBS libclang clang-cpp)
endif()
-SET(QTC_CLANG_BUILDMODE_MATCH ON)
-if (WIN32 AND TARGET libclang)
- string(TOLOWER ${CMAKE_BUILD_TYPE} _type)
- get_target_property(_llvmConfigs libclang IMPORTED_CONFIGURATIONS)
- string(TOLOWER ${_llvmConfigs} _llvm_configs)
- list(FIND _llvm_configs ${_type} _build_type_found)
- if (_build_type_found LESS 0)
- set(QTC_CLANG_BUILDMODE_MATCH OFF)
- message("Build mode mismatch (debug vs release): limiting clangTooling")
- endif()
+
+if (WIN32 AND TARGET clangTooling)
+ # check that we can compile against clangTooling
+ # which requires the build modes to be compatible
+ # (debug vs release on Windows)
+ include(CheckCxxSourceCompiles)
+
+ set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})
+ set(CMAKE_REQUIRED_INCLUDES ${CLANG_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES clangTooling)
+
+ check_cxx_source_compiles([=[
+ #include <clang/Tooling/CommonOptionsParser.h>
+ #include <clang/Tooling/Tooling.h>
+ using namespace clang;
+ using namespace clang::tooling;
+ llvm::cl::OptionCategory CheckToolCategory("check tool options");
+ int main(int argc, const char **argv)
+ {
+ CommonOptionsParser OptionsParser(argc, argv, CheckToolCategory);
+ ClangTool Tool(OptionsParser.getCompilations(),
+ OptionsParser.getSourcePathList());
+ return 0;
+ }
+ ]=] QTC_CLANG_BUILDMODE_MATCH
+ )
+ unset(CMAKE_TRY_COMPILE_CONFIGURATION)
+ unset(CMAKE_REQUIRED_INCLUDES)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+else()
+ set(QTC_CLANG_BUILDMODE_MATCH ON)
+endif()
+
+if (NOT QTC_CLANG_BUILDMODE_MATCH)
+ message("Clang build mode mismatch (debug vs release): limiting clangTooling")
endif()