From 7169bfff39fa4b2a3d10ca6ffabd60f0de3fb19a Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 26 Nov 2010 12:17:14 +0100 Subject: [PATCH] Symbian: Introduce RVCT 4 toolchain Task-number: 2481 --- src/plugins/projectexplorer/toolchain.cpp | 4 + src/plugins/projectexplorer/toolchaintype.h | 4 +- .../qt4projectmanager/qt-s60/rvcttoolchain.cpp | 238 +++++++++++++++------ .../qt4projectmanager/qt-s60/rvcttoolchain.h | 68 +++++- .../qt-s60/s60deployconfiguration.cpp | 1 + .../qt-s60/s60devicerunconfiguration.cpp | 3 + .../qt4projectmanager/qt-s60/s60manager.cpp | 18 +- src/plugins/qt4projectmanager/qt-s60/s60manager.h | 3 +- .../qt4projectmanager/qt4buildconfiguration.cpp | 2 + .../qt4projectmanager/qt4runconfiguration.cpp | 3 +- src/plugins/qt4projectmanager/qtversionmanager.cpp | 7 +- 11 files changed, 271 insertions(+), 80 deletions(-) diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 7efbd16567..db6120052d 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -153,6 +153,10 @@ QString ToolChain::toolChainName(ToolChainType tc) return QCoreApplication::translate("ToolChain", "RVCT 2 (ARMV5)"); case ToolChain_RVCT2_ARMV6: return QCoreApplication::translate("ToolChain", "RVCT 2 (ARMV6)"); + case ToolChain_RVCT4_ARMV5: + return QCoreApplication::translate("ToolChain", "RVCT 4 (ARMV5)"); + case ToolChain_RVCT4_ARMV6: + return QCoreApplication::translate("ToolChain", "RVCT 4 (ARMV6)"); case ToolChain_GCC_MAEMO: return QCoreApplication::translate("ToolChain", "GCC for Maemo"); case ToolChain_OTHER: diff --git a/src/plugins/projectexplorer/toolchaintype.h b/src/plugins/projectexplorer/toolchaintype.h index cce032433c..de0347d758 100644 --- a/src/plugins/projectexplorer/toolchaintype.h +++ b/src/plugins/projectexplorer/toolchaintype.h @@ -46,7 +46,9 @@ enum ToolChainType ToolChain_GCC_MAEMO = 9, ToolChain_GCCE_GNUPOC = 10, ToolChain_RVCT_ARMV5_GNUPOC = 11, - ToolChain_LAST_VALID = 11, + ToolChain_RVCT4_ARMV5 = 12, + ToolChain_RVCT4_ARMV6 = 13, + ToolChain_LAST_VALID = 13, ToolChain_OTHER = 200, ToolChain_UNKNOWN = 201, ToolChain_INVALID = 202 diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp index fca0f52cd1..729b7b32d1 100644 --- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp @@ -44,6 +44,18 @@ using namespace Qt4ProjectManager::Internal; static const char rvctBinaryC[] = "armcc"; +static inline QStringList headerPathToStringList(const QList &hl) +{ + QStringList rc; + foreach (const ProjectExplorer::HeaderPath &hp, hl) + rc.push_back(hp.path()); + return rc; +} + +// ========================================================================== +// RVCTToolChain +// ========================================================================== + RVCTToolChain::RVCTToolChain(const S60Devices::Device &device, ProjectExplorer::ToolChainType type) : m_mixin(device), m_type(type), @@ -54,41 +66,76 @@ RVCTToolChain::RVCTToolChain(const S60Devices::Device &device, ProjectExplorer:: { } -// Return the environment variable indicating the RVCT version -// 'RVCTBIN' -QByteArray RVCTToolChain::rvctBinEnvironmentVariable() +QSet > RVCTToolChain::configuredRvctVersions() { - static QByteArray binVar; - // Grep the environment list - if (binVar.isEmpty()) { - const QRegExp regex(QLatin1String("^(RVCT\\d\\dBIN)=.*$")); - QTC_ASSERT(regex.isValid(), return QByteArray()); - foreach(const QString &v, QProcessEnvironment::systemEnvironment().toStringList()) { + static QSet > result; + + if (result.isEmpty()) { + QRegExp regex(QLatin1String("^RVCT(\\d)(\\d)BIN=.*$")); + Q_ASSERT(regex.isValid()); + QStringList environment = QProcessEnvironment::systemEnvironment().toStringList(); + foreach (const QString &v, environment) { if (regex.exactMatch(v)) { - binVar = regex.cap(1).toLocal8Bit(); - break; + int major = regex.cap(1).toInt(); + int minor = regex.cap(2).toInt(); + result.insert(qMakePair(major, minor)); } } } - return binVar; + return result; +} + +QStringList RVCTToolChain::configuredEnvironment() +{ + updateVersion(); + + if (m_additionalEnvironment.isEmpty()) { + const QString binVarName = QString::fromLocal8Bit(rvctBinEnvironmentVariable()); + const QString varName = binVarName.left(binVarName.count() - 3 /* BIN */); + QStringList environment = QProcessEnvironment::systemEnvironment().toStringList(); + foreach (const QString &v, environment) { + if (v.startsWith(varName) && !v.startsWith(binVarName)) { + m_additionalEnvironment.append(v); + } + } + } + return m_additionalEnvironment; +} + +// Return the environment variable indicating the RVCT version +// 'RVCTBIN' +QByteArray RVCTToolChain::rvctBinEnvironmentVariableForVersion(int major) +{ + QSet > versions = configuredRvctVersions(); + + for (QSet >::const_iterator it = versions.constBegin(); + it != versions.constEnd(); ++it) { + if (it->first == major) { + if (it->first < 0 || it->first > 9) continue; + if (it->second < 0 || it->second > 9) continue; + QByteArray result = "RVCT..BIN"; + result[4] = '0' + it->first; + result[5] = '0' + it->second; + return result; + } + } + return QByteArray(); } -// Return binary path as pointed to by RVCTBIN QString RVCTToolChain::rvctBinPath() { - static QString binPath; - if (binPath.isEmpty()) { + if (m_binPath.isEmpty()) { const QByteArray binVar = rvctBinEnvironmentVariable(); if (!binVar.isEmpty()) { const QByteArray binPathB = qgetenv(binVar); if (!binPathB.isEmpty()) { const QFileInfo fi(QString::fromLocal8Bit(binPathB)); if (fi.isDir()) - binPath = fi.absoluteFilePath(); + m_binPath = fi.absoluteFilePath(); } } } - return binPath; + return m_binPath; } // Return binary expanded by path or resort to PATH @@ -121,7 +168,7 @@ void RVCTToolChain::updateVersion() addToEnvironment(env); armcc.setEnvironment(env.toStringList()); const QString binary = rvctBinary(); - armcc.start(rvctBinary(), QStringList()); + armcc.start(binary, QStringList()); if (!armcc.waitForStarted()) { qWarning("Unable to run rvct binary '%s' when trying to determine version.", qPrintable(binary)); return; @@ -143,36 +190,32 @@ void RVCTToolChain::updateVersion() QTC_ASSERT(versionRegExp.isValid(), return); if (versionRegExp.indexIn(versionLine) != -1) { m_major = versionRegExp.cap(1).toInt(); - m_minor = versionRegExp.cap(2).toInt(); - m_build = versionRegExp.cap(3).toInt(); + m_minor = versionRegExp.cap(2).toInt(); + m_build = versionRegExp.cap(3).toInt(); } } QByteArray RVCTToolChain::predefinedMacros() { - // see http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205f/Babbacdb.html + // see http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205f/Babbacdb.html (version 2.2) + // and http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491b/BABJFEFG.html (version 4.0) updateVersion(); - QByteArray ba = QString::fromLatin1( - "#define __arm__arm__\n" - "#define __ARMCC_VERSION %1%2%3%4\n" - "#define __ARRAY_OPERATORS\n" - "#define _BOOL\n" - "#define c_plusplus\n" - "#define __cplusplus\n" - "#define __CC_ARM\n" - "#define __EDG__\n" - "#define __STDC__\n" - "#define __STDC_VERSION__\n" - "#define __TARGET_FEATURE_DOUBLEWORD\n" - "#define __TARGET_FEATURE_DSPMUL\n" - "#define __TARGET_FEATURE_HALFWORD\n" - "#define __TARGET_FEATURE_THUMB\n" - "#define _WCHAR_T\n" - "#define __SYMBIAN32__\n" - ).arg(m_major, 1, 10, QLatin1Char('0')) - .arg(m_minor, 1, 10, QLatin1Char('0')) - .arg("0") - .arg(m_build, 3, 10, QLatin1Char('0')).toLatin1(); + QByteArray ba("#define __ARRAY_OPERATORS\n" + "#define _BOOL\n" + "#define __cplusplus\n" + "#define __CC_ARM 1\n" + "#define __EDG__\n" + "#define __STDC__\n" + "#define __STDC_VERSION__\n" + "#define __sizeof_int 4" + "#define __sizeof_long 4" + "#define __sizeof_ptr 4" + "#define __TARGET_FEATURE_DOUBLEWORD\n" + "#define __TARGET_FEATURE_DSPMUL\n" + "#define __TARGET_FEATURE_HALFWORD\n" + "#define __TARGET_FEATURE_THUMB\n" + "#define _WCHAR_T\n" + "#define __SYMBIAN32__\n"); return ba; } @@ -180,8 +223,7 @@ QList RVCTToolChain::systemHeaderPaths() { if (m_systemHeaderPaths.isEmpty()) { updateVersion(); - Utils::Environment env = Utils::Environment::systemEnvironment(); - QString rvctInclude = env.value(QString::fromLatin1("RVCT%1%2INC").arg(m_major).arg(m_minor)); + QString rvctInclude = qgetenv(QString::fromLatin1("RVCT%1%2INC").arg(m_major).arg(m_minor).toLatin1()); if (!rvctInclude.isEmpty()) m_systemHeaderPaths.append(HeaderPath(rvctInclude, HeaderPath::GlobalHeaderPath)); switch (m_type) { @@ -196,17 +238,9 @@ QList RVCTToolChain::systemHeaderPaths() return m_systemHeaderPaths; } -static inline QStringList headerPathToStringList(const QList &hl) -{ - QStringList rc; - foreach(const ProjectExplorer::HeaderPath &hp, hl) - rc.push_back(hp.path()); - return rc; -} - // Expand an RVCT variable, such as RVCT22BIN, by some new values void RVCTToolChain::addToRVCTPathVariable(const QString &postfix, const QStringList &values, - Utils::Environment &env) const + Utils::Environment &env) const { // get old values const QChar separator = QLatin1Char(','); @@ -240,6 +274,17 @@ QStringList RVCTToolChain::libPaths() void RVCTToolChain::addToEnvironment(Utils::Environment &env) { updateVersion(); + + // Push additional configuration variables for the compiler through: + QStringList additionalVariables = configuredEnvironment(); + foreach (const QString &var, additionalVariables) { + int pos = var.indexOf(QLatin1Char('=')); + Q_ASSERT(pos >= 0); + const QString key = var.left(pos); + const QString value = var.mid(pos + 1); + env.set(key, value); + } + switch (m_type) { case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: { m_mixin.addGnuPocToEnvironment(&env); @@ -250,24 +295,31 @@ void RVCTToolChain::addToEnvironment(Utils::Environment &env) addToRVCTPathVariable(QLatin1String("LIB"), libPaths() + m_mixin.gnuPocRvctLibPaths(5, true), env); - // Add rvct to path and set locale to 'C' - const QString binPath = rvctBinPath(); - if (!binPath.isEmpty()) - env.prependOrSetPath(binPath); - env.set(QLatin1String("LANG"), QString(QLatin1Char('C'))); - } + } break; default: m_mixin.addEpocToEnvironment(&env); break; } - // we currently support RVCT v2.2 only: - env.set(QLatin1String("QT_RVCT_VERSION"), QLatin1String("2.2")); + + const QString binPath = rvctBinPath(); + env.set(rvctBinEnvironmentVariable(), QDir::toNativeSeparators(binPath)); + + // Add rvct to path and set locale to 'C' + if (!binPath.isEmpty()) + env.prependOrSetPath(binPath); + env.set(QLatin1String("LANG"), QString(QLatin1Char('C'))); + + env.set(QLatin1String("QT_RVCT_VERSION"), QString::fromLatin1("%1.%2").arg(m_major).arg(m_minor)); } QString RVCTToolChain::makeCommand() const { +#if defined(Q_OS_WIN) + return QLatin1String("make.exe"); +#else return QLatin1String("make"); +#endif } ProjectExplorer::IOutputParser *RVCTToolChain::outputParser() const @@ -275,11 +327,71 @@ ProjectExplorer::IOutputParser *RVCTToolChain::outputParser() const return new RvctParser; } -bool RVCTToolChain::equals(const ToolChain *otherIn) const +// ========================================================================== +// RVCT2ToolChain +// ========================================================================== + +RVCT2ToolChain::RVCT2ToolChain(const S60Devices::Device &device, ProjectExplorer::ToolChainType type) : + RVCTToolChain(device, type) +{ } + +QByteArray RVCT2ToolChain::rvctBinEnvironmentVariable() +{ + return rvctBinEnvironmentVariableForVersion(2); +} + +QByteArray RVCT2ToolChain::predefinedMacros() +{ + QByteArray result = RVCTToolChain::predefinedMacros(); + result.append(QString::fromLatin1("#define __arm__arm__\n" + "#define __ARMCC_VERSION %1%2%3%4\n" + "#define c_plusplus\n" + ) + .arg(m_major, 1, 10, QLatin1Char('0')) + .arg(m_minor, 1, 10, QLatin1Char('0')) + .arg("0") + .arg(m_build, 3, 10, QLatin1Char('0')).toLatin1()); + return result; +} + +bool RVCT2ToolChain::equals(const ToolChain *otherIn) const { if (otherIn->type() != type()) return false; - const RVCTToolChain *other = static_cast(otherIn); + const RVCT2ToolChain *other = static_cast(otherIn); return other->m_mixin == m_mixin; } +// ========================================================================== +// RVCT4ToolChain +// ========================================================================== + +RVCT4ToolChain::RVCT4ToolChain(const S60Devices::Device &device, + ProjectExplorer::ToolChainType type) : + RVCT2ToolChain(device, type) +{ } + +QByteArray RVCT4ToolChain::rvctBinEnvironmentVariable() +{ + return rvctBinEnvironmentVariableForVersion(4); +} + +QByteArray RVCT4ToolChain::predefinedMacros() +{ + QByteArray result = RVCTToolChain::predefinedMacros(); + result.append(QString::fromLatin1("#define __arm__\n" + "#define __ARMCC_VERSION %1%2%3\n") + .arg(m_major, 1, 10, QLatin1Char('0')) + .arg(m_minor, 1, 10, QLatin1Char('0')) + .arg(m_build, 3, 10, QLatin1Char('0')).toLatin1()); + return result; +} + + +bool RVCT4ToolChain::equals(const ToolChain *otherIn) const +{ + if (otherIn->type() != type()) + return false; + const RVCT4ToolChain *other = static_cast(otherIn); + return other->m_mixin == m_mixin; +} diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h index fcf6990cb6..acf73aafcd 100644 --- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h +++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h @@ -37,33 +37,45 @@ namespace Qt4ProjectManager { namespace Internal { +// ========================================================================== +// RVCTToolChain +// ========================================================================== + class RVCTToolChain : public ProjectExplorer::ToolChain { public: explicit RVCTToolChain(const S60Devices::Device &device, ProjectExplorer::ToolChainType type); - virtual QByteArray predefinedMacros(); + QByteArray predefinedMacros(); QList systemHeaderPaths(); void addToEnvironment(Utils::Environment &env); ProjectExplorer::ToolChainType type() const; QString makeCommand() const; ProjectExplorer::IOutputParser *outputParser() const; + static QSet > configuredRvctVersions(); + // Return the environment variable indicating the RVCT version - // 'RVCTBIN' and its setting - static QByteArray rvctBinEnvironmentVariable(); - static QString rvctBinPath(); - static QString rvctBinary(); + // 'RVCT2BIN' and its setting + virtual QByteArray rvctBinEnvironmentVariable() = 0; + + QString rvctBinPath(); + QString rvctBinary(); protected: - bool equals(const ToolChain *other) const; + bool equals(const ToolChain *other) const = 0; -private: + QStringList configuredEnvironment(); + + QByteArray rvctBinEnvironmentVariableForVersion(int major); void addToRVCTPathVariable(const QString &postfix, const QStringList &values, Utils::Environment &env) const; - static QStringList libPaths(); + QStringList libPaths(); void updateVersion(); + QByteArray m_predefinedMacros; + QList m_systemHeaderPaths; + const S60ToolChainMixin m_mixin; const ProjectExplorer::ToolChainType m_type; bool m_versionUpToDate; @@ -71,8 +83,44 @@ private: int m_minor; int m_build; - QByteArray m_predefinedMacros; - QList m_systemHeaderPaths; +private: + QString m_binPath; + QStringList m_additionalEnvironment; +}; + +// ========================================================================== +// RVCT2ToolChain +// ========================================================================== + +class RVCT2ToolChain : public RVCTToolChain +{ +public: + explicit RVCT2ToolChain(const S60Devices::Device &device, + ProjectExplorer::ToolChainType type); + QByteArray rvctBinEnvironmentVariable(); + + QByteArray predefinedMacros(); + +protected: + bool equals(const ToolChain *other) const; +}; + +// ========================================================================== +// RVCT4ToolChain +// ========================================================================== + +class RVCT4ToolChain : public RVCT2ToolChain +{ +public: + explicit RVCT4ToolChain(const S60Devices::Device &device, + ProjectExplorer::ToolChainType type); + + QByteArray rvctBinEnvironmentVariable(); + + QByteArray predefinedMacros(); + +protected: + bool equals(const ToolChain *other) const; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp index d6e441d7a8..dbd96d8be9 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp @@ -244,6 +244,7 @@ QString S60DeployConfiguration::symbianPlatform() const case ProjectExplorer::ToolChain_GCCE_GNUPOC: return QLatin1String("gcce"); case ProjectExplorer::ToolChain_RVCT2_ARMV5: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: return QLatin1String("armv5"); default: // including ProjectExplorer::RVCT_ARMV6_GNUPOC: return QLatin1String("armv6"); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index e0aea88467..8216de7247 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -190,6 +190,8 @@ bool S60DeviceRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *c case ProjectExplorer::ToolChain_GCCE: case ProjectExplorer::ToolChain_RVCT2_ARMV5: case ProjectExplorer::ToolChain_RVCT2_ARMV6: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: + case ProjectExplorer::ToolChain_RVCT4_ARMV6: case ProjectExplorer::ToolChain_GCCE_GNUPOC: case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: return true; @@ -282,6 +284,7 @@ static inline QString symbianPlatformForToolChain(ProjectExplorer::ToolChainType case ProjectExplorer::ToolChain_GCCE_GNUPOC: return QLatin1String("gcce"); case ProjectExplorer::ToolChain_RVCT2_ARMV5: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: return QLatin1String("armv5"); default: // including ProjectExplorer::RVCT_ARMV6_GNUPOC: break; diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp index 128f105c75..6ab58d9ee2 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp @@ -141,9 +141,14 @@ S60Manager::~S60Manager() } } -bool S60Manager::hasRvctCompiler() +bool S60Manager::hasRvct2Compiler() { - return !RVCTToolChain::rvctBinEnvironmentVariable().isEmpty(); + return RVCT2ToolChain::configuredRvctVersions().contains(qMakePair(2, 2)); +} + +bool S60Manager::hasRvct4Compiler() +{ + return RVCT2ToolChain::configuredRvctVersions().contains(qMakePair(2, 2)); } void S60Manager::addAutoReleasedObject(QObject *o) @@ -237,7 +242,14 @@ ProjectExplorer::ToolChain *S60Manager::createRVCTToolChain( ProjectExplorer::ToolChainType type) const { Q_ASSERT(version); - return new RVCTToolChain(deviceForQtVersion(version), type); + if (type == ProjectExplorer::ToolChain_RVCT2_ARMV5 + || type == ProjectExplorer::ToolChain_RVCT2_ARMV6 + || type == ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC) + return new RVCT2ToolChain(deviceForQtVersion(version), type); + if (type == ProjectExplorer::ToolChain_RVCT4_ARMV5 + || type == ProjectExplorer::ToolChain_RVCT4_ARMV6) + return new RVCT4ToolChain(deviceForQtVersion(version), type); + return 0; } S60Devices::Device S60Manager::deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.h b/src/plugins/qt4projectmanager/qt-s60/s60manager.h index 30922f997a..2f1ce0af99 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60manager.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.h @@ -63,7 +63,8 @@ public: S60Devices::Device deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const; QString deviceIdFromDetectionSource(const QString &autoDetectionSource) const; - static bool hasRvctCompiler(); + static bool hasRvct2Compiler(); + static bool hasRvct4Compiler(); private slots: void updateQtVersions(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index f05f3ae10a..f38491e0be 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -325,8 +325,10 @@ QString Qt4BuildConfiguration::defaultMakeTarget() const case ProjectExplorer::ToolChain_GCCE: return symbianMakeTarget(buildConfig, QLatin1String("gcce")); case ProjectExplorer::ToolChain_RVCT2_ARMV5: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: return symbianMakeTarget(buildConfig, QLatin1String("armv5")); case ProjectExplorer::ToolChain_RVCT2_ARMV6: + case ProjectExplorer::ToolChain_RVCT4_ARMV6: return symbianMakeTarget(buildConfig, QLatin1String("armv6")); case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: case ProjectExplorer::ToolChain_GCCE_GNUPOC: diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 784d54781d..e9b05be6c0 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -150,7 +150,8 @@ bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configu enabled = true; break; case ProjectExplorer::ToolChain_WINSCW: case ProjectExplorer::ToolChain_GCCE: - case ProjectExplorer::ToolChain_RVCT2_ARMV5: case ProjectExplorer::ToolChain_RVCT2_ARMV6: + case ProjectExplorer::ToolChain_RVCT2_ARMV5: case ProjectExplorer::ToolChain_RVCT2_ARMV6: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: case ProjectExplorer::ToolChain_RVCT4_ARMV6: case ProjectExplorer::ToolChain_GCC_MAEMO: enabled = false; break; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 0dbaa46817..4684421c48 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -1428,9 +1428,12 @@ void QtVersion::updateToolChainAndMkspec() const # ifdef Q_OS_WIN m_targetIds.insert(QLatin1String(Constants::S60_DEVICE_TARGET_ID)); m_toolChains << ToolChainPtr(s60mgr->createGCCEToolChain(this)); - if (S60Manager::hasRvctCompiler()) + if (S60Manager::hasRvct2Compiler()) m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT2_ARMV5)) << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT2_ARMV6)); + if (S60Manager::hasRvct4Compiler()) + m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT4_ARMV5)) + << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT4_ARMV6)); if (!mwcDirectory().isEmpty()) { m_toolChains << ToolChainPtr(s60mgr->createWINSCWToolChain(this)); m_targetIds.insert(QLatin1String(Constants::S60_EMULATOR_TARGET_ID)); @@ -1704,6 +1707,8 @@ bool QtVersion::supportsBinaryDebuggingHelper() const case ProjectExplorer::ToolChain_GCCE : case ProjectExplorer::ToolChain_RVCT2_ARMV5: case ProjectExplorer::ToolChain_RVCT2_ARMV6: + case ProjectExplorer::ToolChain_RVCT4_ARMV5: + case ProjectExplorer::ToolChain_RVCT4_ARMV6: case ProjectExplorer::ToolChain_GCCE_GNUPOC: case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: case ProjectExplorer::ToolChain_INVALID: -- 2.11.0