From fe92b40f458b88cfbe399d70f600d16a5720f2da Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Wed, 5 Aug 2009 17:06:52 +0200
Subject: [PATCH] Start on rvct support.

It works, except that the code model doesn't get the rvct include
directories and defines yet. And you need to have everything for
rvct set up in your environment.
---
 src/plugins/projectexplorer/toolchain.h       |   2 +
 .../qt-s60/gccetoolchain.cpp                  |  14 +--
 .../qt4projectmanager/qt-s60/qt-s60.pri       |  12 +-
 .../qt-s60/rvcttoolchain.cpp                  | 106 ++++++++++++++++++
 .../qt4projectmanager/qt-s60/rvcttoolchain.h  |  71 ++++++++++++
 .../qt-s60/s60devicerunconfiguration.cpp      |   2 +-
 .../qt4projectmanager/qt-s60/s60manager.cpp   |  18 +++
 .../qt4projectmanager/qt-s60/s60manager.h     |   2 +
 src/plugins/qt4projectmanager/qt4project.cpp  |   4 +
 .../qt4projectconfigwidget.cpp                |  20 ++--
 .../qt4projectmanager/qt4runconfiguration.cpp |   5 +-
 .../qt4projectmanager/qtversionmanager.cpp    |   8 +-
 12 files changed, 241 insertions(+), 23 deletions(-)
 create mode 100644 src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
 create mode 100644 src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h

diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 7c6033b5dce..c741d535441 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -77,6 +77,8 @@ public:
 #ifdef QTCREATOR_WITH_S60
         WINSCW = 5,
         GCCE = 6,
+        RVCT_ARMV5 = 7,
+        RVCT_ARMV6 = 8,
 #endif
         OTHER = 200,
         UNKNOWN = 201,
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
index 89e0458aed7..ed8f4ae54f8 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
@@ -30,8 +30,6 @@
 #include "gccetoolchain.h"
 #include "qt4project.h"
 
-#include <coreplugin/icore.h>
-
 #include <QtCore/QDir>
 #include <QtDebug>
 
@@ -58,11 +56,13 @@ ToolChain::ToolChainType GCCEToolChain::type() const
 
 QList<HeaderPath> GCCEToolChain::systemHeaderPaths()
 {
-    GccToolChain::systemHeaderPaths();
-    m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
-    m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
-    m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis\\sys").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
-    m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\variant").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+    if (m_systemHeaderPaths.isEmpty()) {
+        GccToolChain::systemHeaderPaths();
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis\\sys").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\variant").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+    }
     return m_systemHeaderPaths;
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri b/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
index b367a21a9f7..7fd0b718b08 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
+++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
@@ -1,5 +1,5 @@
 SUPPORT_QT_S60 = $$(QTCREATOR_WITH_S60)
-!isEmpty(SUPPORT_QT_S60) {
+!isEmpty(SUPPORT_QT_S60) { 
     message("Adding experimental support for Qt/S60 applications.")
     DEFINES += QTCREATOR_WITH_S60
     SOURCES += $$PWD/s60devices.cpp \
@@ -9,7 +9,8 @@ SUPPORT_QT_S60 = $$(QTCREATOR_WITH_S60)
         $$PWD/gccetoolchain.cpp \
         $$PWD/s60emulatorrunconfiguration.cpp \
         $$PWD/s60devicerunconfiguration.cpp \
-        $$PWD/serialdevicelister.cpp
+        $$PWD/serialdevicelister.cpp \
+        $$PWD/rvcttoolchain.cpp
     HEADERS += $$PWD/s60devices.h \
         $$PWD/s60devicespreferencepane.h \
         $$PWD/s60manager.h \
@@ -17,10 +18,9 @@ SUPPORT_QT_S60 = $$(QTCREATOR_WITH_S60)
         $$PWD/gccetoolchain.h \
         $$PWD/s60emulatorrunconfiguration.h \
         $$PWD/s60devicerunconfiguration.h \
-        $$PWD/serialdevicelister.h
+        $$PWD/serialdevicelister.h \
+        $$PWD/rvcttoolchain.h
     FORMS += $$PWD/s60devicespreferencepane.ui
     OTHER_FILES += $$PWD/qt-s60-todo.txt
-
-    include($$PWD/../../../../tests/manual/trk/trklauncher.pri) || error("could not include trklauncher.pri")
-    # LIBS += -lUser32 -lSetupApi
+    include($$PWD/../../../../tests/manual/trk/trklauncher.pri)||error("could not include trklauncher.pri")
 }
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
new file mode 100644
index 00000000000..459d8835bfc
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
@@ -0,0 +1,106 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://www.qtsoftware.com/contact.
+**
+**************************************************************************/
+
+#include "rvcttoolchain.h"
+
+#include "qt4project.h"
+
+using namespace ProjectExplorer;
+using namespace Qt4ProjectManager::Internal;
+
+RVCTToolChain::RVCTToolChain(S60Devices::Device device, ToolChain::ToolChainType type,
+                             const QString &makeTargetBase)
+    : m_deviceId(device.id),
+    m_deviceName(device.name),
+    m_deviceRoot(device.epocRoot),
+    m_type(type),
+    m_makeTargetBase(makeTargetBase)
+{
+}
+
+ToolChain::ToolChainType RVCTToolChain::type() const
+{
+    return m_type;
+}
+
+QByteArray RVCTToolChain::predefinedMacros()
+{
+    //TODO
+    return QByteArray();
+}
+
+QList<HeaderPath> RVCTToolChain::systemHeaderPaths()
+{
+    if (m_systemHeaderPaths.isEmpty()) {
+        //TODO system header paths (from environment variables?)
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\stdapis\\sys").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+        m_systemHeaderPaths.append(HeaderPath(QString("%1\\epoc32\\include\\variant").arg(m_deviceRoot), HeaderPath::GlobalHeaderPath));
+    }
+    return m_systemHeaderPaths;
+}
+
+void RVCTToolChain::addToEnvironment(ProjectExplorer::Environment &env)
+{
+    env.prependOrSetPath(QString("%1\\epoc32\\tools").arg(m_deviceRoot)); // e.g. make.exe
+    env.prependOrSetPath(QString("%1\\epoc32\\gcc\\bin").arg(m_deviceRoot)); // e.g. gcc.exe
+    env.set("EPOCDEVICE", QString("%1:%2").arg(m_deviceId, m_deviceName));
+    env.set("EPOCROOT", S60Devices::cleanedRootPath(m_deviceRoot));
+}
+
+QString RVCTToolChain::makeCommand() const
+{
+    return "make";
+}
+
+QString RVCTToolChain::defaultMakeTarget() const
+{
+    const Qt4Project *qt4project = qobject_cast<const Qt4Project *>(m_project);
+    if (qt4project) {
+        if (!(QtVersion::QmakeBuildConfig(qt4project->value(
+                qt4project->activeBuildConfiguration(),
+                "buildConfiguration").toInt()) & QtVersion::DebugBuild)) {
+            return QString::fromLocal8Bit("release-%1").arg(m_makeTargetBase);
+        }
+    }
+    return QString::fromLocal8Bit("debug-%1").arg(m_makeTargetBase);
+}
+
+bool RVCTToolChain::equals(ToolChain *other) const
+{
+    return (other->type() == type()
+            && m_deviceId == static_cast<RVCTToolChain *>(other)->m_deviceId
+            && m_deviceName == static_cast<RVCTToolChain *>(other)->m_deviceName);
+}
+
+void RVCTToolChain::setProject(const ProjectExplorer::Project *project)
+{
+    m_project = project;
+}
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h
new file mode 100644
index 00000000000..8c82cfb32d8
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h
@@ -0,0 +1,71 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://www.qtsoftware.com/contact.
+**
+**************************************************************************/
+
+#ifndef RVCTTOOLCHAIN_H
+#define RVCTTOOLCHAIN_H
+
+#include "s60devices.h"
+
+#include <projectexplorer/toolchain.h>
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+class RVCTToolChain : public ProjectExplorer::ToolChain
+{
+public:
+    RVCTToolChain(S60Devices::Device device, ProjectExplorer::ToolChain::ToolChainType type,
+                  const QString &makeTargetBase);
+    virtual QByteArray predefinedMacros();
+    QList<ProjectExplorer::HeaderPath> systemHeaderPaths();
+    void addToEnvironment(ProjectExplorer::Environment &env);
+    ProjectExplorer::ToolChain::ToolChainType type() const;
+    QString makeCommand() const;
+    QString defaultMakeTarget() const;
+
+    void setProject(const ProjectExplorer::Project *project);
+
+protected:
+    bool equals(ToolChain *other) const;
+
+private:
+    QString m_deviceId;
+    QString m_deviceName;
+    QString m_deviceRoot;
+    const ProjectExplorer::Project *m_project;
+    ProjectExplorer::ToolChain::ToolChainType m_type;
+    QString m_makeTargetBase;
+    QByteArray m_predefinedMacros;
+    QList<ProjectExplorer::HeaderPath> m_systemHeaderPaths;
+};
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
+
+#endif // RVCTTOOLCHAIN_H
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index 13a145aedb2..0141f4e39aa 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -82,7 +82,7 @@ bool S60DeviceRunConfiguration::isEnabled() const
     Qt4Project *pro = qobject_cast<Qt4Project*>(project());
     QTC_ASSERT(pro, return false);
     ToolChain::ToolChainType type = pro->toolChainType(pro->activeBuildConfiguration());
-    return type == ToolChain::GCCE; //TODO || type == ToolChain::ARMV5
+    return type == ToolChain::GCCE || type == ToolChain::RVCT_ARMV5 || type == ToolChain::RVCT_ARMV6;
 }
 
 QWidget *S60DeviceRunConfiguration::configurationWidget()
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
index 614a86c4215..831357e8d29 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
@@ -33,6 +33,7 @@
 #include "s60devicespreferencepane.h"
 #include "winscwtoolchain.h"
 #include "gccetoolchain.h"
+#include "rvcttoolchain.h"
 #include "s60emulatorrunconfiguration.h"
 #include "s60Devicerunconfiguration.h"
 
@@ -156,6 +157,23 @@ ProjectExplorer::ToolChain *S60Manager::createGCCEToolChain(const Qt4ProjectMana
     return new GCCEToolChain(deviceForQtVersion(version));
 }
 
+ProjectExplorer::ToolChain *S60Manager::createRVCTToolChain(const Qt4ProjectManager::QtVersion *version,
+                                                ProjectExplorer::ToolChain::ToolChainType type) const
+{
+    QString makeTargetBase;
+    switch (type) {
+    case ProjectExplorer::ToolChain::RVCT_ARMV5:
+        makeTargetBase = "armv5";
+        break;
+    case ProjectExplorer::ToolChain::RVCT_ARMV6:
+        makeTargetBase = "armv6";
+        break;
+    default:
+        makeTargetBase = "InternalError";
+    }
+    return new RVCTToolChain(deviceForQtVersion(version), type, makeTargetBase);
+}
+
 S60Devices::Device S60Manager::deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const
 {
     S60Devices::Device device;
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.h b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
index 3704771bcd9..963e18777c2 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
@@ -58,6 +58,8 @@ public:
 
     ProjectExplorer::ToolChain *createWINSCWToolChain(const Qt4ProjectManager::QtVersion *version) const;
     ProjectExplorer::ToolChain *createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const;
+    ProjectExplorer::ToolChain *createRVCTToolChain(const Qt4ProjectManager::QtVersion *version,
+                                                    ProjectExplorer::ToolChain::ToolChainType type) const;
 
     S60Devices *devices() const { return m_devices; }
     S60Devices::Device deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const;
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 54fdded94fe..3c31917f4e7 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -45,6 +45,7 @@
 
 #ifdef QTCREATOR_WITH_S60
 #include "qt-s60/gccetoolchain.h"
+#include "qt-s60/rvcttoolchain.h"
 #endif
 
 #include <coreplugin/icore.h>
@@ -406,6 +407,9 @@ void Qt4Project::updateToolChain(const QString &buildConfiguration) const
 #ifdef QTCREATOR_WITH_S60
     if (m_toolChain && m_toolChain->type() == ToolChain::GCCE) {
         static_cast<GCCEToolChain *>(m_toolChain)->setProject(this);
+    } else if (m_toolChain && (m_toolChain->type() == ToolChain::RVCT_ARMV5
+                               || m_toolChain->type() == ToolChain::RVCT_ARMV6)) {
+        static_cast<RVCTToolChain *>(m_toolChain)->setProject(this);
     }
 #endif
 }
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 8196631d0b6..7630d826624 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -324,26 +324,32 @@ void Qt4ProjectConfigWidget::updateToolChainCombo()
     foreach (ProjectExplorer::ToolChain::ToolChainType toolchain, toolchains) {
         switch (toolchain) {
         case ProjectExplorer::ToolChain::GCC:
-            m_ui->toolChainComboBox->addItem(tr("gcc"), qVariantFromValue(ProjectExplorer::ToolChain::GCC));
+            m_ui->toolChainComboBox->addItem(tr("gcc"), qVariantFromValue(toolchain));
             break;
         case ProjectExplorer::ToolChain::LinuxICC:
-            m_ui->toolChainComboBox->addItem(tr("icc"), qVariantFromValue(ProjectExplorer::ToolChain::LinuxICC));
+            m_ui->toolChainComboBox->addItem(tr("icc"), qVariantFromValue(toolchain));
             break;
         case ProjectExplorer::ToolChain::MinGW:
-            m_ui->toolChainComboBox->addItem(tr("mingw"), qVariantFromValue(ProjectExplorer::ToolChain::MinGW));
+            m_ui->toolChainComboBox->addItem(tr("mingw"), qVariantFromValue(toolchain));
             break;
         case ProjectExplorer::ToolChain::MSVC:
-            m_ui->toolChainComboBox->addItem(tr("msvc"), qVariantFromValue(ProjectExplorer::ToolChain::MSVC));
+            m_ui->toolChainComboBox->addItem(tr("msvc"), qVariantFromValue(toolchain));
             break;
         case ProjectExplorer::ToolChain::WINCE:
-            m_ui->toolChainComboBox->addItem(tr("wince"), qVariantFromValue(ProjectExplorer::ToolChain::WINCE));
+            m_ui->toolChainComboBox->addItem(tr("wince"), qVariantFromValue(toolchain));
             break;
 #ifdef QTCREATOR_WITH_S60
         case ProjectExplorer::ToolChain::WINSCW:
-            m_ui->toolChainComboBox->addItem(tr("winscw"), qVariantFromValue(ProjectExplorer::ToolChain::WINSCW));
+            m_ui->toolChainComboBox->addItem(tr("winscw"), qVariantFromValue(toolchain));
             break;
         case ProjectExplorer::ToolChain::GCCE:
-            m_ui->toolChainComboBox->addItem(tr("gcce"), qVariantFromValue(ProjectExplorer::ToolChain::GCCE));
+            m_ui->toolChainComboBox->addItem(tr("gcce"), qVariantFromValue(toolchain));
+            break;
+        case ProjectExplorer::ToolChain::RVCT_ARMV5:
+            m_ui->toolChainComboBox->addItem(tr("rvct - armv5"), qVariantFromValue(toolchain));
+            break;
+        case ProjectExplorer::ToolChain::RVCT_ARMV6:
+            m_ui->toolChainComboBox->addItem(tr("rvct - armv6"), qVariantFromValue(toolchain));
             break;
 #endif
         case ProjectExplorer::ToolChain::OTHER:
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index 06aee2bd5b3..df24a8c15c6 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -100,7 +100,10 @@ bool Qt4RunConfiguration::isEnabled() const
     Qt4Project *pro = qobject_cast<Qt4Project*>(project());
     QTC_ASSERT(pro, return false);
     ProjectExplorer::ToolChain::ToolChainType type = pro->toolChainType(pro->activeBuildConfiguration());
-    return type != ProjectExplorer::ToolChain::WINSCW && type != ProjectExplorer::ToolChain::GCCE;
+    return type != ProjectExplorer::ToolChain::WINSCW
+            && type != ProjectExplorer::ToolChain::GCCE
+            && type != ProjectExplorer::ToolChain::RVCT_ARMV5
+            && type != ProjectExplorer::ToolChain::RVCT_ARMV6;
 #else
     return true;
 #endif
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 9357c50a4fa..07e5a33bea0 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -997,6 +997,9 @@ ProjectExplorer::ToolChain *QtVersion::createToolChain(ProjectExplorer::ToolChai
         tempToolchain = S60Manager::instance()->createWINSCWToolChain(this);
     } else if (type == ProjectExplorer::ToolChain::GCCE) {
         tempToolchain = S60Manager::instance()->createGCCEToolChain(this);
+    } else if (type == ProjectExplorer::ToolChain::RVCT_ARMV5
+               || type == ProjectExplorer::ToolChain::RVCT_ARMV6) {
+        tempToolchain = S60Manager::instance()->createRVCTToolChain(this, type);
 #endif
     } else {
         qDebug()<<"Could not create ToolChain for"<<mkspec();
@@ -1087,7 +1090,10 @@ QList<ProjectExplorer::ToolChain::ToolChainType> QtVersion::possibleToolChainTyp
         toolChains << ProjectExplorer::ToolChain::LinuxICC;
 #ifdef QTCREATOR_WITH_S60
     else if (spec.contains("symbian-abld"))
-        toolChains << ProjectExplorer::ToolChain::GCCE << ProjectExplorer::ToolChain::WINSCW;
+        toolChains << ProjectExplorer::ToolChain::GCCE
+                << ProjectExplorer::ToolChain::RVCT_ARMV5
+                << ProjectExplorer::ToolChain::RVCT_ARMV6
+                << ProjectExplorer::ToolChain::WINSCW;
 #endif
     else
         toolChains << ProjectExplorer::ToolChain::GCC;
-- 
GitLab