MSVC: Fix Microsoft Visual Cpp Build Tools

Backport of bc4a24db00
from master branch for 4.0.1

Change-Id: I5db3d0dda0b92c1ed26655f39df05d9667bfbd04
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2016-04-26 12:47:39 +02:00
committed by Tobias Hunger
parent 646bf84c60
commit 2be4d2643a
3 changed files with 10 additions and 20 deletions

View File

@@ -69,7 +69,10 @@ Abi AbstractMsvcToolChain::targetAbi() const
bool AbstractMsvcToolChain::isValid() const
{
return !m_vcvarsBat.isEmpty();
if (m_vcvarsBat.isEmpty())
return false;
QFileInfo fi(m_vcvarsBat);
return fi.isFile() && fi.isExecutable();
}
QByteArray AbstractMsvcToolChain::predefinedMacros(const QStringList &cxxflags) const

View File

@@ -354,14 +354,6 @@ MsvcToolChain::MsvcToolChain(Core::Id typeId, const QString &name, const Abi &ab
setDisplayName(name);
}
bool MsvcToolChain::isValid() const
{
if (!AbstractMsvcToolChain::isValid())
return false;
QString vcVarsBat = MsvcToolChainFactory::vcVarsBatFor(QFileInfo(m_vcvarsBat).absolutePath(), m_varsBatArg);
return QFileInfo::exists(vcVarsBat);
}
MsvcToolChain::MsvcToolChain(Core::Id typeId)
: AbstractMsvcToolChain(typeId, ManualDetection)
{
@@ -610,8 +602,10 @@ bool MsvcToolChainFactory::checkForVisualStudioInstallation(const QString &vsNam
return vsRegistry.contains(vsName);
}
QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, const QString &toolchainName)
QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform)
{
const QString toolchainName = platformName(platform);
if (toolchainName.startsWith(QLatin1Char('/'))) // windows sdk case, all use SetEnv.cmd
return basePath + QLatin1String("/SetEnv.cmd");
if (toolchainName == QLatin1String("x86"))
@@ -634,11 +628,6 @@ QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, const QStrin
return QString();
}
QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform)
{
return vcVarsBatFor(basePath, platformName(platform));
}
static ToolChain *findOrCreateToolChain(const QList<ToolChain *> &alreadyKnown,
const QString &name, const Abi &abi,
const QString &varsBat, const QString &varsBatArg,
@@ -814,13 +803,13 @@ QList<ToolChain *> MsvcToolChainFactory::autoDetect(const QList<ToolChain *> &al
<< MsvcToolChain::arm << MsvcToolChain::x86_arm << MsvcToolChain::amd64_arm
<< MsvcToolChain::ia64 << MsvcToolChain::x86_ia64;
foreach (const MsvcToolChain::Platform &platform, platforms) {
if (hostSupportsPlatform(platform)
&& QFileInfo(vcVarsBatFor(path, platform)).isFile()) {
QString vcvarsBat = vcVarsBatFor(path, platform);
if (hostSupportsPlatform(platform) && QFileInfo(vcvarsBat).isFile()) {
results.append(findOrCreateToolChain(
alreadyKnown,
generateDisplayName(vsName, MsvcToolChain::VS, platform),
findAbiOfMsvc(MsvcToolChain::VS, platform, vsName),
vcvarsAllbat, platformName(platform),
vcvarsBat, platformName(platform),
ToolChain::AutoDetection));
}
}

View File

@@ -57,7 +57,6 @@ public:
Detection d = ManualDetection);
MsvcToolChain();
bool isValid() const override;
Utils::FileNameList suggestedMkspecList() const override;
QString typeDisplayName() const override;
@@ -131,7 +130,6 @@ public:
ToolChain *restore(const QVariantMap &data) override;
ToolChainConfigWidget *configurationWidget(ToolChain *);
static QString vcVarsBatFor(const QString &basePath, const QString &toolchainName);
static QString vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform);
private:
static bool checkForVisualStudioInstallation(const QString &vsName);