MSVC: Register toolchains also for C language

Change-Id: I1abaecc53be9e87b88178bc044e3352ddeb5c4e6
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Orgad Shaneh
2016-10-30 12:03:21 +02:00
committed by Orgad Shaneh
parent a9c967263e
commit 36ecee17fe

View File

@@ -573,7 +573,7 @@ MsvcToolChainFactory::MsvcToolChainFactory()
QSet<ToolChain::Language> MsvcToolChainFactory::supportedLanguages() const QSet<ToolChain::Language> MsvcToolChainFactory::supportedLanguages() const
{ {
return { ProjectExplorer::ToolChain::Language::Cxx }; return { ToolChain::Language::C, ToolChain::Language::Cxx };
} }
bool MsvcToolChainFactory::checkForVisualStudioInstallation(const QString &vsName) bool MsvcToolChainFactory::checkForVisualStudioInstallation(const QString &vsName)
@@ -617,24 +617,32 @@ QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, MsvcToolChai
return QString(); return QString();
} }
static ToolChain *findOrCreateToolChain(const QList<ToolChain *> &alreadyKnown, static QList<ToolChain *> findOrCreateToolChain(
const QList<ToolChain *> &alreadyKnown,
const QString &name, const Abi &abi, const QString &name, const Abi &abi,
const QString &varsBat, const QString &varsBatArg, const QString &varsBat, const QString &varsBatArg,
ToolChain::Detection d = ToolChain::ManualDetection) ToolChain::Detection d = ToolChain::ManualDetection)
{ {
ToolChain *tc = Utils::findOrDefault(alreadyKnown, QList<ToolChain *> res;
[&varsBat, &varsBatArg, &abi](ToolChain *tc) -> bool { for (auto language: {ToolChain::Language::C, ToolChain::Language::Cxx}) {
ToolChain *tc = Utils::findOrDefault(
alreadyKnown,
[&varsBat, &varsBatArg, &abi, &language](ToolChain *tc) -> bool {
if (tc->typeId() != Constants::MSVC_TOOLCHAIN_TYPEID) if (tc->typeId() != Constants::MSVC_TOOLCHAIN_TYPEID)
return false; return false;
if (tc->targetAbi() != abi) if (tc->targetAbi() != abi)
return false; return false;
if (tc->language() != language)
return false;
auto mtc = static_cast<MsvcToolChain *>(tc); auto mtc = static_cast<MsvcToolChain *>(tc);
return mtc->varsBat() == varsBat return mtc->varsBat() == varsBat
&& mtc->varsBatArg() == varsBatArg; && mtc->varsBatArg() == varsBatArg;
}); });
if (!tc) if (!tc)
tc = new MsvcToolChain(name, abi, varsBat, varsBatArg, ToolChain::Language::Cxx, d); tc = new MsvcToolChain(name, abi, varsBat, varsBatArg, language, d);
return tc; res << tc;
}
return res;
} }
// Detect build tools introduced with MSVC2015 // Detect build tools introduced with MSVC2015
@@ -670,10 +678,11 @@ static void detectCppBuildTools(QList<ToolChain *> *list)
const Entry &e = entries[i]; const Entry &e = entries[i];
const Abi abi(e.architecture, Abi::WindowsOS, Abi::WindowsMsvc2015Flavor, const Abi abi(e.architecture, Abi::WindowsOS, Abi::WindowsMsvc2015Flavor,
e.format, e.wordSize); e.format, e.wordSize);
for (auto language: {ToolChain::Language::C, ToolChain::Language::Cxx}) {
list->append(new MsvcToolChain(name + QLatin1String(e.postFix), abi, list->append(new MsvcToolChain(name + QLatin1String(e.postFix), abi,
vcVarsBat, QLatin1String(e.varsBatArg), vcVarsBat, QLatin1String(e.varsBatArg),
ToolChain::Language::Cxx, language, ToolChain::AutoDetection));
ToolChain::AutoDetection)); }
} }
} }