From 506fc40a319bc785cb6fadfb0598aa9a3d0213ae Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 2 May 2016 15:52:27 +0200 Subject: [PATCH] ClangStaticAnalyzer: Fix accepting "clang" executable The user can set "clang.exe" in the options, which is fine. However, "clang" was problematic on Windows since we failed to replace it with "clang-cl" for the actual run for MSVC toolchains. Change-Id: I2f96428d15c7406e90a38c797817aef34e7a9541 Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- .../clangstaticanalyzer/clangstaticanalyzerutils.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp index 18e8544b020..c2e278a9d0e 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp @@ -30,6 +30,7 @@ #include +#include #include #include @@ -50,8 +51,12 @@ namespace Internal { QString clangExecutableFromSettings(Core::Id toolchainType, bool *isValid) { QString exeFromSettings = ClangStaticAnalyzerSettings::instance()->clangExecutable(); - if (toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) - exeFromSettings.replace(QLatin1String("clang.exe"), QLatin1String("clang-cl.exe")); + if (toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { + if (exeFromSettings.endsWith(QLatin1String(QTC_HOST_EXE_SUFFIX))) + exeFromSettings.chop(int(qstrlen(QTC_HOST_EXE_SUFFIX))); + if (exeFromSettings.endsWith(QLatin1String("clang"))) + exeFromSettings.append(QLatin1String("-cl")); + } return clangExecutable(exeFromSettings, isValid); }