aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-03-22 20:02:05 +0100
committerTobias Hunger <tobias.hunger@qt.io>2018-03-26 09:19:57 +0000
commitcf5075c9cda86e2baea30b1b3a93379cd667979a (patch)
treea865c069c4bebe07eb1881709ae98fd2b6dde692 /src
parentadb169149c2aff23f069dd9850e7afa9b6d19e45 (diff)
Clang-cl: Fix restoration of clang-cl compiler
compilerCommand was not restored, so isValid failed. Task-number: QTCREATORBUG-19255 Change-Id: Idc65aaf2eaad348f05cdf4dfd057bbd10c6c4e4c Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp15
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h3
2 files changed, 12 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index a64b749e33..64c1a05fda 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -745,7 +745,10 @@ void ClangClToolChainConfigWidget::setFromClangClToolChain()
// clang-cl.exe as a [to some extent] compatible drop-in replacement for cl.
// --------------------------------------------------------------------------
-static const char clangClBinary[] = "clang-cl.exe";
+static QString compilerFromPath(const QString &path)
+{
+ return path + "/bin/clang-cl.exe";
+}
ClangClToolChain::ClangClToolChain(const QString &name, const QString &llvmDir,
const Abi &abi,
@@ -753,7 +756,6 @@ ClangClToolChain::ClangClToolChain(const QString &name, const QString &llvmDir,
Detection d)
: MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, language, d)
, m_llvmDir(llvmDir)
- , m_compiler(Utils::FileName::fromString(m_llvmDir + QStringLiteral("/bin/") + QLatin1String(clangClBinary)))
{ }
ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID)
@@ -761,7 +763,7 @@ ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHA
bool ClangClToolChain::isValid() const
{
- return MsvcToolChain::isValid() && m_compiler.exists();
+ return MsvcToolChain::isValid() && compilerCommand().exists();
}
void ClangClToolChain::addToEnvironment(Utils::Environment &env) const
@@ -770,6 +772,11 @@ void ClangClToolChain::addToEnvironment(Utils::Environment &env) const
env.prependOrSetPath(m_llvmDir + QStringLiteral("/bin"));
}
+Utils::FileName ClangClToolChain::compilerCommand() const
+{
+ return Utils::FileName::fromString(compilerFromPath(m_llvmDir));
+}
+
QString ClangClToolChain::typeDisplayName() const
{
return QCoreApplication::translate("ProjectExplorer::ClangToolChainFactory", "Clang");
@@ -933,7 +940,7 @@ static void detectClangClToolChain(QList<ToolChain *> *list)
const QString path = QDir::cleanPath(registry.value(QStringLiteral(".")).toString());
if (path.isEmpty())
return;
- const unsigned char wordWidth = Utils::is64BitWindowsBinary(path + QStringLiteral("/bin/") + QLatin1String(clangClBinary))
+ const unsigned char wordWidth = Utils::is64BitWindowsBinary(compilerFromPath(path))
? 64 : 32;
const ToolChain *toolChain = findMsvcToolChain(*list, wordWidth, Abi::WindowsMsvc2015Flavor);
if (!toolChain)
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 3dcb715286..f6aaf540f6 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -107,7 +107,7 @@ public:
QString typeDisplayName() const override;
QList<Utils::FileName> suggestedMkspecList() const override;
void addToEnvironment(Utils::Environment &env) const override;
- Utils::FileName compilerCommand() const override { return m_compiler; }
+ Utils::FileName compilerCommand() const override;
IOutputParser *outputParser() const override;
ToolChain *clone() const override;
QVariantMap toMap() const override;
@@ -118,7 +118,6 @@ public:
private:
QString m_llvmDir;
- Utils::FileName m_compiler;
};
// --------------------------------------------------------------------------