summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@nokia.com>2012-07-27 20:34:46 +0200
committerTobias Hunger <tobias.hunger@nokia.com>2012-07-30 23:31:24 +0200
commitb8120f29fdc68574c78915500f988cc7bb5d5836 (patch)
tree3e1cac533218fe380a4c206cb0afbba7fccf93c4 /src/plugins
parent3f74332f97b3f75e95d021e391227e38de5304c5 (diff)
downloadqt-creator-b8120f29fdc68574c78915500f988cc7bb5d5836.tar.gz
Fix support for MSVC2012.
Change-Id: I0ecf6f2d93f1911c8a243f8159e64f7d014bd036 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp3
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp3
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp14
-rw-r--r--src/plugins/projectexplorer/abi.cpp29
-rw-r--r--src/plugins/projectexplorer/abi.h1
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp26
6 files changed, 57 insertions, 19 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
index 4125f6db01..d8b352c905 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
@@ -413,7 +413,8 @@ void CMakeRunPage::initializePage()
if (targetAbi.os() == ProjectExplorer::Abi::WindowsOS) {
if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2005Flavor
|| targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor
- || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor) {
+ || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor
+ || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor) {
if (hasCodeBlocksGenerator && (cachedGenerator.isEmpty() || cachedGenerator == "NMake Makefiles"))
m_generatorComboBox->addItem(tr("NMake Generator (%1)").arg(p->displayName()), profileVariant);
} else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) {
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index afae44242e..343967874c 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -363,7 +363,8 @@ static inline bool isMsvcFlavor(Abi::OSFlavor osf)
{
return osf == Abi::WindowsMsvc2005Flavor
|| osf == Abi::WindowsMsvc2008Flavor
- || osf == Abi::WindowsMsvc2010Flavor;
+ || osf == Abi::WindowsMsvc2010Flavor
+ || osf == Abi::WindowsMsvc2012Flavor;
}
bool checkCdbConfiguration(const DebuggerStartParameters &sp, ConfigurationCheck *check)
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index d549c0213b..110b6c392b 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1604,11 +1604,15 @@ struct RemoteCdbMatcher : ProfileMatcher
ToolChain *tc = ToolChainProfileInformation::toolChain(profile);
QTC_ASSERT(tc, return false);
Abi abi = tc->targetAbi();
- return abi.architecture() == m_hostAbi.architecture()
- && abi.os() == Abi::WindowsOS
- && abi.osFlavor() == Abi::WindowsMsvc2010Flavor
- && abi.binaryFormat() == Abi::PEFormat
- && abi.wordWidth() == m_hostAbi.wordWidth();
+ if (abi.architecture() != m_hostAbi.architecture()
+ || abi.os() != Abi::WindowsOS
+ || abi.binaryFormat() != Abi::PEFormat
+ || abi.wordWidth() != m_hostAbi.wordWidth())
+ return false;
+ if (abi.osFlavor() == Abi::WindowsMSysFlavor
+ || abi.osFlavor() == Abi::WindowsCEFlavor)
+ return false;
+ return true;
}
Abi m_hostAbi;
diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index b7a2315d8b..117b3749be 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -151,8 +151,11 @@ static QList<Abi> parseCoffHeader(const QByteArray &data)
case 10:
flavor = Abi::WindowsMsvc2010Flavor;
break;
- default:
- // Keep unknown flavor
+ case 11:
+ flavor = Abi::WindowsMsvc2012Flavor;
+ break;
+ default: // Keep unknown flavor
+ qWarning("%s: Unknown MSVC flavour encountered.", Q_FUNC_INFO);
break;
}
}
@@ -403,6 +406,8 @@ Abi::Abi(const QString &abiString) :
m_osFlavor = WindowsMsvc2008Flavor;
else if (abiParts.at(2) == QLatin1String("msvc2010") && m_os == WindowsOS)
m_osFlavor = WindowsMsvc2010Flavor;
+ else if (abiParts.at(2) == QLatin1String("msvc2012") && m_os == WindowsOS)
+ m_osFlavor = WindowsMsvc2012Flavor;
else if (abiParts.at(2) == QLatin1String("msys") && m_os == WindowsOS)
m_osFlavor = WindowsMSysFlavor;
else if (abiParts.at(2) == QLatin1String("ce") && m_os == WindowsOS)
@@ -585,6 +590,8 @@ QString Abi::toString(const OSFlavor &of)
return QLatin1String("msvc2008");
case ProjectExplorer::Abi::WindowsMsvc2010Flavor:
return QLatin1String("msvc2010");
+ case ProjectExplorer::Abi::WindowsMsvc2012Flavor:
+ return QLatin1String("msvc2012");
case ProjectExplorer::Abi::WindowsMSysFlavor:
return QLatin1String("msys");
case ProjectExplorer::Abi::WindowsCEFlavor:
@@ -626,7 +633,8 @@ QList<Abi::OSFlavor> Abi::flavorsForOs(const Abi::OS &o)
case BsdOS:
return result << FreeBsdFlavor << OpenBsdFlavor << NetBsdFlavor;
case LinuxOS:
- return result << GenericLinuxFlavor << HarmattanLinuxFlavor << MaemoLinuxFlavor << MeegoLinuxFlavor;
+ return result << GenericLinuxFlavor << HarmattanLinuxFlavor << MaemoLinuxFlavor << MeegoLinuxFlavor
+ << AndroidLinuxFlavor;
case MacOS:
return result << GenericMacFlavor;
case SymbianOS:
@@ -635,7 +643,7 @@ QList<Abi::OSFlavor> Abi::flavorsForOs(const Abi::OS &o)
return result << GenericUnixFlavor << SolarisUnixFlavor;
case WindowsOS:
return result << WindowsMsvc2005Flavor << WindowsMsvc2008Flavor << WindowsMsvc2010Flavor
- << WindowsMSysFlavor << WindowsCEFlavor;
+ << WindowsMsvc2012Flavor << WindowsMSysFlavor << WindowsCEFlavor;
case UnknownOS:
return result << UnknownFlavor;
default:
@@ -653,7 +661,9 @@ Abi Abi::hostAbi()
#if defined (Q_OS_WIN)
os = WindowsOS;
-#if _MSC_VER == 1600
+#if _MSC_VER == 1700
+ subos = WindowsMsvc2012Flavor;
+#elif _MSC_VER == 1600
subos = WindowsMsvc2010Flavor;
#elif _MSC_VER == 1500
subos = WindowsMsvc2008Flavor;
@@ -673,7 +683,11 @@ Abi Abi::hostAbi()
format = MachOFormat;
#endif
- return Abi(arch, os, subos, format, QSysInfo::WordSize);
+ const Abi result(arch, os, subos, format, QSysInfo::WordSize);
+ if (!result.isValid())
+ qWarning("Unable to completely determine the host ABI (%s).",
+ qPrintable(result.toString()));
+ return result;
}
QList<Abi> Abi::abisOfBinary(const Utils::FileName &path)
@@ -806,6 +820,9 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiOfBinary_data()
QTest::newRow("dynamic QtCore: symbian")
<< QString::fromLatin1("%1/dynamic/symbian.dll").arg(prefix)
<< (QStringList() << QString::fromLatin1("arm-symbian-device-elf-32bit"));
+ QTest::newRow("dynamic QtCore: win msvc2012 64bit")
+ << QString::fromLatin1("/tmp/win-msvc2012-64bit.dll").arg(prefix)
+ << (QStringList() << QString::fromLatin1("x86-windows-msvc2012-pe-64bit"));
QTest::newRow("dynamic QtCore: win msvc2010 64bit")
<< QString::fromLatin1("%1/dynamic/win-msvc2010-64bit.dll").arg(prefix)
<< (QStringList() << QString::fromLatin1("x86-windows-msvc2010-pe-64bit"));
diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h
index c79fa66e77..669af8da3f 100644
--- a/src/plugins/projectexplorer/abi.h
+++ b/src/plugins/projectexplorer/abi.h
@@ -94,6 +94,7 @@ public:
WindowsMsvc2005Flavor,
WindowsMsvc2008Flavor,
WindowsMsvc2010Flavor,
+ WindowsMsvc2012Flavor,
WindowsMSysFlavor,
WindowsCEFlavor,
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 42b3761ea0..5fd3d29b35 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -109,14 +109,19 @@ static Abi findAbiOfMsvc(MsvcToolChain::Type type, MsvcToolChain::Platform platf
else
msvcVersionString = QLatin1String("8.0");
}
- if (msvcVersionString.startsWith(QLatin1String("10.")))
+ if (msvcVersionString.startsWith(QLatin1String("11.")))
+ flavor = Abi::WindowsMsvc2012Flavor;
+ else if (msvcVersionString.startsWith(QLatin1String("10.")))
flavor = Abi::WindowsMsvc2010Flavor;
else if (msvcVersionString.startsWith(QLatin1String("9.")))
flavor = Abi::WindowsMsvc2008Flavor;
else
flavor = Abi::WindowsMsvc2005Flavor;
-
- return Abi(arch, Abi::WindowsOS, flavor, Abi::PEFormat, wordWidth);
+ const Abi result = Abi(arch, Abi::WindowsOS, flavor, Abi::PEFormat, wordWidth);
+ if (!result.isValid())
+ qWarning("Unable to completely determine the ABI of MSVC version %s (%s).",
+ qPrintable(version), qPrintable(result.toString()));
+ return result;
}
static QString generateDisplayName(const QString &name,
@@ -341,12 +346,21 @@ QString MsvcToolChain::typeDisplayName() const
QList<Utils::FileName> MsvcToolChain::suggestedMkspecList() const
{
- if (m_abi.osFlavor() == Abi::WindowsMsvc2005Flavor)
+ switch (m_abi.osFlavor()) {
+ case ProjectExplorer::Abi::WindowsMsvc2005Flavor:
return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("win32-msvc2005"));
- if (m_abi.osFlavor() == Abi::WindowsMsvc2008Flavor)
+ case ProjectExplorer::Abi::WindowsMsvc2008Flavor:
return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("win32-msvc2008"));
- if (m_abi.osFlavor() == Abi::WindowsMsvc2010Flavor)
+ case ProjectExplorer::Abi::WindowsMsvc2010Flavor:
return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("win32-msvc2010"));
+ case ProjectExplorer::Abi::WindowsMsvc2012Flavor:
+ QList<Utils::FileName>()
+ << Utils::FileName::fromString(QLatin1String("win32-msvc2012"))
+ << Utils::FileName::fromString(QLatin1String("win32-msvc2010"));
+ break;
+ default:
+ break;
+ }
return QList<Utils::FileName>();
}