diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 8e7aac5d0e7bb7f16283aa3d3aefffa66edd9bd8..a7ed541148934cbd45b5411975db7a2c9cd7e182 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -34,6 +34,7 @@
 #include "cmaketarget.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/buildsteplist.h>
 #include <utils/qtcassert.h>
 
@@ -102,11 +103,11 @@ QString CMakeBuildConfiguration::buildDirectory() const
     return m_buildDirectory;
 }
 
-ProjectExplorer::ToolChain::ToolChainType CMakeBuildConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType CMakeBuildConfiguration::toolChainType() const
 {
     if (m_toolChain)
         return m_toolChain->type();
-    return ProjectExplorer::ToolChain::UNKNOWN;
+    return ProjectExplorer::ToolChain_UNKNOWN;
 }
 
 ProjectExplorer::ToolChain *CMakeBuildConfiguration::toolChain() const
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index ba13d14c66b15002f9351bdade2372c5f1419680..4eba56139091f292906364b8996bee38a92c4792 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -31,7 +31,11 @@
 #define CMAKEBUILDCONFIGURATION_H
 
 #include <projectexplorer/buildconfiguration.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
+
+namespace ProjectExplorer {
+class ToolChain;
+}
 
 namespace CMakeProjectManager {
 namespace Internal {
@@ -52,7 +56,7 @@ public:
 
     virtual QString buildDirectory() const;
 
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    ProjectExplorer::ToolChainType toolChainType() const;
     ProjectExplorer::ToolChain *toolChain() const;
 
     void setBuildDirectory(const QString &buildDirectory);
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index a6c62ef9fccc3f91f1832326ced3686e1bb84ce9..bca4ae32ca84cd98077ff90870aa2b9069c6ec34 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -42,6 +42,7 @@
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/buildmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <cpptools/cppmodelmanagerinterface.h>
 #include <extensionsystem/pluginmanager.h>
 #include <designer/formwindoweditor.h>
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index f927b69935494ec71444e8cc6b2505b975244e15..ae0bce4b1d9d94b5a8ddd4b5e2376065b8bf3386 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -39,7 +39,6 @@
 #include <projectexplorer/project.h>
 #include <projectexplorer/projectnodes.h>
 #include <projectexplorer/buildstep.h>
-#include <projectexplorer/toolchain.h>
 #include <projectexplorer/filewatcher.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <coreplugin/ifile.h>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 12605ea0ed828fd3e6dc781a0048027bef2aedd2..1ca0806c747d9c79a575b7d444062fc86963f13a 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -305,11 +305,11 @@ void CMakeRunConfiguration::setUserEnvironmentChanges(const QList<Utils::Environ
     }
 }
 
-ProjectExplorer::ToolChain::ToolChainType CMakeRunConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType CMakeRunConfiguration::toolChainType() const
 {
     CMakeBuildConfiguration *bc = activeBuildConfiguration();
     if (!bc)
-        return ProjectExplorer::ToolChain::UNKNOWN;
+        return ProjectExplorer::ToolChain_UNKNOWN;
     return bc->toolChainType();
 }
 
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index e5ccffeadfc5e5828889740ddedca9ef4e490a54..8a84f0dc11a03b76216824dbddd1ebac8eb8c3d0 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -79,7 +79,7 @@ public:
 
     QString dumperLibrary() const;
     QStringList dumperLibraryLocations() const;
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    ProjectExplorer::ToolChainType toolChainType() const;
 
     QVariantMap toMap() const;
 
diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index bc820b5da265379965333a2009896eba0e5566e8..5689bcdbba6d79d749b587746e3574415674669d 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -35,6 +35,7 @@
 #include "cmakebuildconfiguration.h"
 
 #include <projectexplorer/buildsteplist.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/gnumakeparser.h>
 
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 5aa2146bdd286050133f42c4a383f8abd22674b3..0f6d45076ac06b948018f44ae7a3e84d9b867fcb 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -1741,14 +1741,14 @@ void addCdbOptionPages(QList<Core::IOptionsPage *> *opts)
 
 bool checkCdbConfiguration(int toolChainI, QString *errorMsg, QString *settingsPage)
 {
-    const ProjectExplorer::ToolChain::ToolChainType toolChain = static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChainI);
+    const ProjectExplorer::ToolChainType toolChain = static_cast<ProjectExplorer::ToolChainType>(toolChainI);
     switch (toolChain) {
-    case ProjectExplorer::ToolChain::MinGW: // Do our best
-    case ProjectExplorer::ToolChain::MSVC:
-    case ProjectExplorer::ToolChain::WINCE:
-    case ProjectExplorer::ToolChain::OTHER:
-    case ProjectExplorer::ToolChain::UNKNOWN:
-    case ProjectExplorer::ToolChain::INVALID:
+    case ProjectExplorer::ToolChain_MinGW: // Do our best
+    case ProjectExplorer::ToolChain_MSVC:
+    case ProjectExplorer::ToolChain_WINCE:
+    case ProjectExplorer::ToolChain_OTHER:
+    case ProjectExplorer::ToolChain_UNKNOWN:
+    case ProjectExplorer::ToolChain_INVALID:
         break;
     default:
         //: %1 is something like "GCCE" or "Intel C++ Compiler (Linux)" (see ToolChain context)
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index b75a5a356d89ca79915261a1a7674e95442cf02c..cad9981dccbd581a57a6b155ba88ba5c834c6dd0 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -108,7 +108,7 @@ void DebuggerSettings::readSettings(QSettings *settings)
             if (predefinedGdb.isEmpty()) {
                 m_gdbBinaryToolChainMap.insert(binary, toolChain);
             } else {
-                const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChain));
+                const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChainType>(toolChain));
                 const QString msg =
                         QString::fromLatin1("An inconsistency has been encountered in the Ini-file '%1':\n"
                                             "Skipping gdb binary '%2' for toolchain '%3' as '%4' is already configured for it.").
@@ -121,10 +121,10 @@ void DebuggerSettings::readSettings(QSettings *settings)
 #ifdef Q_OS_UNIX
     if (m_gdbBinaryToolChainMap.isEmpty()) {
         const QString gdb = QLatin1String("gdb");
-        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
-        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
-        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
-        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
+        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain_GCC);
+        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain_LINUX_ICC);
+        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain_OTHER);
+        m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain_UNKNOWN);
     }
 #endif
 }
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 4731ce119bb88df29c0ea667419acb5643ab6c58..e8b83f5c25d0450fe815743af81422a00ea350cb 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -54,7 +54,7 @@
 #include <coreplugin/progressmanager/futureprogress.h>
 
 #include <projectexplorer/debugginghelper.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <qt4projectmanager/qt4projectmanagerconstants.h>
 
@@ -112,7 +112,7 @@ DebuggerStartParameters::DebuggerStartParameters() :
     qmlServerPort(0),
     useServerStartScript(false),
     connParams(SshConnectionParameters::NoProxy),
-    toolChainType(ToolChain::UNKNOWN),
+    toolChainType(ToolChain_UNKNOWN),
     startMode(NoStartMode),
     executableUid(0)
 {}
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 9eaeb8a20a2d44d630843e821766f99434ddfd83..9ffd6b00d80e2ebf8cd8aaccc255a8ce416b37cf 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -99,7 +99,7 @@
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/session.h>
 #include <projectexplorer/target.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <texteditor/basetexteditor.h>
 #include <texteditor/basetextmark.h>
@@ -1796,7 +1796,7 @@ void DebuggerPluginPrivate::startExternalApplication()
     // Fixme: 1 of 3 testing hacks.
     if (!sp.processArgs.isEmpty()
         && (sp.processArgs.front() == _("@tcf@") || sp.processArgs.front() == _("@sym@")))
-        sp.toolChainType = ToolChain::RVCT_ARMV5;
+        sp.toolChainType = ProjectExplorer::ToolChain_RVCT_ARMV5;
 
 
     if (RunControl *rc = m_debuggerRunControlFactory->create(sp))
@@ -1921,7 +1921,7 @@ void DebuggerPluginPrivate::startRemoteApplication()
     sp.displayName = dlg.localExecutable();
     sp.debuggerCommand = dlg.debugger(); // Override toolchain-detection.
     if (!sp.debuggerCommand.isEmpty())
-        sp.toolChainType = ToolChain::INVALID;
+        sp.toolChainType = ProjectExplorer::ToolChain_INVALID;
     sp.startMode = AttachToRemote;
     sp.useServerStartScript = dlg.useServerStartScript();
     sp.serverStartScript = dlg.serverStartScript();
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 51ab3a12498a95684209085941dff5d854b53ee9..644485d4bb6b9576a42e9ff3e459cb6225166918 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -47,6 +47,7 @@
 
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/project.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/target.h>
@@ -104,7 +105,7 @@ bool checkCdbConfiguration(int, QString *, QString *) { return false; }
 
 static QString toolChainName(int toolChainType)
 {
-    return ToolChain::toolChainName(ToolChain::ToolChainType(toolChainType));
+    return ToolChain::toolChainName(ProjectExplorer::ToolChainType(toolChainType));
 }
 
 
@@ -312,25 +313,25 @@ const DebuggerStartParameters &DebuggerRunControl::startParameters() const
 static DebuggerEngineType engineForToolChain(int toolChainType)
 {
     switch (toolChainType) {
-        case ProjectExplorer::ToolChain::LINUX_ICC:
-        case ProjectExplorer::ToolChain::MinGW:
-        case ProjectExplorer::ToolChain::GCC:
-        case ProjectExplorer::ToolChain::WINSCW: // S60
-        case ProjectExplorer::ToolChain::GCCE:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5:
-        case ProjectExplorer::ToolChain::RVCT_ARMV6:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC:
-        case ProjectExplorer::ToolChain::GCCE_GNUPOC:
-        case ProjectExplorer::ToolChain::GCC_MAEMO:
+        case ProjectExplorer::ToolChain_LINUX_ICC:
+        case ProjectExplorer::ToolChain_MinGW:
+        case ProjectExplorer::ToolChain_GCC:
+        case ProjectExplorer::ToolChain_WINSCW: // S60
+        case ProjectExplorer::ToolChain_GCCE:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5:
+        case ProjectExplorer::ToolChain_RVCT_ARMV6:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
+        case ProjectExplorer::ToolChain_GCCE_GNUPOC:
+        case ProjectExplorer::ToolChain_GCC_MAEMO:
             return GdbEngineType;
 
-        case ProjectExplorer::ToolChain::MSVC:
-        case ProjectExplorer::ToolChain::WINCE:
+        case ProjectExplorer::ToolChain_MSVC:
+        case ProjectExplorer::ToolChain_WINCE:
             return CdbEngineType;
 
-        case ProjectExplorer::ToolChain::OTHER:
-        case ProjectExplorer::ToolChain::UNKNOWN:
-        case ProjectExplorer::ToolChain::INVALID:
+        case ProjectExplorer::ToolChain_OTHER:
+        case ProjectExplorer::ToolChain_UNKNOWN:
+        case ProjectExplorer::ToolChain_INVALID:
         default:
             break;
     }
@@ -377,7 +378,7 @@ DebuggerEngineType DebuggerRunControl::engineForExecutable(unsigned enabledEngin
 
     // We need the CDB debugger in order to be able to debug VS
     // executables
-    if (checkDebugConfiguration(ToolChain::MSVC, &d->m_errorMessage, 0, &d->m_settingsIdHint)) {
+    if (checkDebugConfiguration(ProjectExplorer::ToolChain_MSVC, &d->m_errorMessage, 0, &d->m_settingsIdHint)) {
         if (enabledEngineTypes & CdbEngineType)
             return CdbEngineType;
         d->m_errorMessage = msgEngineNotAvailable("Cdb Engine");
@@ -547,19 +548,19 @@ bool DebuggerRunControl::checkDebugConfiguration(int toolChain,
         return success;
 
     switch(toolChain) {
-    case ProjectExplorer::ToolChain::GCC:
-    case ProjectExplorer::ToolChain::LINUX_ICC:
-    case ProjectExplorer::ToolChain::MinGW:
-    case ProjectExplorer::ToolChain::WINCE: // S60
-    case ProjectExplorer::ToolChain::WINSCW:
-    case ProjectExplorer::ToolChain::GCCE:
-    case ProjectExplorer::ToolChain::RVCT_ARMV5:
-    case ProjectExplorer::ToolChain::RVCT_ARMV6:
+    case ProjectExplorer::ToolChain_GCC:
+    case ProjectExplorer::ToolChain_LINUX_ICC:
+    case ProjectExplorer::ToolChain_MinGW:
+    case ProjectExplorer::ToolChain_WINCE: // S60
+    case ProjectExplorer::ToolChain_WINSCW:
+    case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV6:
         success = checkGdbConfiguration(toolChain, errorMessage, settingsPage);
         if (!success)
             *errorMessage += msgEngineNotAvailable("Gdb");
         break;
-    case ProjectExplorer::ToolChain::MSVC:
+    case ProjectExplorer::ToolChain_MSVC:
         success = checkCdbConfiguration(toolChain, errorMessage, settingsPage);
         if (!success) {
             *errorMessage += msgEngineNotAvailable("Cdb");
diff --git a/src/plugins/debugger/gdb/gdbchooserwidget.cpp b/src/plugins/debugger/gdb/gdbchooserwidget.cpp
index ec666e5ddf21c31493ead16cbdf78253e6070d5c..f84814e4b04903cd8d2fac009ce5dda33eac5c04 100644
--- a/src/plugins/debugger/gdb/gdbchooserwidget.cpp
+++ b/src/plugins/debugger/gdb/gdbchooserwidget.cpp
@@ -67,29 +67,29 @@ static QList<int> allGdbToolChains()
     QList<int> rc;
     rc
 #ifdef Q_OS_UNIX
-       << ProjectExplorer::ToolChain::GCC
-       << ProjectExplorer::ToolChain::LINUX_ICC
+       << ProjectExplorer::ToolChain_GCC
+       << ProjectExplorer::ToolChain_LINUX_ICC
 #endif
 #ifdef Q_OS_WIN
-       << ProjectExplorer::ToolChain::MinGW
-       << ProjectExplorer::ToolChain::WINSCW
-       << ProjectExplorer::ToolChain::GCCE
-       << ProjectExplorer::ToolChain::RVCT_ARMV5
-       << ProjectExplorer::ToolChain::RVCT_ARMV6
+       << ProjectExplorer::ToolChain_MinGW
+       << ProjectExplorer::ToolChain_WINSCW
+       << ProjectExplorer::ToolChain_GCCE
+       << ProjectExplorer::ToolChain_RVCT_ARMV5
+       << ProjectExplorer::ToolChain_RVCT_ARMV6
 #endif
-       << ProjectExplorer::ToolChain::GCC_MAEMO
+       << ProjectExplorer::ToolChain_GCC_MAEMO
 #ifdef Q_OS_UNIX
-       << ProjectExplorer::ToolChain::GCCE_GNUPOC
-       << ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC
+       << ProjectExplorer::ToolChain_GCCE_GNUPOC
+       << ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC
 #endif
-       << ProjectExplorer::ToolChain::OTHER
-       << ProjectExplorer::ToolChain::UNKNOWN;
+       << ProjectExplorer::ToolChain_OTHER
+       << ProjectExplorer::ToolChain_UNKNOWN;
     return rc;
 }
 
 static inline QString toolChainName(int tc)
 {
-    return ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(tc));
+    return ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChainType>(tc));
 }
 
 namespace Debugger {
@@ -424,28 +424,28 @@ ToolChainSelectorWidget::ToolChainSelectorWidget(QWidget *parent) :
     // Group checkboxes into categories
     foreach(int tc, allGdbToolChains()) {
         switch (tc) {
-        case ProjectExplorer::ToolChain::GCC:
-        case ProjectExplorer::ToolChain::LINUX_ICC:
-        case ProjectExplorer::ToolChain::MinGW:
-        case ProjectExplorer::ToolChain::OTHER:
-        case ProjectExplorer::ToolChain::UNKNOWN:
+        case ProjectExplorer::ToolChain_GCC:
+        case ProjectExplorer::ToolChain_LINUX_ICC:
+        case ProjectExplorer::ToolChain_MinGW:
+        case ProjectExplorer::ToolChain_OTHER:
+        case ProjectExplorer::ToolChain_UNKNOWN:
             desktopLayout->addWidget(createToolChainCheckBox(tc));
             break;
-        case ProjectExplorer::ToolChain::MSVC:
-        case ProjectExplorer::ToolChain::WINCE:
+        case ProjectExplorer::ToolChain_MSVC:
+        case ProjectExplorer::ToolChain_WINCE:
             break;
-        case ProjectExplorer::ToolChain::WINSCW:
-        case ProjectExplorer::ToolChain::GCCE:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5:
-        case ProjectExplorer::ToolChain::RVCT_ARMV6:
-        case ProjectExplorer::ToolChain::GCCE_GNUPOC:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC:
+        case ProjectExplorer::ToolChain_WINSCW:
+        case ProjectExplorer::ToolChain_GCCE:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5:
+        case ProjectExplorer::ToolChain_RVCT_ARMV6:
+        case ProjectExplorer::ToolChain_GCCE_GNUPOC:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
             symbianLayout->addWidget(createToolChainCheckBox(tc));
             break;
-        case ProjectExplorer::ToolChain::GCC_MAEMO:
+        case ProjectExplorer::ToolChain_GCC_MAEMO:
             maemoLayout->addWidget(createToolChainCheckBox(tc));
             break;
-        case ProjectExplorer::ToolChain::INVALID:
+        case ProjectExplorer::ToolChain_INVALID:
             break;
         }
     }
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 93ac1aa6eece03c9e7df8084b7c09ee69a6d2627..231b0cee2c33045b2de223434f58a50fea57b185 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1722,7 +1722,7 @@ int GdbEngine::currentFrame() const
 
 static inline QString msgNoBinaryForToolChain(int tc)
 {
-    const ProjectExplorer::ToolChain::ToolChainType toolChain = static_cast<ProjectExplorer::ToolChain::ToolChainType>(tc);
+    const ProjectExplorer::ToolChainType toolChain = static_cast<ProjectExplorer::ToolChainType>(tc);
     const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(toolChain);
     return GdbEngine::tr("There is no gdb binary available for '%1'").arg(toolChainName);
 }
@@ -1737,12 +1737,12 @@ AbstractGdbAdapter *GdbEngine::createAdapter()
     const DebuggerStartParameters &sp = startParameters();
     //qDebug() << "CREATE ADAPTER: " << sp.toolChainType;
     switch (sp.toolChainType) {
-        case ProjectExplorer::ToolChain::WINSCW: // S60
-        case ProjectExplorer::ToolChain::GCCE:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5:
-        case ProjectExplorer::ToolChain::RVCT_ARMV6:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC:
-        case ProjectExplorer::ToolChain::GCCE_GNUPOC:
+        case ProjectExplorer::ToolChain_WINSCW: // S60
+        case ProjectExplorer::ToolChain_GCCE:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5:
+        case ProjectExplorer::ToolChain_RVCT_ARMV6:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
+        case ProjectExplorer::ToolChain_GCCE_GNUPOC:
             // fixme: 1 of 3 testing hacks
             if (sp.processArgs.size() >= 5 && sp.processArgs.at(0) == _("@tcf@"))
                 return new TcfTrkGdbAdapter(this);
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 736b44103f80208533f72724cff2c19271b60745..f694d0e9e9a3464469c55431d6dbdffa2eb75657 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -34,7 +34,7 @@
 
 #include <utils/qtcassert.h>
 #include <utils/fancymainwindow.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <QtCore/QFileInfo>
 #include <QtGui/QMessageBox>
@@ -69,14 +69,14 @@ RemoteGdbServerAdapter::RemoteGdbServerAdapter(GdbEngine *engine, int toolChainT
 AbstractGdbAdapter::DumperHandling RemoteGdbServerAdapter::dumperHandling() const
 {
     switch (m_toolChainType) {
-    case ProjectExplorer::ToolChain::MinGW:
-    case ProjectExplorer::ToolChain::MSVC:
-    case ProjectExplorer::ToolChain::WINCE:
-    case ProjectExplorer::ToolChain::WINSCW:
-    case ProjectExplorer::ToolChain::GCCE:
-    case ProjectExplorer::ToolChain::RVCT_ARMV5:
-    case ProjectExplorer::ToolChain::RVCT_ARMV6:
-    case ProjectExplorer::ToolChain::GCC_MAEMO:
+    case ProjectExplorer::ToolChain_MinGW:
+    case ProjectExplorer::ToolChain_MSVC:
+    case ProjectExplorer::ToolChain_WINCE:
+    case ProjectExplorer::ToolChain_WINSCW:
+    case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV6:
+    case ProjectExplorer::ToolChain_GCC_MAEMO:
         return DumperLoadedByGdb;
     default:
         break;
@@ -189,7 +189,7 @@ void RemoteGdbServerAdapter::setupInferior()
 
     // This has to be issued before 'target remote'. On pre-7.0 the
     // command is not present and will result in ' No symbol table is
-    // loaded.  Use the "file" command.' as gdb tries to set the 
+    // loaded.  Use the "file" command.' as gdb tries to set the
     // value of a variable with name 'target-async'.
     //
     // Testing with -list-target-features which was introduced at
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index d0fb2088a9390ebf9647796794cc63a1c4e5b40d..f25d34c611e0234a50667ab070f9232a2fbdc69d 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -34,6 +34,7 @@
 #include "generictarget.h"
 
 #include <projectexplorer/buildsteplist.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <utils/qtcassert.h>
 
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index db8db8c5cf8613e08ee5f81763c958de6a0e6fb9..06f1521aebc5bbc0dafe115bff9bb76ca0a7955c 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -330,7 +330,7 @@ void GenericProject::setIncludePaths(const QStringList &includePaths)
 QByteArray GenericProject::defines() const
 { return m_defines; }
 
-void GenericProject::setToolChainType(ProjectExplorer::ToolChain::ToolChainType type)
+void GenericProject::setToolChainType(ProjectExplorer::ToolChainType type)
 {
     using namespace ProjectExplorer;
 
@@ -339,23 +339,23 @@ void GenericProject::setToolChainType(ProjectExplorer::ToolChain::ToolChainType
     delete m_toolChain;
     m_toolChain = 0;
 
-    if (type == ToolChain::MinGW) {
+    if (type == ToolChain_MinGW) {
         const QLatin1String qmake_cxx("g++"); // ### FIXME
         const QString mingwDirectory; // ### FIXME
 
         m_toolChain = ToolChain::createMinGWToolChain(qmake_cxx, mingwDirectory);
 
-    } else if (type == ToolChain::MSVC) {
+    } else if (type == ToolChain_MSVC) {
         const QString msvcVersion; // ### FIXME
         m_toolChain = ToolChain::createMSVCToolChain(msvcVersion, false);
 
-    } else if (type == ToolChain::WINCE) {
+    } else if (type == ToolChain_WINCE) {
         const QString msvcVersion, wincePlatform; // ### FIXME
         m_toolChain = ToolChain::createWinCEToolChain(msvcVersion, wincePlatform);
-    } else if (type == ToolChain::GCC) {
+    } else if (type == ToolChain_GCC) {
         const QLatin1String qmake_cxx("g++"); // ### FIXME
         m_toolChain = ToolChain::createGccToolChain(qmake_cxx);
-    } else if (type == ToolChain::LINUX_ICC) {
+    } else if (type == ToolChain_LINUX_ICC) {
         m_toolChain = ToolChain::createLinuxIccToolChain();
     }
 }
@@ -365,7 +365,7 @@ ProjectExplorer::ToolChain *GenericProject::toolChain() const
     return m_toolChain;
 }
 
-ProjectExplorer::ToolChain::ToolChainType GenericProject::toolChainType() const
+ProjectExplorer::ToolChainType GenericProject::toolChainType() const
 { return m_toolChainType; }
 
 QString GenericProject::displayName() const
@@ -452,8 +452,8 @@ bool GenericProject::fromMap(const QVariantMap &map)
     if (targets().isEmpty())
         addTarget(targetFactory()->create(this, QLatin1String(GENERIC_DESKTOP_TARGET_ID)));
 
-    ToolChain::ToolChainType type =
-            static_cast<ProjectExplorer::ToolChain::ToolChainType>
+    ToolChainType type =
+            static_cast<ProjectExplorer::ToolChainType>
             (map.value(QLatin1String(TOOLCHAIN_KEY), 0).toInt());
 
     setToolChainType(type);
@@ -488,8 +488,8 @@ GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericProject *project)
     using namespace ProjectExplorer;
     int index = 0;
     int selectedIndex = -1;
-    foreach (ToolChain::ToolChainType tc, ToolChain::supportedToolChains()) {
-        toolChainChooser->addItem(ToolChain::toolChainName(tc), QVariant::fromValue<ToolChain::ToolChainType>(tc));
+    foreach (ToolChainType tc, ToolChain::supportedToolChains()) {
+        toolChainChooser->addItem(ToolChain::toolChainName(tc), QVariant::fromValue<ToolChainType>(tc));
         if (m_project->toolChainType() == tc)
             selectedIndex = index;
         ++index;
@@ -522,7 +522,7 @@ void GenericBuildSettingsWidget::toolChainSelected(int index)
     using namespace ProjectExplorer;
 
     QComboBox *toolChainChooser = qobject_cast<QComboBox*>(sender());
-    ToolChain::ToolChainType type = toolChainChooser->itemData(index).value<ToolChain::ToolChainType>();
+    ToolChainType type = toolChainChooser->itemData(index).value<ToolChainType>();
     m_project->setToolChainType(type);
 }
 
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index 399b1cf1445aa836f4c21d4cce0407a871d23e87..681c487fe0f7af8031a7fcfbfc02dac38de52af6 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -38,7 +38,7 @@
 #include <projectexplorer/projectnodes.h>
 #include <projectexplorer/target.h>
 #include <projectexplorer/buildstep.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <coreplugin/ifile.h>
 
@@ -48,6 +48,10 @@ namespace Utils {
 class PathChooser;
 }
 
+namespace ProjectExplorer {
+class ToolChain;
+}
+
 namespace GenericProjectManager {
 namespace Internal {
 class GenericBuildConfiguration;
@@ -106,8 +110,8 @@ public:
     QStringList projectIncludePaths() const;
     QStringList files() const;
     QStringList generated() const;
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
-    void setToolChainType(ProjectExplorer::ToolChain::ToolChainType type);
+    ProjectExplorer::ToolChainType toolChainType() const;
+    void setToolChainType(ProjectExplorer::ToolChainType type);
 
     QVariantMap toMap() const;
 
@@ -139,7 +143,7 @@ private:
 
     GenericProjectNode *m_rootNode;
     ProjectExplorer::ToolChain *m_toolChain;
-    ProjectExplorer::ToolChain::ToolChainType m_toolChainType;
+    ProjectExplorer::ToolChainType m_toolChainType;
     QFuture<void> m_codeModelFuture;
 };
 
diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.h b/src/plugins/projectexplorer/applicationrunconfiguration.h
index 2e1229a7a961191979eb0e7992191ab4ac720b9c..49092e260a5cff3af9a819e491bb8f8e065cafd8 100644
--- a/src/plugins/projectexplorer/applicationrunconfiguration.h
+++ b/src/plugins/projectexplorer/applicationrunconfiguration.h
@@ -30,7 +30,7 @@
 #ifndef APPLICATIONRUNCONFIGURATION_H
 #define APPLICATIONRUNCONFIGURATION_H
 
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include "runconfiguration.h"
 #include "applicationlauncher.h"
@@ -58,7 +58,7 @@ public:
     virtual Utils::Environment environment() const = 0;
     virtual QString dumperLibrary() const = 0;
     virtual QStringList dumperLibraryLocations() const = 0;
-    virtual ProjectExplorer::ToolChain::ToolChainType toolChainType() const = 0;
+    virtual ProjectExplorer::ToolChainType toolChainType() const = 0;
 
 protected:
     explicit LocalApplicationRunConfiguration(Target *target, const QString &id);
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index aba161bd73e2460729cc2a723dac99df6d9714fc..6678c9458b566a8e39fa4a28c0b55551cdab7280 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -29,6 +29,7 @@
 
 #include "customexecutablerunconfiguration.h"
 #include "customexecutableconfigurationwidget.h"
+#include "toolchaintype.h"
 
 #include <coreplugin/icore.h>
 #include <projectexplorer/buildconfiguration.h>
@@ -326,9 +327,9 @@ QStringList CustomExecutableRunConfiguration::dumperLibraryLocations() const
     return ProjectExplorer::DebuggingHelperLibrary::locationsByInstallData(qtInstallData);
 }
 
-ProjectExplorer::ToolChain::ToolChainType CustomExecutableRunConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType CustomExecutableRunConfiguration::toolChainType() const
 {
-    return ProjectExplorer::ToolChain::UNKNOWN;
+    return ProjectExplorer::ToolChain_UNKNOWN;
 }
 
 // Factory
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.h b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
index b1f0abe2c7286ffca68b6461b080496a67db104f..f3287b65ba86ac8acc047f44b2df6c3d2c90afed 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.h
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
@@ -32,6 +32,8 @@
 
 #include "applicationrunconfiguration.h"
 
+#include <utils/environment.h>
+
 #include <QtCore/QVariantMap>
 
 namespace ProjectExplorer {
@@ -74,7 +76,7 @@ public:
     QString dumperLibrary() const;
     QStringList dumperLibraryLocations() const;
 
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    ProjectExplorer::ToolChainType toolChainType() const;
 
     QVariantMap toMap() const;
 
diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index f680c5a8ce407da6f233e3ce0ea0ac03aa1014e1..16ee9c4668527f9a3d895dadfb3ca909aa070c00 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -119,10 +119,10 @@ QStringList ToolChain::availableMSVCVersions(bool amd64)
     return rc;
 }
 
-QList<ToolChain::ToolChainType> ToolChain::supportedToolChains()
+QList<ToolChainType> ToolChain::supportedToolChains()
 {
-    QList<ToolChain::ToolChainType> toolChains;
-    for (int i = 0; i < LAST_VALID; ++i) {
+    QList<ToolChainType> toolChains;
+    for (int i = 0; i < ToolChain_LAST_VALID; ++i) {
         toolChains.append(ToolChainType(i));
     }
     return toolChains;
@@ -131,35 +131,35 @@ QList<ToolChain::ToolChainType> ToolChain::supportedToolChains()
 QString ToolChain::toolChainName(ToolChainType tc)
 {
     switch (tc) {
-    case GCC:
+    case ToolChain_GCC:
         return QCoreApplication::translate("ToolChain", "GCC");
-    case LINUX_ICC:
+    case ToolChain_LINUX_ICC:
         return QCoreApplication::translate("ToolChain", "Intel C++ Compiler (Linux)");
-    case MinGW:
+    case ToolChain_MinGW:
         return QString::fromLatin1("MinGW");
-    case MSVC:
+    case ToolChain_MSVC:
         return QCoreApplication::translate("ToolChain", "Microsoft Visual C++");
-    case WINCE:
+    case ToolChain_WINCE:
         return QCoreApplication::translate("ToolChain", "Windows CE");
-    case WINSCW:
+    case ToolChain_WINSCW:
         return QCoreApplication::translate("ToolChain", "WINSCW");
-    case GCCE:
+    case ToolChain_GCCE:
         return QCoreApplication::translate("ToolChain", "GCCE");
-    case GCCE_GNUPOC:
+    case ToolChain_GCCE_GNUPOC:
         return QCoreApplication::translate("ToolChain", "GCCE/GnuPoc");
-    case RVCT_ARMV5_GNUPOC:
+    case ToolChain_RVCT_ARMV5_GNUPOC:
         return QCoreApplication::translate("ToolChain", "RVCT (ARMV6)/GnuPoc");
-    case RVCT_ARMV5:
+    case ToolChain_RVCT_ARMV5:
         return QCoreApplication::translate("ToolChain", "RVCT (ARMV5)");
-    case RVCT_ARMV6:
+    case ToolChain_RVCT_ARMV6:
         return QCoreApplication::translate("ToolChain", "RVCT (ARMV6)");
-    case GCC_MAEMO:
+    case ToolChain_GCC_MAEMO:
         return QCoreApplication::translate("ToolChain", "GCC for Maemo");
-    case OTHER:
+    case ToolChain_OTHER:
         return QCoreApplication::translate("ToolChain", "Other");
-    case INVALID:
+    case ToolChain_INVALID:
         return QCoreApplication::translate("ToolChain", "<Invalid>");
-    case UNKNOWN:
+    case ToolChain_UNKNOWN:
         break;
     default:
         Q_ASSERT("Missing name for Toolchaintype");
@@ -173,9 +173,9 @@ GccToolChain::GccToolChain(const QString &gcc)
 
 }
 
-ToolChain::ToolChainType GccToolChain::type() const
+ToolChainType GccToolChain::type() const
 {
-    return ToolChain::GCC;
+    return ToolChain_GCC;
 }
 
 static QByteArray gccPredefinedMacros(const QString &gcc, const QStringList &env)
@@ -333,9 +333,9 @@ MinGWToolChain::MinGWToolChain(const QString &gcc, const QString &mingwPath)
 
 }
 
-ToolChain::ToolChainType MinGWToolChain::type() const
+ToolChainType MinGWToolChain::type() const
 {
-    return ToolChain::MinGW;
+    return ToolChain_MinGW;
 }
 
 bool MinGWToolChain::equals(const ToolChain *other) const
@@ -370,9 +370,9 @@ LinuxIccToolChain::LinuxIccToolChain()
 {
 }
 
-ToolChain::ToolChainType LinuxIccToolChain::type() const
+ToolChainType LinuxIccToolChain::type() const
 {
-    return ToolChain::LINUX_ICC;
+    return ToolChain_LINUX_ICC;
 }
 
 IOutputParser *LinuxIccToolChain::outputParser() const
@@ -587,9 +587,9 @@ MSVCToolChain::MSVCToolChain(const Installation &in) :
         qDebug() << "\nMSVCToolChain::CT\n" << m_installation;
 }
 
-ToolChain::ToolChainType MSVCToolChain::type() const
+ToolChainType MSVCToolChain::type() const
 {
-    return ToolChain::MSVC;
+    return ToolChain_MSVC;
 }
 
 bool MSVCToolChain::equals(const ToolChain *other) const
@@ -870,9 +870,9 @@ WinCEToolChain::WinCEToolChain(const Installation &in, const QString &platform)
 {
 }
 
-ToolChain::ToolChainType WinCEToolChain::type() const
+ToolChainType WinCEToolChain::type() const
 {
-    return ToolChain::WINCE;
+    return ToolChain_WINCE;
 }
 
 bool WinCEToolChain::equals(const ToolChain *other) const
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 7a633611c802a79d6bc6e5258cd2f616059da760..2f84e0ada4bd662c9ffdef1a3500e85bdbcb9319 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -31,6 +31,7 @@
 #define TOOLCHAIN_H
 
 #include "projectexplorer_export.h"
+#include "toolchaintype.h"
 
 #include <utils/environment.h>
 
@@ -73,26 +74,6 @@ private:
 class PROJECTEXPLORER_EXPORT ToolChain
 {
 public:
-    enum ToolChainType
-    {
-        GCC = 0,
-        LINUX_ICC = 1,
-        MinGW = 2,
-        MSVC = 3,
-        WINCE = 4,
-        WINSCW = 5,
-        GCCE = 6,
-        RVCT_ARMV5 = 7,
-        RVCT_ARMV6 = 8,
-        GCC_MAEMO = 9,
-        GCCE_GNUPOC = 10,
-        RVCT_ARMV5_GNUPOC = 11,
-        LAST_VALID = 11,
-        OTHER = 200,
-        UNKNOWN = 201,
-        INVALID = 202
-    };
-
     virtual QByteArray predefinedMacros() = 0;
     virtual QList<HeaderPath> systemHeaderPaths() = 0;
     virtual void addToEnvironment(Utils::Environment &env) = 0;
@@ -112,7 +93,7 @@ public:
     static ToolChain *createWinCEToolChain(const QString &name, const QString &platform);
     static QStringList availableMSVCVersions();
     static QStringList availableMSVCVersions(bool amd64); // filter 32/64bit apart
-    static QList<ToolChain::ToolChainType> supportedToolChains();
+    static QList<ToolChainType> supportedToolChains();
 
     static QString toolChainName(ToolChainType tc);
 
@@ -257,6 +238,6 @@ private:
 
 }
 
-Q_DECLARE_METATYPE(ProjectExplorer::ToolChain::ToolChainType);
+Q_DECLARE_METATYPE(ProjectExplorer::ToolChainType);
 
 #endif // TOOLCHAIN_H
diff --git a/src/plugins/projectexplorer/toolchaintype.h b/src/plugins/projectexplorer/toolchaintype.h
new file mode 100644
index 0000000000000000000000000000000000000000..695e75094af33f74664a277ce48cb376d1f07a15
--- /dev/null
+++ b/src/plugins/projectexplorer/toolchaintype.h
@@ -0,0 +1,57 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 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://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef TOOLCHAINTYPE_H
+#define TOOLCHAINTYPE_H
+
+namespace ProjectExplorer {
+
+enum ToolChainType
+{
+    ToolChain_GCC = 0,
+    ToolChain_LINUX_ICC = 1,
+    ToolChain_MinGW = 2,
+    ToolChain_MSVC = 3,
+    ToolChain_WINCE = 4,
+    ToolChain_WINSCW = 5,
+    ToolChain_GCCE = 6,
+    ToolChain_RVCT_ARMV5 = 7,
+    ToolChain_RVCT_ARMV6 = 8,
+    ToolChain_GCC_MAEMO = 9,
+    ToolChain_GCCE_GNUPOC = 10,
+    ToolChain_RVCT_ARMV5_GNUPOC = 11,
+    ToolChain_LAST_VALID = 11,
+    ToolChain_OTHER = 200,
+    ToolChain_UNKNOWN = 201,
+    ToolChain_INVALID = 202
+};
+
+} // namespace ProjectExplorer
+
+#endif // TOOLCHAINTYPE_H
diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp
index b203df0f98d1d6a87228c5c98fada3038a7c182a..bee5edfc7413ed4ebfd08024dd58869ad1233474 100644
--- a/src/plugins/projectexplorer/userfileaccessor.cpp
+++ b/src/plugins/projectexplorer/userfileaccessor.cpp
@@ -36,7 +36,7 @@
 #include "projectexplorersettings.h"
 #include "projectexplorerconstants.h"
 #include "target.h"
-#include "toolchain.h"
+#include "toolchaintype.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/mainwindow.h>
@@ -842,13 +842,13 @@ QVariantMap Version0Handler::update(Project *project, const QVariantMap &map)
         if (!ok) {
             QString toolChainName(toolchain.toString());
             if (toolChainName == QLatin1String("gcc"))
-                type = ToolChain::GCC;
+                type = ProjectExplorer::ToolChain_GCC;
             else if (toolChainName == QLatin1String("mingw"))
-                type = ToolChain::MinGW;
+                type = ProjectExplorer::ToolChain_MinGW;
             else if (toolChainName == QLatin1String("msvc"))
-                type = ToolChain::MSVC;
+                type = ProjectExplorer::ToolChain_MSVC;
             else if (toolChainName == QLatin1String("wince"))
-                type = ToolChain::WINCE;
+                type = ProjectExplorer::ToolChain_WINCE;
         }
         result.insert(QLatin1String("GenericProjectManager.GenericProject.Toolchain"), type);
     }
diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
index c84903055ce8579ec01db970482e200483ced86d..d1876648e371a65e672a9ebe7aa0fefa926dcb0f 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
@@ -34,7 +34,6 @@
 #include <coreplugin/modemanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/applicationlauncher.h>
-#include <projectexplorer/toolchain.h>
 #include <qt4projectmanager/qtversionmanager.h>
 #include <utils/environment.h>
 #include <utils/qtcassert.h>
diff --git a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp
index 3cf3e5dbec986f222016921489f308ab28dfe4ee..26811c29bbd0749d83ab9d72f49b433e678a0adf 100644
--- a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp
+++ b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp
@@ -53,7 +53,7 @@ LibraryDetailsController::LibraryDetailsController(
     Qt4BuildConfiguration *qt4BuildConfiguration =
             qobject_cast<Qt4BuildConfiguration *>(project->activeTarget()->activeBuildConfiguration());
     // if its toolchain is maemo behave the same as we would be on linux
-    if (qt4BuildConfiguration && qt4BuildConfiguration->toolChainType() == ProjectExplorer::ToolChain::GCC_MAEMO)
+    if (qt4BuildConfiguration && qt4BuildConfiguration->toolChainType() == ProjectExplorer::ToolChain_GCC_MAEMO)
         m_creatorPlatform = CreatorLinux;
 #endif
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index c3a90a53c899516462304473cdd0521e2ebecd52..400b6ee6b75cbc8e888dc0cface9e4c900471cc9 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -38,6 +38,7 @@
 #include "qt-s60/abldparser.h"
 #include "qt-s60/sbsv2parser.h"
 
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/gnumakeparser.h>
 #include <projectexplorer/projectexplorer.h>
@@ -173,8 +174,8 @@ bool MakeStep::init()
     // but for now this is the least invasive change
 
     if (toolchain) {
-        if (toolchain->type() != ProjectExplorer::ToolChain::MSVC &&
-            toolchain->type() != ProjectExplorer::ToolChain::WINCE) {
+        if (toolchain->type() != ProjectExplorer::ToolChain_MSVC &&
+            toolchain->type() != ProjectExplorer::ToolChain_WINCE) {
             if (m_makeCmd.isEmpty())
                 args << "-w";
         }
@@ -314,11 +315,11 @@ void MakeStepConfigWidget::updateDetails()
     // so we only do it for unix and if the user didn't override the make command
     // but for now this is the least invasive change
     QStringList args = m_makeStep->userArguments();
-    ProjectExplorer::ToolChain::ToolChainType t = ProjectExplorer::ToolChain::UNKNOWN;
+    ProjectExplorer::ToolChainType t = ProjectExplorer::ToolChain_UNKNOWN;
     ProjectExplorer::ToolChain *toolChain = bc->toolChain();
     if (toolChain)
         t = toolChain->type();
-    if (t != ProjectExplorer::ToolChain::MSVC && t != ProjectExplorer::ToolChain::WINCE) {
+    if (t != ProjectExplorer::ToolChain_MSVC && t != ProjectExplorer::ToolChain_WINCE) {
         if (m_makeStep->m_makeCmd.isEmpty())
             args << "-w";
     }
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index eab7c3a7646f5a44669a5843ca30d7b5cf08551e..63753bb4267ebc0ce31edb1065d9e5a448f9f192 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -135,8 +135,8 @@ QStringList QMakeStep::moreArguments()
     Qt4BuildConfiguration *bc = qt4BuildConfiguration();
     QStringList arguments;
 #if defined(Q_OS_WIN) || defined(Q_OS_MAC)
-    ToolChain::ToolChainType type = bc->toolChainType();
-    if (type == ToolChain::GCC_MAEMO)
+    const ProjectExplorer::ToolChainType type = bc->toolChainType();
+    if (type == ProjectExplorer::ToolChain_GCC_MAEMO)
         arguments << QLatin1String("-unix");
 #endif
     if (bc->target()->id() == Constants::S60_DEVICE_TARGET_ID
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
index 8ff1853cb558f0e26d784143589b544d977ed96f..3fa4a51b9f89d520c186df3ad3cbcf83bde48fc8 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
@@ -45,7 +45,7 @@
 #include <debugger/debuggerrunner.h>
 #include <debugger/debuggerengine.h>
 
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
@@ -74,7 +74,7 @@ RunControl *MaemoDebugSupport::createDebugRunControl(MaemoRunConfiguration *runC
     if (debuggingType != MaemoRunConfiguration::DebugQmlOnly) {
         params.processArgs = runConfig->arguments();
         params.sysRoot = runConfig->sysRoot();
-        params.toolChainType = ToolChain::GCC_MAEMO;
+        params.toolChainType = ProjectExplorer::ToolChain_GCC_MAEMO;
         params.dumperLibrary = runConfig->dumperLib();
         params.remoteDumperLib = uploadDir(devConf).toUtf8() + '/'
             + QFileInfo(runConfig->dumperLib()).fileName().toUtf8();
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
index 6e2ba5e71558dc8e9cf48759ecd8e425cb94dbfd..66fab0a9ec69f2f085ef05ea6f0b0a04ecc65ff4 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
@@ -126,8 +126,8 @@ bool MaemoRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *confi
         return false;
     Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration*>(config);
     QTC_ASSERT(qt4bc, return false);
-    ToolChain::ToolChainType type = qt4bc->toolChainType();
-    return type == ToolChain::GCC_MAEMO;
+    const ProjectExplorer::ToolChainType type = qt4bc->toolChainType();
+    return type == ProjectExplorer::ToolChain_GCC_MAEMO;
 }
 
 QWidget *MaemoRunConfiguration::createConfigurationWidget()
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
index a71277ee1776a6d58202f8fa041c3b9f5f980157..2adab390a23040506e4b871ffad7bf7e30fb3d08 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
@@ -40,7 +40,6 @@
 #include "maemosshrunner.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/toolchain.h>
 #include <utils/qtcassert.h>
 
 #include <QtGui/QMessageBox>
@@ -51,7 +50,6 @@ namespace Qt4ProjectManager {
 namespace Internal {
 
 using ProjectExplorer::RunConfiguration;
-using ProjectExplorer::ToolChain;
 
 MaemoRunControl::MaemoRunControl(RunConfiguration *rc)
     : RunControl(rc, ProjectExplorer::Constants::RUNMODE)
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
index 1e320b8e961850a6176df17275f898489af247e8..755e953154c9dd3484e8dea2bd5526be20e4ea44 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
@@ -49,9 +49,9 @@ MaemoToolChain::~MaemoToolChain()
 {
 }
 
-ToolChain::ToolChainType MaemoToolChain::type() const
+ProjectExplorer::ToolChainType MaemoToolChain::type() const
 {
-    return ToolChain::GCC_MAEMO;
+    return ProjectExplorer::ToolChain_GCC_MAEMO;
 }
 
 void MaemoToolChain::addToEnvironment(Utils::Environment &env)
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h
index d7163022b7b6fb9ab94ebe0a994ee0dc0076a461..85caf3c3032400b97f17ca4c2f38c79c34347a5e 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h
@@ -43,7 +43,7 @@ public:
     virtual ~MaemoToolChain();
 
     void addToEnvironment(Utils::Environment &env);
-    ProjectExplorer::ToolChain::ToolChainType type() const;
+    ProjectExplorer::ToolChainType type() const;
     QString makeCommand() const;
 
     QString maddeRoot() const;
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
index 01bc3307d3b52410aa3ba2b7692e37588ccd56f8..85c9ede5849e17c5adcd88ee1195a862f915e2c7 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
@@ -67,7 +67,7 @@ static QString gcceCommand(const QString &dir)
 // The GccToolChain base class constructor wants to know the gcc command
 GCCEToolChain *GCCEToolChain::create(const S60Devices::Device &device,
                                      const QString &gcceRoot,
-                                     ProjectExplorer::ToolChain::ToolChainType type)
+                                     ProjectExplorer::ToolChainType type)
 {
     const QString gccCommand = gcceCommand(gcceRoot);
     const QFileInfo gccCommandFi(gccCommand);
@@ -78,18 +78,18 @@ GCCEToolChain *GCCEToolChain::create(const S60Devices::Device &device,
 GCCEToolChain::GCCEToolChain(const S60Devices::Device &device,
                              const QString &gcceBinPath,
                              const QString &gcceCommand,
-                             ProjectExplorer::ToolChain::ToolChainType type) :
+                             ProjectExplorer::ToolChainType type) :
     GccToolChain(gcceCommand),
     m_mixin(device),
     m_type(type),
     m_gcceBinPath(gcceBinPath)
 {
-    QTC_ASSERT(m_type == ProjectExplorer::ToolChain::GCCE || m_type == ProjectExplorer::ToolChain::GCCE_GNUPOC, return)
+    QTC_ASSERT(m_type == ProjectExplorer::ToolChain_GCCE || m_type == ProjectExplorer::ToolChain_GCCE_GNUPOC, return)
     if (debug)
         qDebug() << "GCCEToolChain on" << m_type << gcceCommand << gcceBinPath << m_mixin.device();
 }
 
-ToolChain::ToolChainType GCCEToolChain::type() const
+ProjectExplorer::ToolChainType GCCEToolChain::type() const
 {
     return m_type;
 }
@@ -110,10 +110,10 @@ QList<HeaderPath> GCCEToolChain::systemHeaderPaths()
     if (m_systemHeaderPaths.isEmpty()) {
         GccToolChain::systemHeaderPaths();
         switch (m_type) {
-        case ProjectExplorer::ToolChain::GCCE:
+        case ProjectExplorer::ToolChain_GCCE:
             m_systemHeaderPaths += m_mixin.epocHeaderPaths();
             break;
-        case ProjectExplorer::ToolChain::GCCE_GNUPOC:
+        case ProjectExplorer::ToolChain_GCCE_GNUPOC:
             m_systemHeaderPaths += m_mixin.gnuPocHeaderPaths();
             break;
         default:
@@ -131,10 +131,10 @@ void GCCEToolChain::addToEnvironment(Utils::Environment &env)
     if (!m_gcceBinPath.isEmpty())
         env.prependOrSetPath(m_gcceBinPath);
     switch (m_type) {
-    case ProjectExplorer::ToolChain::GCCE:
+    case ProjectExplorer::ToolChain_GCCE:
         m_mixin.addEpocToEnvironment(&env);
         break;
-    case ProjectExplorer::ToolChain::GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
         m_mixin.addGnuPocToEnvironment(&env);
         break;
     default:
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h
index 9ce1228a88c8d519c3e48dad2d2bc1bf364aeb70..ae522d9c89d31a4eb30d8ce9d7b7eabb4c0f9f13 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h
@@ -42,16 +42,16 @@ class GCCEToolChain : public ProjectExplorer::GccToolChain
     explicit GCCEToolChain(const S60Devices::Device &device,
                            const QString &gcceBinPath,
                            const QString &gcceCommand,
-                           ProjectExplorer::ToolChain::ToolChainType type);
+                           ProjectExplorer::ToolChainType type);
 public:
     static GCCEToolChain *create(const S60Devices::Device &device,
                                  const QString &gcceRoot,
-                                 ProjectExplorer::ToolChain::ToolChainType type);
+                                 ProjectExplorer::ToolChainType type);
 
     QByteArray predefinedMacros();
     virtual QList<ProjectExplorer::HeaderPath> systemHeaderPaths();
     virtual void addToEnvironment(Utils::Environment &env);
-    virtual ProjectExplorer::ToolChain::ToolChainType type() const;
+    virtual ProjectExplorer::ToolChainType type() const;
     virtual QString makeCommand() const;
 
 protected:
@@ -60,7 +60,7 @@ protected:
 private:
     QString gcceVersion() const;
     const S60ToolChainMixin m_mixin;
-    const ProjectExplorer::ToolChain::ToolChainType m_type;
+    const ProjectExplorer::ToolChainType m_type;
     const QString m_gcceBinPath;
     mutable QString m_gcceVersion;
 };
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
index b72a95637a785f9cfc7a50ea74e0029b1107d9b4..fca0f52cd1d13a6dd5abd07a537ee75bb8d52517 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
@@ -44,7 +44,7 @@ using namespace Qt4ProjectManager::Internal;
 
 static const char rvctBinaryC[] = "armcc";
 
-RVCTToolChain::RVCTToolChain(const S60Devices::Device &device, ToolChain::ToolChainType type) :
+RVCTToolChain::RVCTToolChain(const S60Devices::Device &device, ProjectExplorer::ToolChainType type) :
     m_mixin(device),
     m_type(type),
     m_versionUpToDate(false),
@@ -102,7 +102,7 @@ QString RVCTToolChain::rvctBinary()
     return binPath.isEmpty() ? executable : (binPath + QLatin1Char('/') + executable);
 }
 
-ToolChain::ToolChainType RVCTToolChain::type() const
+ProjectExplorer::ToolChainType RVCTToolChain::type() const
 {
     return m_type;
 }
@@ -185,7 +185,7 @@ QList<HeaderPath> RVCTToolChain::systemHeaderPaths()
         if (!rvctInclude.isEmpty())
             m_systemHeaderPaths.append(HeaderPath(rvctInclude, HeaderPath::GlobalHeaderPath));
         switch (m_type) {
-        case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
             m_systemHeaderPaths += m_mixin.gnuPocRvctHeaderPaths(m_major, m_minor);
             break;
         default:
@@ -241,7 +241,7 @@ void RVCTToolChain::addToEnvironment(Utils::Environment &env)
 {
     updateVersion();
     switch (m_type) {
-    case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC: {
+    case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: {
         m_mixin.addGnuPocToEnvironment(&env);
         // setup RVCT22INC, LIB
         addToRVCTPathVariable(QLatin1String("INC"),
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h
index d6481b80dda8a58f1420e15c140531cafd55ee68..fcf6990cb6772372ed0f975ea7b0fae1e0f924b6 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.h
@@ -41,11 +41,11 @@ class RVCTToolChain : public ProjectExplorer::ToolChain
 {
 public:
     explicit RVCTToolChain(const S60Devices::Device &device,
-                           ProjectExplorer::ToolChain::ToolChainType type);
+                           ProjectExplorer::ToolChainType type);
     virtual QByteArray predefinedMacros();
     QList<ProjectExplorer::HeaderPath> systemHeaderPaths();
     void addToEnvironment(Utils::Environment &env);
-    ProjectExplorer::ToolChain::ToolChainType type() const;
+    ProjectExplorer::ToolChainType type() const;
     QString makeCommand() const;
     ProjectExplorer::IOutputParser *outputParser() const;
 
@@ -65,7 +65,7 @@ private:
     void updateVersion();
 
     const S60ToolChainMixin m_mixin;
-    const ProjectExplorer::ToolChain::ToolChainType m_type;
+    const ProjectExplorer::ToolChainType m_type;
     bool m_versionUpToDate;
     int m_major;
     int m_minor;
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
index 91d46393701b9ec4d5dfd1d7e5685be832597550..6d21f54d11f8d84cbd7c536ca3f573b351bf64c9 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
@@ -242,23 +242,23 @@ bool S60DeployConfiguration::isSigned() const
     return false;
 }
 
-ProjectExplorer::ToolChain::ToolChainType S60DeployConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType S60DeployConfiguration::toolChainType() const
 {
     if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(target()->activeBuildConfiguration()))
         return bc->toolChainType();
-    return ProjectExplorer::ToolChain::INVALID;
+    return ProjectExplorer::ToolChain_INVALID;
 }
 
 QString S60DeployConfiguration::symbianPlatform() const
 {
     const Qt4BuildConfiguration *qt4bc = qt4Target()->activeBuildConfiguration();
     switch (qt4bc->toolChainType()) {
-    case ToolChain::GCCE:
-    case ToolChain::GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
         return QLatin1String("gcce");
-    case ToolChain::RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
         return QLatin1String("armv5");
-    default: // including ToolChain::RVCT_ARMV6_GNUPOC:
+    default: // including ProjectExplorer::RVCT_ARMV6_GNUPOC:
         return QLatin1String("armv6");
     }
 }
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
index 1d299eedd94087244ccbd9815fa58a464f95de86..072ea984da42646e82f6ee28b54905a2cc13e4a0 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
@@ -33,7 +33,7 @@
 #include <projectexplorer/deployconfiguration.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <projectexplorer/runconfiguration.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 namespace Qt4ProjectManager {
 class QtVersion;
@@ -59,7 +59,7 @@ public:
 
     const QtVersion *qtVersion() const;
     Qt4Target *qt4Target() const;
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    ProjectExplorer::ToolChainType toolChainType() const;
 
     QString serialPortName() const;
     void setSerialPortName(const QString &name);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index 08221988cf12824c06cee3c371aa8ff1a38c23c8..faacd39aaedd90563201c51cd3236f98722af706 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -172,19 +172,19 @@ Qt4Target *S60DeviceRunConfiguration::qt4Target() const
     return static_cast<Qt4Target *>(target());
 }
 
-ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainType(
+ProjectExplorer::ToolChainType S60DeviceRunConfiguration::toolChainType(
         ProjectExplorer::BuildConfiguration *configuration) const
 {
     if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(configuration))
         return bc->toolChainType();
-    return ProjectExplorer::ToolChain::INVALID;
+    return ProjectExplorer::ToolChain_INVALID;
 }
 
-ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType S60DeviceRunConfiguration::toolChainType() const
 {
     if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(target()->activeBuildConfiguration()))
         return bc->toolChainType();
-    return ProjectExplorer::ToolChain::INVALID;
+    return ProjectExplorer::ToolChain_INVALID;
 }
 
 bool S60DeviceRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
@@ -193,11 +193,11 @@ bool S60DeviceRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *c
         return false;
     const Qt4BuildConfiguration *qt4bc = static_cast<const Qt4BuildConfiguration *>(configuration);
     switch (qt4bc->toolChainType()) {
-    case ToolChain::GCCE:
-    case ToolChain::RVCT_ARMV5:
-    case ToolChain::RVCT_ARMV6:
-    case ToolChain::GCCE_GNUPOC:
-    case ToolChain::RVCT_ARMV5_GNUPOC:
+    case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV6:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
         return true;
     default:
         break;
@@ -282,12 +282,12 @@ QString S60DeviceRunConfiguration::symbianPlatform() const
 {
     const Qt4BuildConfiguration *qt4bc = qt4Target()->activeBuildConfiguration();
     switch (qt4bc->toolChainType()) {
-    case ToolChain::GCCE:
-    case ToolChain::GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
         return QLatin1String("gcce");
-    case ToolChain::RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
         return QLatin1String("armv5");
-    default: // including ToolChain::RVCT_ARMV6_GNUPOC:
+    default: // including ProjectExplorer::RVCT_ARMV6_GNUPOC:
         return QLatin1String("armv6");
     }
 }
@@ -324,8 +324,8 @@ QString S60DeviceRunConfiguration::localExecutableFileName() const
 {
     QString localExecutable;
     switch (toolChainType()) {
-    case ToolChain::GCCE_GNUPOC:
-    case ToolChain::RVCT_ARMV5_GNUPOC: {
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC: {
         TargetInformation ti = qt4Target()->qt4Project()->rootProjectNode()->targetInformation(projectFilePath());
         if (!ti.valid)
             return QString();
@@ -470,7 +470,7 @@ RunConfiguration *S60DeviceRunConfigurationFactory::clone(Target *parent, RunCon
 
 S60DeviceRunControl::S60DeviceRunControl(RunConfiguration *runConfiguration, QString mode) :
     RunControl(runConfiguration, mode),
-    m_toolChain(ProjectExplorer::ToolChain::INVALID),
+    m_toolChain(ProjectExplorer::ToolChain_INVALID),
     m_handleDeviceRemoval(true),
     m_launcher(0)
 {
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
index a0b3cdae8b32ff1a3c9a7d048a8452db777f3485..d4009a700b8f042f534fdc4f3d7e57985e1db0f5 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
@@ -34,7 +34,7 @@
 
 #include <debugger/debuggerrunner.h>
 #include <projectexplorer/runconfiguration.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <QtCore/QProcess>
 #include <QtCore/QFutureInterface>
@@ -86,7 +86,7 @@ public:
 
     QString projectFilePath() const;
 
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    ProjectExplorer::ToolChainType toolChainType() const;
 
     QString targetName() const;
     QString localExecutableFileName() const;
@@ -111,7 +111,7 @@ private slots:
     void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
 
 private:
-    ProjectExplorer::ToolChain::ToolChainType toolChainType(ProjectExplorer::BuildConfiguration *configuration) const;
+    ProjectExplorer::ToolChainType toolChainType(ProjectExplorer::BuildConfiguration *configuration) const;
     void ctor();
     void handleParserState(bool sucess);
 
@@ -184,7 +184,7 @@ private:
     void startLaunching();
     bool setupLauncher(QString &errorMessage);
 
-    ProjectExplorer::ToolChain::ToolChainType m_toolChain;
+    ProjectExplorer::ToolChainType m_toolChain;
     QString m_serialPortName;
     QString m_serialPortFriendlyName;
     QString m_targetName;
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index 85aeb2114f1ba4d2fa1374a3439acaf037cbb75a..9d19d45ad8af70970442777adc2c0e4103983c0e 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -150,8 +150,8 @@ bool S60EmulatorRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration
         return false;
     Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration *>(configuration);
     QTC_ASSERT(qt4bc, return false);
-    ToolChain::ToolChainType type = qt4bc->toolChainType();
-    return type == ToolChain::WINSCW;
+    const ProjectExplorer::ToolChainType type = qt4bc->toolChainType();
+    return type == ProjectExplorer::ToolChain_WINSCW;
 }
 
 QWidget *S60EmulatorRunConfiguration::createConfigurationWidget()
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
index fc97f98baf33b68d2bb95cd83d453a203cf6d098..e71e03d675c519809feba7250d21cba52e70780f 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
@@ -43,7 +43,6 @@
 #include <coreplugin/icore.h>
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/toolchain.h>
 #include <debugger/debuggerplugin.h>
 #include <utils/qtcassert.h>
 
@@ -226,18 +225,18 @@ ProjectExplorer::ToolChain *S60Manager::createWINSCWToolChain(const Qt4ProjectMa
 ProjectExplorer::ToolChain *S60Manager::createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const
 {
     Q_ASSERT(version);
-    return GCCEToolChain::create(deviceForQtVersion(version), version->gcceDirectory(), ProjectExplorer::ToolChain::GCCE);
+    return GCCEToolChain::create(deviceForQtVersion(version), version->gcceDirectory(), ProjectExplorer::ToolChain_GCCE);
 }
 
 ProjectExplorer::ToolChain *S60Manager::createGCCE_GnuPocToolChain(const Qt4ProjectManager::QtVersion *version) const
 {
     Q_ASSERT(version);
-    return GCCEToolChain::create(deviceForQtVersion(version), version->gcceDirectory(), ProjectExplorer::ToolChain::GCCE_GNUPOC);
+    return GCCEToolChain::create(deviceForQtVersion(version), version->gcceDirectory(), ProjectExplorer::ToolChain_GCCE_GNUPOC);
 }
 
 ProjectExplorer::ToolChain *S60Manager::createRVCTToolChain(
         const Qt4ProjectManager::QtVersion *version,
-        ProjectExplorer::ToolChain::ToolChainType type) const
+        ProjectExplorer::ToolChainType type) const
 {
     Q_ASSERT(version);
     return new RVCTToolChain(deviceForQtVersion(version), type);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.h b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
index ed334a624961cdd49b72b7889c425825f58102f7..30922f997a12a6e5926d4f38c3adfb45cefea101 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
@@ -32,10 +32,14 @@
 
 #include "s60devices.h"
 
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 
 #include <QtCore/QObject>
 
+namespace ProjectExplorer {
+class ToolChain;
+}
+
 namespace Qt4ProjectManager {
 class QtVersion;
 namespace Internal {
@@ -53,7 +57,7 @@ public:
     ProjectExplorer::ToolChain *createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const;
     ProjectExplorer::ToolChain *createGCCE_GnuPocToolChain(const Qt4ProjectManager::QtVersion *version) const;
     ProjectExplorer::ToolChain *createRVCTToolChain(const Qt4ProjectManager::QtVersion *version,
-                                                    ProjectExplorer::ToolChain::ToolChainType type) const;
+                                                    ProjectExplorer::ToolChainType type) const;
 
     S60Devices *devices() const { return m_devices; }
     S60Devices::Device deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const;
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
index 5765fc1a55294aa5a43f93e1d406f8238aa55683..07eba3effbc85d4721e9f6834fa9f41b28be72de 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
@@ -47,9 +47,9 @@ WINSCWToolChain::WINSCWToolChain(const S60Devices::Device &device, const QString
 
 }
 
-ToolChain::ToolChainType WINSCWToolChain::type() const
+ProjectExplorer::ToolChainType WINSCWToolChain::type() const
 {
-    return ToolChain::WINSCW;
+    return ProjectExplorer::ToolChain_WINSCW;
 }
 
 QByteArray WINSCWToolChain::predefinedMacros()
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.h b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.h
index 27edf0b53cf79890b529e556e8f088308a66d561..e92994b539dd5d9f5f91d440824b27b1f63d399c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.h
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.h
@@ -44,7 +44,7 @@ public:
     QByteArray predefinedMacros();
     QList<ProjectExplorer::HeaderPath> systemHeaderPaths();
     void addToEnvironment(Utils::Environment &env);
-    ProjectExplorer::ToolChain::ToolChainType type() const;
+    ProjectExplorer::ToolChainType type() const;
     QString makeCommand() const;
     ProjectExplorer::IOutputParser *outputParser() const;
 
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 4f01323e80fee2fb2d3eb66488fd4541ce2aed32..d19abc99fa43c92d26c6b8adc603fc8a89bd57b3 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -157,11 +157,11 @@ bool Qt4BuildConfiguration::fromMap(const QVariantMap &map)
     if (version->isValid())
         m_shadowBuild = (m_shadowBuild && version->supportsShadowBuilds());
 
-    QList<ToolChain::ToolChainType> possibleTcs(qt4Target()->filterToolChainTypes(qtVersion()->possibleToolChainTypes()));
+    QList<ProjectExplorer::ToolChainType> possibleTcs(qt4Target()->filterToolChainTypes(qtVersion()->possibleToolChainTypes()));
     if (!possibleTcs.contains(toolChainType()))
         setToolChainType(qt4Target()->preferredToolChainType(possibleTcs));
 
-    if (toolChainType() == ToolChain::INVALID) {
+    if (toolChainType() == ProjectExplorer::ToolChain_INVALID) {
         qWarning() << "No toolchain available for" << qtVersion()->displayName() << "used in" << target()->id() << "!";
         return false;
     }
@@ -298,7 +298,7 @@ void Qt4BuildConfiguration::setShadowBuildAndDirectory(bool shadowBuild, const Q
 
 ProjectExplorer::ToolChain *Qt4BuildConfiguration::toolChain() const
 {
-    ToolChain::ToolChainType tct = toolChainType();
+    const ProjectExplorer::ToolChainType tct = toolChainType();
     return qtVersion()->toolChain(tct);
 }
 
@@ -325,14 +325,14 @@ QString Qt4BuildConfiguration::defaultMakeTarget() const
     const QtVersion::QmakeBuildConfigs buildConfig = qmakeBuildConfiguration();
 
     switch (tc->type()) {
-    case ToolChain::GCCE:
+    case ProjectExplorer::ToolChain_GCCE:
         return symbianMakeTarget(buildConfig, QLatin1String("gcce"));
-    case ToolChain::RVCT_ARMV5:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:
         return symbianMakeTarget(buildConfig, QLatin1String("armv5"));
-    case ToolChain::RVCT_ARMV6:
+    case ProjectExplorer::ToolChain_RVCT_ARMV6:
         return symbianMakeTarget(buildConfig, QLatin1String("armv6"));
-    case ToolChain::RVCT_ARMV5_GNUPOC:
-    case ToolChain::GCCE_GNUPOC:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC:
     default:
         break;
     }
@@ -361,11 +361,11 @@ void Qt4BuildConfiguration::setQtVersion(QtVersion *version)
 
     m_qtVersionId = version->uniqueId();
 
-    if (!version->possibleToolChainTypes().contains(ProjectExplorer::ToolChain::ToolChainType(m_toolChainType))) {
-        QList<ToolChain::ToolChainType> candidates =
+    if (!version->possibleToolChainTypes().contains(ProjectExplorer::ToolChainType(m_toolChainType))) {
+        QList<ProjectExplorer::ToolChainType> candidates =
                 qt4Target()->filterToolChainTypes(qtVersion()->possibleToolChainTypes());
         if (candidates.isEmpty())
-            m_toolChainType = ToolChain::INVALID;
+            m_toolChainType = ProjectExplorer::ToolChain_INVALID;
         else
             m_toolChainType = candidates.first();
     }
@@ -378,7 +378,7 @@ void Qt4BuildConfiguration::setQtVersion(QtVersion *version)
     emitBuildDirectoryChanged();
 }
 
-void Qt4BuildConfiguration::setToolChainType(ProjectExplorer::ToolChain::ToolChainType type)
+void Qt4BuildConfiguration::setToolChainType(ProjectExplorer::ToolChainType type)
 {
     if (!qt4Target()->filterToolChainTypes(qtVersion()->possibleToolChainTypes()).contains(type)
         || m_toolChainType == type)
@@ -392,9 +392,9 @@ void Qt4BuildConfiguration::setToolChainType(ProjectExplorer::ToolChain::ToolCha
     emitBuildDirectoryChanged();
 }
 
-ProjectExplorer::ToolChain::ToolChainType Qt4BuildConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType Qt4BuildConfiguration::toolChainType() const
 {
-    return ToolChain::ToolChainType(m_toolChainType);
+    return ProjectExplorer::ToolChainType(m_toolChainType);
 }
 
 QtVersion::QmakeBuildConfigs Qt4BuildConfiguration::qmakeBuildConfiguration() const
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
index 50657a10279d0476effda937bcf202f34f148938..956c95e73c26e0c8a5620c413efec14955f9b314 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
@@ -33,7 +33,11 @@
 #include "qtversionmanager.h"
 
 #include <projectexplorer/buildconfiguration.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
+
+namespace ProjectExplorer {
+class ToolChain;
+}
 
 namespace Qt4ProjectManager {
 
@@ -71,8 +75,8 @@ public:
     void setQtVersion(QtVersion *);
 
     ProjectExplorer::ToolChain *toolChain() const;
-    void setToolChainType(ProjectExplorer::ToolChain::ToolChainType type);
-    ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    void setToolChainType(ProjectExplorer::ToolChainType type);
+    ProjectExplorer::ToolChainType toolChainType() const;
 
     QtVersion::QmakeBuildConfigs qmakeBuildConfiguration() const;
     void setQMakeBuildConfiguration(QtVersion::QmakeBuildConfigs config);
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index cbbc3d1bebd3a5ab52521a25def8c65773b184a0..482d23c0574506f63adc393fbc66851f2bb35442 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -49,6 +49,7 @@
 #include <extensionsystem/pluginmanager.h>
 #include <cpptools/cppmodelmanagerinterface.h>
 #include <qmljs/qmljsmodelmanagerinterface.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index ada2ba1af916f7e2b23f86f469719f22ddcdf42b..a22ab0473a2b6cbd588667ab71252c1951773ecb 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -39,6 +39,7 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/mainwindow.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <utils/qtcassert.h>
@@ -488,8 +489,8 @@ void Qt4ProjectConfigWidget::toolChainTypeChanged()
     if (m_ignoreChange)
         return;
     for (int i=0; i < m_ui->toolChainComboBox->count(); ++i) {
-        ProjectExplorer::ToolChain::ToolChainType tt =
-                m_ui->toolChainComboBox->itemData(i, Qt::UserRole).value<ProjectExplorer::ToolChain::ToolChainType>();
+        ProjectExplorer::ToolChainType tt =
+                m_ui->toolChainComboBox->itemData(i, Qt::UserRole).value<ProjectExplorer::ToolChainType>();
         if (tt == m_buildConfiguration->toolChainType()) {
             m_ignoreChange = true;
             m_ui->toolChainComboBox->setCurrentIndex(i);
@@ -501,12 +502,12 @@ void Qt4ProjectConfigWidget::toolChainTypeChanged()
 void Qt4ProjectConfigWidget::updateToolChainCombo()
 {
     m_ui->toolChainComboBox->clear();
-    QList<ProjectExplorer::ToolChain::ToolChainType> toolchains =
+    QList<ProjectExplorer::ToolChainType> toolchains =
             m_buildConfiguration->qtVersion()->possibleToolChainTypes();
 
     toolchains = m_buildConfiguration->qt4Target()->filterToolChainTypes(toolchains);
 
-    foreach (ToolChain::ToolChainType toolchain, toolchains)
+    foreach (ProjectExplorer::ToolChainType toolchain, toolchains)
         m_ui->toolChainComboBox->addItem(ToolChain::toolChainName(toolchain), qVariantFromValue(toolchain));
     m_ui->toolChainComboBox->setEnabled(toolchains.size() > 1);
 
@@ -519,9 +520,9 @@ void Qt4ProjectConfigWidget::toolChainSelected(int index)
 {
     if (m_ignoreChange)
         return;
-    ProjectExplorer::ToolChain::ToolChainType selectedToolChainType =
+    ProjectExplorer::ToolChainType selectedToolChainType =
         m_ui->toolChainComboBox->itemData(index,
-            Qt::UserRole).value<ProjectExplorer::ToolChain::ToolChainType>();
+            Qt::UserRole).value<ProjectExplorer::ToolChainType>();
     m_ignoreChange = true;
     m_buildConfiguration->setToolChainType(selectedToolChainType);
     m_ignoreChange = false;
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index 17a55e23660b9dd65018dc7647fb88597c502b36..4f42ebdbee2bed10fa30238b3d100ed44a834cec 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -140,20 +140,20 @@ bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configu
     QTC_ASSERT(qt4bc, return false);
 
     using namespace ProjectExplorer;
-    ToolChain::ToolChainType type = qt4bc->toolChainType();
+    const ToolChainType type = qt4bc->toolChainType();
     bool enabled;
     switch (type) {
-    case ToolChain::MSVC:        case ToolChain::WINCE:
-    case ToolChain::GCC:         case ToolChain::MinGW:
-    case ToolChain::GCCE_GNUPOC: case ToolChain::RVCT_ARMV5_GNUPOC:
-    case ToolChain::OTHER:       case ToolChain::UNKNOWN:
-    case ToolChain::LINUX_ICC:
-    case ToolChain::INVALID:
+    case ProjectExplorer::ToolChain_MSVC:        case ProjectExplorer::ToolChain_WINCE:
+    case ProjectExplorer::ToolChain_GCC:         case ProjectExplorer::ToolChain_MinGW:
+    case ProjectExplorer::ToolChain_GCCE_GNUPOC: case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
+    case ProjectExplorer::ToolChain_OTHER:       case ProjectExplorer::ToolChain_UNKNOWN:
+    case ProjectExplorer::ToolChain_LINUX_ICC:
+    case ProjectExplorer::ToolChain_INVALID:
         enabled = true;
         break;
-    case ToolChain::WINSCW:      case ToolChain::GCCE:
-    case ToolChain::RVCT_ARMV5:  case ToolChain::RVCT_ARMV6:
-    case ToolChain::GCC_MAEMO:
+    case ProjectExplorer::ToolChain_WINSCW:      case ProjectExplorer::ToolChain_GCCE:
+    case ProjectExplorer::ToolChain_RVCT_ARMV5:  case ProjectExplorer::ToolChain_RVCT_ARMV6:
+    case ProjectExplorer::ToolChain_GCC_MAEMO:
         enabled = false;
         break;
     }
@@ -712,7 +712,7 @@ Qt4RunConfiguration::BaseEnvironmentBase Qt4RunConfiguration::baseEnvironmentBas
 {
     return m_baseEnvironmentBase;
 }
-ProjectExplorer::ToolChain::ToolChainType Qt4RunConfiguration::toolChainType() const
+ProjectExplorer::ToolChainType Qt4RunConfiguration::toolChainType() const
 {
     Qt4BuildConfiguration *qt4bc = qt4Target()->activeBuildConfiguration();
     return qt4bc->toolChainType();
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h
index 78861a538dadadf0c6cd408b37903330fea0baa7..7bcd891f6f90d4b902911614f5ff20761ad28deb 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h
@@ -31,6 +31,9 @@
 #define QT4RUNCONFIGURATION_H
 
 #include <projectexplorer/applicationrunconfiguration.h>
+
+#include <utils/environment.h>
+
 #include <QtCore/QStringList>
 #include <QtGui/QWidget>
 
@@ -85,7 +88,7 @@ public:
     virtual Utils::Environment environment() const;
     virtual QString dumperLibrary() const;
     virtual QStringList dumperLibraryLocations() const;
-    virtual ProjectExplorer::ToolChain::ToolChainType toolChainType() const;
+    virtual ProjectExplorer::ToolChainType toolChainType() const;
 
     bool isUsingDyldImageSuffix() const;
     void setUsingDyldImageSuffix(bool state);
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 15c3c16ad392e2801c871469c20c961a0e6d7aef..ccdbbc6b22822e9a7839d63fc9be77d4807ea9b7 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -47,7 +47,7 @@
 
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchaintype.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <coreplugin/coreconstants.h>
 #include <symbianutils/symbiandevicemanager.h>
@@ -310,7 +310,7 @@ Qt4BuildConfiguration *Qt4Target::addQt4BuildConfiguration(QString displayName,
 
     // Finally set the qt version & ToolChain
     bc->setQtVersion(qtversion);
-    ToolChain::ToolChainType defaultTc = preferredToolChainType(filterToolChainTypes(bc->qtVersion()->possibleToolChainTypes()));
+    ProjectExplorer::ToolChainType defaultTc = preferredToolChainType(filterToolChainTypes(bc->qtVersion()->possibleToolChainTypes()));
     bc->setToolChainType(defaultTc);
     if (!directory.isEmpty())
         bc->setShadowBuildAndDirectory(directory != project()->projectDirectory(), directory);
@@ -342,27 +342,27 @@ void Qt4Target::addRunConfigurationForPath(const QString &proFilePath)
         addRunConfiguration(new MaemoRunConfiguration(this, proFilePath));
 }
 
-QList<ToolChain::ToolChainType> Qt4Target::filterToolChainTypes(const QList<ToolChain::ToolChainType> &candidates) const
+QList<ProjectExplorer::ToolChainType> Qt4Target::filterToolChainTypes(const QList<ProjectExplorer::ToolChainType> &candidates) const
 {
-    QList<ToolChain::ToolChainType> tmp(candidates);
+    QList<ProjectExplorer::ToolChainType> tmp(candidates);
     if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
-        if (tmp.contains(ToolChain::WINSCW))
-            return QList<ToolChain::ToolChainType>() << ToolChain::WINSCW;
+        if (tmp.contains(ProjectExplorer::ToolChain_WINSCW))
+            return QList<ProjectExplorer::ToolChainType>() << ProjectExplorer::ToolChain_WINSCW;
         else
-            return QList<ToolChain::ToolChainType>();
+            return QList<ProjectExplorer::ToolChainType>();
     } else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
-        tmp.removeAll(ToolChain::WINSCW);
+        tmp.removeAll(ProjectExplorer::ToolChain_WINSCW);
         return tmp;
     }
     return tmp;
 }
 
-ToolChain::ToolChainType Qt4Target::preferredToolChainType(const QList<ToolChain::ToolChainType> &candidates) const
+ProjectExplorer::ToolChainType Qt4Target::preferredToolChainType(const QList<ProjectExplorer::ToolChainType> &candidates) const
 {
-    ToolChain::ToolChainType preferredType = ToolChain::INVALID;
+    ProjectExplorer::ToolChainType preferredType = ProjectExplorer::ToolChain_INVALID;
     if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID) &&
-        candidates.contains(ToolChain::WINSCW))
-        preferredType = ToolChain::WINSCW;
+        candidates.contains(ProjectExplorer::ToolChain_WINSCW))
+        preferredType = ProjectExplorer::ToolChain_WINSCW;
     if (!candidates.isEmpty())
         preferredType = candidates.at(0);
     return preferredType;
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index f78f6007e72a34f528decee7e9f3a38db36c3157..fa5c1cca857cc84292016ca99689f0b1a88bfde1 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -78,8 +78,8 @@ public:
     Internal::Qt4BuildConfigurationFactory *buildConfigurationFactory() const;
     ProjectExplorer::DeployConfigurationFactory *deployConfigurationFactory() const;
 
-    QList<ProjectExplorer::ToolChain::ToolChainType> filterToolChainTypes(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const;
-    ProjectExplorer::ToolChain::ToolChainType preferredToolChainType(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const;
+    QList<ProjectExplorer::ToolChainType> filterToolChainTypes(const QList<ProjectExplorer::ToolChainType> &candidates) const;
+    ProjectExplorer::ToolChainType preferredToolChainType(const QList<ProjectExplorer::ToolChainType> &candidates) const;
 
     QString defaultBuildDirectory() const;
     static QString defaultShadowBuildDirectory(const QString &projectLocation, const QString &id);
diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp
index 41c5ab1b65a223e6d3cf075c5a2c546a47b75a70..4b59f56e903066378caef5df111e52764d5cb633 100644
--- a/src/plugins/qt4projectmanager/qtoptionspage.cpp
+++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp
@@ -37,6 +37,7 @@
 #include "qmlobservertool.h"
 
 #include <projectexplorer/debugginghelper.h>
+#include <projectexplorer/toolchaintype.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/progressmanager/progressmanager.h>
@@ -563,7 +564,7 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
             return;
         }
         const QSharedPointerQtVersion qtVersion = m_versions.at(index);
-        QList<ProjectExplorer::ToolChain::ToolChainType> types = qtVersion->possibleToolChainTypes();
+        QList<ProjectExplorer::ToolChainType> types = qtVersion->possibleToolChainTypes();
         QSet<QString> targets = qtVersion->supportedTargetIds();
         makeDebuggingHelperVisible(qtVersion->supportsBinaryDebuggingHelper());
         if (types.isEmpty()) {
@@ -574,13 +575,13 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
                 m_ui->errorLabel->setText(m_versions.at(index)->invalidReason());
             else
                 m_ui->errorLabel->setText(tr("This Qt Version has a unknown toolchain."));
-        } else if (types.contains(ProjectExplorer::ToolChain::MinGW)) {
+        } else if (types.contains(ProjectExplorer::ToolChain_MinGW)) {
             makeMSVCVisible(false);
             makeMingwVisible(true);
             makeS60Visible(false);
             m_ui->mingwPath->setPath(m_versions.at(index)->mingwDirectory());
-        } else if (types.contains(ProjectExplorer::ToolChain::MSVC) ||
-                   types.contains(ProjectExplorer::ToolChain::WINCE)) {
+        } else if (types.contains(ProjectExplorer::ToolChain_MSVC) ||
+                   types.contains(ProjectExplorer::ToolChain_WINCE)) {
             makeMSVCVisible(false);
             makeMingwVisible(false);
             makeS60Visible(false);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 734dbb561bccc934f389cd22d285a64ae6b90cb2..33d789510e468c92cd41e2734209e98ca7430497 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -1299,7 +1299,7 @@ QList<QSharedPointer<ProjectExplorer::ToolChain> > QtVersion::toolChains() const
     return m_toolChains;
 }
 
-ProjectExplorer::ToolChain *QtVersion::toolChain(ProjectExplorer::ToolChain::ToolChainType type) const
+ProjectExplorer::ToolChain *QtVersion::toolChain(ProjectExplorer::ToolChainType type) const
 {
     foreach(const QSharedPointer<ProjectExplorer::ToolChain> &tcptr, toolChains())
         if (tcptr->type() == type)
@@ -1307,9 +1307,9 @@ ProjectExplorer::ToolChain *QtVersion::toolChain(ProjectExplorer::ToolChain::Too
     return 0;
 }
 
-QList<ProjectExplorer::ToolChain::ToolChainType> QtVersion::possibleToolChainTypes() const
+QList<ProjectExplorer::ToolChainType> QtVersion::possibleToolChainTypes() const
 {
-    QList<ProjectExplorer::ToolChain::ToolChainType> types;
+    QList<ProjectExplorer::ToolChainType> types;
     foreach(const QSharedPointer<ProjectExplorer::ToolChain> &tc, toolChains())
         types << tc->type();
     return types;
@@ -1454,15 +1454,15 @@ void QtVersion::updateToolChainAndMkspec() const
             m_targetIds.insert(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
             m_toolChains << ToolChainPtr(s60mgr->createGCCEToolChain(this));
             if (S60Manager::hasRvctCompiler())
-                m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain::RVCT_ARMV5))
-                             << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain::RVCT_ARMV6));
+                m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT_ARMV5))
+                             << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT_ARMV6));
             if (!mwcDirectory().isEmpty()) {
                 m_toolChains << ToolChainPtr(s60mgr->createWINSCWToolChain(this));
                 m_targetIds.insert(QLatin1String(Constants::S60_EMULATOR_TARGET_ID));
             }
 #    else
             if (S60Manager::hasRvctCompiler())
-                m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC));
+                m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC));
             m_toolChains << ToolChainPtr(s60mgr->createGCCE_GnuPocToolChain(this));
             m_targetIds.insert(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
 #    endif
@@ -1695,24 +1695,24 @@ QStringList QtVersion::debuggingHelperLibraryLocations() const
 
 bool QtVersion::supportsBinaryDebuggingHelper() const
 {
-    foreach (ProjectExplorer::ToolChain::ToolChainType type, possibleToolChainTypes())
+    foreach (ProjectExplorer::ToolChainType type, possibleToolChainTypes())
         switch (type) {
-        case ProjectExplorer::ToolChain::GCC:
-        case ProjectExplorer::ToolChain::LINUX_ICC:
-        case ProjectExplorer::ToolChain::MinGW:
-        case ProjectExplorer::ToolChain::MSVC:
-        case ProjectExplorer::ToolChain::WINCE:
-        case ProjectExplorer::ToolChain::GCC_MAEMO:
-        case ProjectExplorer::ToolChain::OTHER:
-        case ProjectExplorer::ToolChain::UNKNOWN:
+        case ProjectExplorer::ToolChain_GCC:
+        case ProjectExplorer::ToolChain_LINUX_ICC:
+        case ProjectExplorer::ToolChain_MinGW:
+        case ProjectExplorer::ToolChain_MSVC:
+        case ProjectExplorer::ToolChain_WINCE:
+        case ProjectExplorer::ToolChain_GCC_MAEMO:
+        case ProjectExplorer::ToolChain_OTHER:
+        case ProjectExplorer::ToolChain_UNKNOWN:
             return true;
-        case ProjectExplorer::ToolChain::WINSCW:
-        case ProjectExplorer::ToolChain::GCCE :
-        case ProjectExplorer::ToolChain::RVCT_ARMV5:
-        case ProjectExplorer::ToolChain::RVCT_ARMV6:
-        case ProjectExplorer::ToolChain::GCCE_GNUPOC:
-        case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC:
-        case ProjectExplorer::ToolChain::INVALID:
+        case ProjectExplorer::ToolChain_WINSCW:
+        case ProjectExplorer::ToolChain_GCCE :
+        case ProjectExplorer::ToolChain_RVCT_ARMV5:
+        case ProjectExplorer::ToolChain_RVCT_ARMV6:
+        case ProjectExplorer::ToolChain_GCCE_GNUPOC:
+        case ProjectExplorer::ToolChain_RVCT_ARMV5_GNUPOC:
+        case ProjectExplorer::ToolChain_INVALID:
             break;
         }
     return false;
@@ -1814,7 +1814,7 @@ bool QtVersion::buildDebuggingHelperLibrary(QFutureInterface<void> &future,
         return false;
     }
     tc->addToEnvironment(env);
-    const QString target = (tc->type() == ToolChain::GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""));
+    const QString target = (tc->type() == ProjectExplorer::ToolChain_GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""));
 
     // invalidate cache
     m_versionInfoUpToDate = false;
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 896f8e4fd630e376c3cb42627281879e9a76f389..29890753840e97521c758ff6934247045086fbb1 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -40,6 +40,14 @@
 #include <QtCore/QSharedPointer>
 #include <QtCore/QFutureInterface>
 
+namespace ProjectExplorer {
+class ToolChain;
+}
+
+namespace Utils {
+class Environment;
+}
+
 namespace Qt4ProjectManager {
 
 namespace Internal {
@@ -78,8 +86,8 @@ public:
     QSet<QString> supportedTargetIds() const;
     bool supportsMobileTarget() const;
 
-    QList<ProjectExplorer::ToolChain::ToolChainType> possibleToolChainTypes() const;
-    ProjectExplorer::ToolChain *toolChain(ProjectExplorer::ToolChain::ToolChainType type) const;
+    QList<ProjectExplorer::ToolChainType> possibleToolChainTypes() const;
+    ProjectExplorer::ToolChain *toolChain(ProjectExplorer::ToolChainType type) const;
 
     /// @returns the name of the mkspec, which is generally not enough
     /// to pass to qmake.