From f0467f8b01ba585ef2ee652f618d2badb8ab23b6 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 12 Jun 2015 11:30:43 +0200 Subject: support Visual Studio 2015 Task-number: QTBUG-46344 Change-Id: I49c3e2776e65cc83d40d1f5ab3be1365d17242d1 Reviewed-by: Friedemann Kleint --- src/plugins/cmakeprojectmanager/generatorinfo.cpp | 9 ++++++--- src/plugins/debugger/cdb/cdbengine.cpp | 2 ++ src/plugins/projectexplorer/abi.cpp | 11 +++++++++-- src/plugins/projectexplorer/abi.h | 1 + src/plugins/projectexplorer/abstractmsvctoolchain.cpp | 3 ++- src/plugins/projectexplorer/msvctoolchain.cpp | 12 +++++++++++- src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 3 ++- 7 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/generatorinfo.cpp b/src/plugins/cmakeprojectmanager/generatorinfo.cpp index 2dfc57e358..50889185cc 100644 --- a/src/plugins/cmakeprojectmanager/generatorinfo.cpp +++ b/src/plugins/cmakeprojectmanager/generatorinfo.cpp @@ -72,7 +72,8 @@ QByteArray GeneratorInfo::generator() const || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor - || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) { + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) { return "NMake Makefiles"; } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) { if (Utils::HostOsInfo::isWindowsHost()) @@ -105,7 +106,8 @@ QString GeneratorInfo::displayName() const || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor - || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) { + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) { return tr("NMake Generator (%1)").arg(m_kit->displayName()); } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) { if (Utils::HostOsInfo::isWindowsHost()) @@ -140,7 +142,8 @@ QList GeneratorInfo::generatorInfosFor(ProjectExplorer::Kit *k, N || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor - || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) { + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) { if (hasCodeBlocks) results << GeneratorInfo(k); } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) { diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 69e0d20cf2..eea4a0175a 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -761,6 +761,8 @@ static QByteArray msvcRunTime(const Abi::OSFlavor flavour) return "MSVCR110"; case Abi::WindowsMsvc2013Flavor: return "MSVCR120"; + case Abi::WindowsMsvc2015Flavor: + return "MSVCR140"; default: break; } diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index f00eb525f4..b604a6bec9 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -168,6 +168,9 @@ static QList parseCoffHeader(const QByteArray &data) case 12: flavor = Abi::WindowsMsvc2013Flavor; break; + case 14: + flavor = Abi::WindowsMsvc2015Flavor; + break; default: // Keep unknown flavor if (minorLinker != 0) flavor = Abi::WindowsMSysFlavor; // MSVC seems to avoid using minor numbers @@ -414,6 +417,8 @@ Abi::Abi(const QString &abiString) : m_osFlavor = WindowsMsvc2012Flavor; else if (abiParts.at(2) == QLatin1String("msvc2013") && m_os == WindowsOS) m_osFlavor = WindowsMsvc2013Flavor; + else if (abiParts.at(2) == QLatin1String("msvc2015") && m_os == WindowsOS) + m_osFlavor = WindowsMsvc2015Flavor; else if (abiParts.at(2) == QLatin1String("msys") && m_os == WindowsOS) m_osFlavor = WindowsMSysFlavor; else if (abiParts.at(2) == QLatin1String("ce") && m_os == WindowsOS) @@ -674,6 +679,8 @@ QString Abi::toString(const OSFlavor &of) return QLatin1String("msvc2012"); case Abi::WindowsMsvc2013Flavor: return QLatin1String("msvc2013"); + case Abi::WindowsMsvc2015Flavor: + return QLatin1String("msvc2015"); case Abi::WindowsMSysFlavor: return QLatin1String("msys"); case Abi::WindowsCEFlavor: @@ -724,8 +731,8 @@ QList Abi::flavorsForOs(const Abi::OS &o) return result << GenericUnixFlavor << SolarisUnixFlavor << UnknownFlavor; case WindowsOS: return result << WindowsMsvc2005Flavor << WindowsMsvc2008Flavor << WindowsMsvc2010Flavor - << WindowsMsvc2012Flavor << WindowsMsvc2013Flavor << WindowsMSysFlavor - << WindowsCEFlavor << UnknownFlavor; + << WindowsMsvc2012Flavor << WindowsMsvc2013Flavor << WindowsMsvc2015Flavor + << WindowsMSysFlavor << WindowsCEFlavor << UnknownFlavor; case VxWorks: return result << VxWorksFlavor << UnknownFlavor; case UnknownOS: diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h index 4f6fbd81b7..c0ebe5f9f7 100644 --- a/src/plugins/projectexplorer/abi.h +++ b/src/plugins/projectexplorer/abi.h @@ -90,6 +90,7 @@ public: WindowsMsvc2010Flavor, WindowsMsvc2012Flavor, WindowsMsvc2013Flavor, + WindowsMsvc2015Flavor, WindowsMSysFlavor, WindowsCEFlavor, diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index 2b8cb72c58..fcdc9dd78b 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -101,7 +101,8 @@ ToolChain::CompilerFlags AbstractMsvcToolChain::compilerFlags(const QStringList if (m_abi.osFlavor() == Abi::WindowsMsvc2010Flavor || m_abi.osFlavor() == Abi::WindowsMsvc2012Flavor - || m_abi.osFlavor() == Abi::WindowsMsvc2013Flavor) + || m_abi.osFlavor() == Abi::WindowsMsvc2013Flavor + || m_abi.osFlavor() == Abi::WindowsMsvc2015Flavor) flags |= StandardCxx11; return flags; diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 8a03541712..881a7dc9a5 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -135,7 +135,9 @@ static Abi findAbiOfMsvc(MsvcToolChain::Type type, MsvcToolChain::Platform platf else if (version == QLatin1String("v7.0A") || version == QLatin1String("v7.1")) msvcVersionString = QLatin1String("10.0"); } - if (msvcVersionString.startsWith(QLatin1String("12."))) + if (msvcVersionString.startsWith(QLatin1String("14."))) + flavor = Abi::WindowsMsvc2015Flavor; + else if (msvcVersionString.startsWith(QLatin1String("12."))) flavor = Abi::WindowsMsvc2013Flavor; else if (msvcVersionString.startsWith(QLatin1String("11."))) flavor = Abi::WindowsMsvc2012Flavor; @@ -404,6 +406,14 @@ QList MsvcToolChain::suggestedMkspecList() const << Utils::FileName::fromLatin1("winrt-x64-msvc2013") << Utils::FileName::fromLatin1("win32-msvc2012") << Utils::FileName::fromLatin1("win32-msvc2010"); + case Abi::WindowsMsvc2015Flavor: + return QList() + << Utils::FileName::fromLatin1("win32-msvc2015") + << Utils::FileName::fromLatin1("winphone-arm-msvc2015") + << Utils::FileName::fromLatin1("winphone-x86-msvc2015") + << Utils::FileName::fromLatin1("winrt-arm-msvc2015") + << Utils::FileName::fromLatin1("winrt-x86-msvc2015") + << Utils::FileName::fromLatin1("winrt-x64-msvc2015"); default: break; } diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 9fb3877e21..1dbf06fa55 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -257,7 +257,8 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor if (!m.isEmpty()) data.insert(QLatin1String(CPP_COMPILERPATHBYLANGUAGE), m); - if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) { + if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor + || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) { const QLatin1String flags("/FS"); data.insert(QLatin1String(CPP_PLATFORMCFLAGS), flags); data.insert(QLatin1String(CPP_PLATFORMCXXFLAGS), flags); -- cgit v1.2.3