From 562265d58c981a5b2923306e8f38aec93167667f Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 28 Feb 2011 16:50:14 +0100
Subject: [PATCH] Toolchains: Header cleanup.

---
 .../cmakeprojectmanager/cmakeproject.cpp      |   1 +
 .../cmakerunconfiguration.cpp                 |   5 +
 .../cmakerunconfiguration.h                   |  11 +-
 src/plugins/coreplugin/dialogs/ioptionspage.h |   2 +-
 src/plugins/cpaster/codepastersettings.cpp    |   1 +
 src/plugins/debugger/cdb/cdbengine.cpp        |   2 +-
 src/plugins/debugger/commonoptionspage.h      |   2 -
 src/plugins/debugger/gdb/gdbengine.cpp        |   2 +-
 src/plugins/designer/settingspage.cpp         |   2 +
 .../genericprojectmanager/genericproject.cpp  |   1 +
 src/plugins/projectexplorer/gcctoolchain.cpp  |   3 +
 src/plugins/projectexplorer/gcctoolchain.h    | 130 +--------------
 .../projectexplorer/gcctoolchainfactories.h   | 157 ++++++++++++++++++
 src/plugins/projectexplorer/headerpath.h      |  68 ++++++++
 src/plugins/projectexplorer/msvctoolchain.cpp |   1 +
 src/plugins/projectexplorer/msvctoolchain.h   |   1 +
 .../projectexplorer/projectexplorer.cpp       |   2 +-
 .../projectexplorer/projectexplorer.pro       |   4 +-
 src/plugins/projectexplorer/toolchain.h       |  35 +---
 .../projectexplorer/toolchainconfigwidget.cpp |   4 -
 .../debugginghelperbuildtask.h                |   3 +
 src/plugins/qt4projectmanager/qmldumptool.h   |   3 +-
 .../qt-maemo/maemodebugsupport.cpp            |   2 +-
 .../qt-maemo/maemosettingspages.cpp           |   1 +
 .../qt-maemo/maemotoolchain.cpp               |   1 +
 .../qt-s60/gccetoolchain.cpp                  |   1 +
 .../qt-s60/rvcttoolchain.cpp                  |   2 +
 .../qt-s60/winscwtoolchain.cpp                |   2 +
 src/plugins/qt4projectmanager/qt4project.cpp  |   1 +
 src/plugins/qt4projectmanager/qt4target.h     |   1 +
 src/plugins/qt4projectmanager/qtoptionspage.h |   5 +-
 .../qt4projectmanager/qtversionmanager.cpp    |   8 +-
 .../qt4projectmanager/qtversionmanager.h      |  10 +-
 .../wizards/mobileappwizard.cpp               |   2 +
 .../qt4projectmanager/wizards/qtwizard.cpp    |   7 +-
 .../texteditor/texteditoroptionspage.cpp      |   1 +
 src/plugins/vcsbase/vcsbaseoptionspage.cpp    |   1 +
 37 files changed, 296 insertions(+), 189 deletions(-)
 create mode 100644 src/plugins/projectexplorer/gcctoolchainfactories.h
 create mode 100644 src/plugins/projectexplorer/headerpath.h

diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index a7f5ceff4ee..6819fbbb0ae 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -43,6 +43,7 @@
 
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/buildmanager.h>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 7a187ba1677..008c4f0ae54 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -41,8 +41,13 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/helpmanager.h>
 #include <projectexplorer/debugginghelper.h>
+#include <projectexplorer/environmentwidget.h>
+
+#include <utils/pathchooser.h>
+#include <utils/detailswidget.h>
 #include <utils/qtcassert.h>
 #include <utils/debuggerlanguagechooser.h>
+
 #include <QtGui/QFormLayout>
 #include <QtGui/QLineEdit>
 #include <QtGui/QGroupBox>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index 1e3df0de11a..978d10b1813 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -35,12 +35,7 @@
 #define CMAKERUNCONFIGURATION_H
 
 #include <projectexplorer/applicationrunconfiguration.h>
-#include <projectexplorer/persistentsettings.h>
-#include <projectexplorer/environmentwidget.h>
-#include <projectexplorer/toolchain.h>
 #include <utils/environment.h>
-#include <utils/pathchooser.h>
-#include <utils/detailswidget.h>
 
 QT_BEGIN_NAMESPACE
 class QComboBox;
@@ -48,6 +43,12 @@ QT_END_NAMESPACE
 
 namespace Utils {
 class DebuggerLanguageChooser;
+class PathChooser;
+class DetailsWidget;
+}
+
+namespace ProjectExplorer {
+class EnvironmentWidget;
 }
 
 namespace CMakeProjectManager {
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h
index a9069ad98b3..6bfd92a9ebc 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.h
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.h
@@ -36,10 +36,10 @@
 
 #include <coreplugin/core_global.h>
 
-#include <QtGui/QIcon>
 #include <QtCore/QObject>
 
 QT_BEGIN_NAMESPACE
+class QIcon;
 class QWidget;
 QT_END_NAMESPACE
 
diff --git a/src/plugins/cpaster/codepastersettings.cpp b/src/plugins/cpaster/codepastersettings.cpp
index 5d1a6d5d6f9..42577626b0d 100644
--- a/src/plugins/cpaster/codepastersettings.cpp
+++ b/src/plugins/cpaster/codepastersettings.cpp
@@ -44,6 +44,7 @@
 #include <QtGui/QFormLayout>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QLabel>
+#include <QtGui/QIcon>
 #include <QtCore/QDebug>
 #include <QtCore/QVariant>
 
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index ef7468200f0..d668762135d 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -58,7 +58,7 @@
 
 #include <coreplugin/icore.h>
 #include <texteditor/itexteditor.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <projectexplorer/projectexplorerconstants.h>
 
 #include <utils/synchronousprocess.h>
diff --git a/src/plugins/debugger/commonoptionspage.h b/src/plugins/debugger/commonoptionspage.h
index f975fd71116..491d3a71ae6 100644
--- a/src/plugins/debugger/commonoptionspage.h
+++ b/src/plugins/debugger/commonoptionspage.h
@@ -38,10 +38,8 @@
 #include "ui_dumperoptionpage.h"
 
 #include <coreplugin/dialogs/ioptionspage.h>
-#include <projectexplorer/toolchain.h>
 #include <utils/savedaction.h>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index ad0ea208f3c..2b04903d9f6 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -75,7 +75,7 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/ifile.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <texteditor/itexteditor.h>
 #include <utils/qtcassert.h>
diff --git a/src/plugins/designer/settingspage.cpp b/src/plugins/designer/settingspage.cpp
index cff71cf7851..29789c7e24a 100644
--- a/src/plugins/designer/settingspage.cpp
+++ b/src/plugins/designer/settingspage.cpp
@@ -37,7 +37,9 @@
 
 #include <extensionsystem/pluginmanager.h>
 #include "qt_private/abstractoptionspage_p.h"
+
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 using namespace Designer::Internal;
 
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 77fc23dcb98..841e5474860 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -38,6 +38,7 @@
 #include "generictarget.h"
 
 #include <projectexplorer/buildenvironmentwidget.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/toolchainmanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 37591518e04..4908dd76948 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -32,13 +32,16 @@
 **************************************************************************/
 
 #include "gcctoolchain.h"
+#include "gcctoolchainfactories.h"
 #include "gccparser.h"
 #include "linuxiccparser.h"
+#include "headerpath.h"
 #include "projectexplorerconstants.h"
 
 #include <utils/environment.h>
 #include <utils/synchronousprocess.h>
 #include <utils/qtcassert.h>
+#include <utils/pathchooser.h>
 
 #include <QtCore/QBuffer>
 #include <QtCore/QCoreApplication>
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index e350e857361..c0a79c16b75 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -37,14 +37,7 @@
 #include "projectexplorer_export.h"
 
 #include "toolchain.h"
-
-#include "toolchainconfigwidget.h"
-
-#include <utils/pathchooser.h>
-
-QT_BEGIN_NAMESPACE
-class QCheckBox;
-QT_END_NAMESPACE
+#include "abi.h"
 
 namespace ProjectExplorer {
 
@@ -116,69 +109,6 @@ private:
     friend class ToolChainFactory;
 };
 
-
-// --------------------------------------------------------------------------
-// GccToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class GccToolChainFactory : public ToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    bool canCreate();
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    virtual GccToolChain *createToolChain(bool autoDetect);
-    QList<ToolChain *> autoDetectToolchains(const QString &compiler,
-                                            const QStringList &debuggers,
-                                            const Abi &);
-};
-
-} // namespace Internal
-
-// --------------------------------------------------------------------------
-// GccToolChainConfigWidget
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class GccToolChainConfigWidget : public ToolChainConfigWidget
-{
-    Q_OBJECT
-
-public:
-    GccToolChainConfigWidget(GccToolChain *);
-    void apply();
-    void discard() { setFromToolchain(); }
-    bool isDirty() const;
-
-private slots:
-    void handlePathChange();
-    void handle32BitChange();
-
-private:
-    void setFromToolchain();
-
-    Utils::PathChooser *m_compilerPath;
-    QCheckBox *m_force32BitCheckBox;
-};
-
-} // namespace Internal
-
 // --------------------------------------------------------------------------
 // MingwToolChain
 // --------------------------------------------------------------------------
@@ -198,36 +128,6 @@ private:
     friend class ToolChainFactory;
 };
 
-// --------------------------------------------------------------------------
-// MingwToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class MingwToolChainFactory : public GccToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    bool canCreate();
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    GccToolChain *createToolChain(bool autoDetect);
-};
-
-} // namespace Internal
-
 // --------------------------------------------------------------------------
 // LinuxIccToolChain
 // --------------------------------------------------------------------------
@@ -249,34 +149,6 @@ private:
     friend class ToolChainFactory;
 };
 
-// --------------------------------------------------------------------------
-// LinuxIccToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class LinuxIccToolChainFactory : public GccToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    GccToolChain *createToolChain(bool autoDetect);
-};
-
-} // namespace Internal
 } // namespace ProjectExplorer
 
 #endif // GCCTOOLCHAIN_H
diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h
new file mode 100644
index 00000000000..852349537b4
--- /dev/null
+++ b/src/plugins/projectexplorer/gcctoolchainfactories.h
@@ -0,0 +1,157 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** No Commercial Usage
+**
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef GCCTOOLCHAINFACTORIES_H
+#define GCCTOOLCHAINFACTORIES_H
+
+#include "toolchain.h"
+#include "toolchainconfigwidget.h"
+
+QT_BEGIN_NAMESPACE
+class QCheckBox;
+QT_END_NAMESPACE
+
+namespace Utils {
+class PathChooser;
+}
+
+namespace ProjectExplorer {
+class GccToolChain;
+
+namespace Internal {
+
+class GccToolChainFactory : public ToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    bool canCreate();
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    virtual GccToolChain *createToolChain(bool autoDetect);
+    QList<ToolChain *> autoDetectToolchains(const QString &compiler,
+                                            const QStringList &debuggers,
+                                            const Abi &);
+};
+
+// --------------------------------------------------------------------------
+// GccToolChainConfigWidget
+// --------------------------------------------------------------------------
+
+class GccToolChainConfigWidget : public ToolChainConfigWidget
+{
+    Q_OBJECT
+
+public:
+    GccToolChainConfigWidget(GccToolChain *);
+    void apply();
+    void discard() { setFromToolchain(); }
+    bool isDirty() const;
+
+private slots:
+    void handlePathChange();
+    void handle32BitChange();
+
+private:
+    void setFromToolchain();
+
+    Utils::PathChooser *m_compilerPath;
+    QCheckBox *m_force32BitCheckBox;
+};
+
+// --------------------------------------------------------------------------
+// MingwToolChainFactory
+// --------------------------------------------------------------------------
+
+class MingwToolChainFactory : public GccToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    bool canCreate();
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    GccToolChain *createToolChain(bool autoDetect);
+};
+
+// --------------------------------------------------------------------------
+// LinuxIccToolChainFactory
+// --------------------------------------------------------------------------
+
+class LinuxIccToolChainFactory : public GccToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    GccToolChain *createToolChain(bool autoDetect);
+};
+
+} // namespace Internal
+} // namespace ProjectExplorer
+
+#endif // GCCTOOLCHAINFACTORIES_H
diff --git a/src/plugins/projectexplorer/headerpath.h b/src/plugins/projectexplorer/headerpath.h
new file mode 100644
index 00000000000..44454ed9ecc
--- /dev/null
+++ b/src/plugins/projectexplorer/headerpath.h
@@ -0,0 +1,68 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** No Commercial Usage
+**
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef HEADERPATH_H
+#define HEADERPATH_H
+
+#include "projectexplorer_export.h"
+
+namespace ProjectExplorer {
+
+class PROJECTEXPLORER_EXPORT HeaderPath
+{
+public:
+    enum Kind {
+        GlobalHeaderPath,
+        UserHeaderPath,
+        FrameworkHeaderPath
+    };
+
+    HeaderPath()
+        : m_kind(GlobalHeaderPath)
+    { }
+
+    HeaderPath(const QString &path, Kind kind)
+        : m_path(path), m_kind(kind)
+    { }
+
+    QString path() const { return m_path; }
+    Kind kind() const { return m_kind; }
+
+private:
+    QString m_path;
+    Kind m_kind;
+};
+
+} // namespace ProjectExplorer
+
+#endif // HEADERPATH_H
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 02872ec7d33..bc22bf9fc63 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -34,6 +34,7 @@
 #include "msvctoolchain.h"
 #include "msvcparser.h"
 #include "projectexplorerconstants.h"
+#include "headerpath.h"
 
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorersettings.h>
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 385b0288125..8c4cc9eb85e 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -35,6 +35,7 @@
 #define MSVCTOOLCHAIN_H
 
 #include "toolchain.h"
+#include "abi.h"
 #include "toolchainconfigwidget.h"
 
 #include <utils/environment.h>
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 508e31ae0d3..4c9caa9dab0 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -35,7 +35,7 @@
 
 #include "buildsteplist.h"
 #include "deployconfiguration.h"
-#include "gcctoolchain.h"
+#include "gcctoolchainfactories.h"
 #include "msvctoolchain.h"
 #include "project.h"
 #include "projectexplorersettings.h"
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro
index 81618e6e57d..f4616a76b49 100644
--- a/src/plugins/projectexplorer/projectexplorer.pro
+++ b/src/plugins/projectexplorer/projectexplorer.pro
@@ -105,7 +105,9 @@ HEADERS += projectexplorer.h \
     sessionnodeimpl.h \
     metatypedeclarations.h \
     publishing/publishingwizardselectiondialog.h \
-    publishing/ipublishingwizardfactory.h
+    publishing/ipublishingwizardfactory.h \
+    headerpath.h \
+    gcctoolchainfactories.h
 
 SOURCES += projectexplorer.cpp \
     abi.cpp \
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index d2e7b5dc3ef..bc86ad7e054 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -36,12 +36,8 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-
 #include <QtCore/QObject>
 #include <QtCore/QString>
-#include <QtCore/QPair>
-#include <QtCore/QMetaType>
 #include <QtCore/QVariantMap>
 
 namespace Utils {
@@ -54,38 +50,11 @@ namespace Internal {
 class ToolChainPrivate;
 }
 
+class Abi;
 class IOutputParser;
 class ToolChainConfigWidget;
 class ToolChainFactory;
-
-// --------------------------------------------------------------------------
-// HeaderPath
-// --------------------------------------------------------------------------
-
-class PROJECTEXPLORER_EXPORT HeaderPath
-{
-public:
-    enum Kind {
-        GlobalHeaderPath,
-        UserHeaderPath,
-        FrameworkHeaderPath
-    };
-
-    HeaderPath()
-        : m_kind(GlobalHeaderPath)
-    { }
-
-    HeaderPath(const QString &path, Kind kind)
-        : m_path(path), m_kind(kind)
-    { }
-
-    QString path() const { return m_path; }
-    Kind kind() const { return m_kind; }
-
-private:
-    QString m_path;
-    Kind m_kind;
-};
+class HeaderPath;
 
 // --------------------------------------------------------------------------
 // ToolChain
diff --git a/src/plugins/projectexplorer/toolchainconfigwidget.cpp b/src/plugins/projectexplorer/toolchainconfigwidget.cpp
index 50ff46a0afb..70a1c460231 100644
--- a/src/plugins/projectexplorer/toolchainconfigwidget.cpp
+++ b/src/plugins/projectexplorer/toolchainconfigwidget.cpp
@@ -32,7 +32,6 @@
 **************************************************************************/
 
 #include "toolchainconfigwidget.h"
-
 #include "toolchain.h"
 
 #include <utils/qtcassert.h>
@@ -58,8 +57,6 @@ public:
         Q_ASSERT(tc);
     }
 
-
-
     ToolChain *m_toolChain;
     Utils::PathChooser *m_debuggerPathChooser;
     QLabel *m_errorLabel;
@@ -176,5 +173,4 @@ void ToolChainConfigWidget::clearErrorMessage()
     m_d->m_errorLabel->setVisible(false);
 }
 
-
 } // namespace ProjectExplorer
diff --git a/src/plugins/qt4projectmanager/debugginghelperbuildtask.h b/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
index 3db7f8ce6dd..8caa14a281c 100644
--- a/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
+++ b/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
@@ -35,8 +35,11 @@
 #define DEBUGGINGHELPERBUILDTASK_H
 
 #include "qtversionmanager.h"
+
 #include <utils/environment.h>
+
 #include <QtCore/QObject>
+#include <QtCore/QMetaType>
 
 namespace Qt4ProjectManager {
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h
index f02b03d1c6f..4d754aaf229 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.h
+++ b/src/plugins/qt4projectmanager/qmldumptool.h
@@ -34,9 +34,10 @@
 #ifndef QMLDUMPTOOL_H
 #define QMLDUMPTOOL_H
 
-#include <utils/buildablehelperlibrary.h>
 #include "qt4projectmanager_global.h"
 
+#include <utils/buildablehelperlibrary.h>
+
 namespace Utils {
     class Environment;
 }
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
index d042add87f3..0abca1c266a 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
@@ -46,7 +46,7 @@
 #include <debugger/debuggerstartparameters.h>
 #include <debugger/debuggerrunner.h>
 #include <debugger/debuggerengine.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
index 46f31d8e39a..32070694f75 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
@@ -54,6 +54,7 @@
 #include <QtGui/QFrame>
 #include <QtGui/QLabel>
 #include <QtGui/QVBoxLayout>
+#include <QtGui/QIcon>
 
 namespace Qt4ProjectManager {
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
index c34986fbadd..04144c4c7af 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
@@ -39,6 +39,7 @@
 #include "qtversionmanager.h"
 
 #include <projectexplorer/gccparser.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/toolchainmanager.h>
 #include <utils/environment.h>
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
index 0860a518a5a..6ebb9625926 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
@@ -36,6 +36,7 @@
 
 #include <utils/environment.h>
 #include <utils/synchronousprocess.h>
+#include <projectexplorer/headerpath.h>
 
 #include <QtCore/QDir>
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
index 678bc074721..c0be97638b2 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
@@ -36,6 +36,8 @@
 #include "ui_rvcttoolchainconfigwidget.h"
 #include "qt4projectmanager/qt4projectmanagerconstants.h"
 
+#include <projectexplorer/abi.h>
+#include <projectexplorer/headerpath.h>
 #include <utils/environment.h>
 #include <utils/environmentmodel.h>
 #include <utils/synchronousprocess.h>
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
index fd45f2fea94..d64bb50094a 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
@@ -38,6 +38,8 @@
 #include "ui_winscwtoolchainconfigwidget.h"
 #include "winscwparser.h"
 
+#include <projectexplorer/abi.h>
+#include <projectexplorer/headerpath.h>
 #include <utils/environment.h>
 
 #include <QtCore/QDir>
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index bbfedd80026..e997d5e21d9 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -53,6 +53,7 @@
 #include <cplusplus/ModelManagerInterface.h>
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <projectexplorer/toolchain.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index 5cdf60aff3e..578a5935c86 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -38,6 +38,7 @@
 #include "qtversionmanager.h"
 
 #include <projectexplorer/target.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectnodes.h>
 
 namespace Utils {
diff --git a/src/plugins/qt4projectmanager/qtoptionspage.h b/src/plugins/qt4projectmanager/qtoptionspage.h
index b9588eb7113..eafdce4cf64 100644
--- a/src/plugins/qt4projectmanager/qtoptionspage.h
+++ b/src/plugins/qt4projectmanager/qtoptionspage.h
@@ -33,16 +33,15 @@
 #ifndef QTOPTIONSPAGE_H
 #define QTOPTIONSPAGE_H
 
+#include "debugginghelperbuildtask.h"
+
 #include <coreplugin/dialogs/ioptionspage.h>
-#include <utils/environment.h>
 
 #include <QtCore/QSharedPointer>
 #include <QtCore/QFutureInterface>
 
 #include <QtGui/QWidget>
 
-#include "debugginghelperbuildtask.h"
-
 QT_BEGIN_NAMESPACE
 class QTreeWidgetItem;
 QT_END_NAMESPACE
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 9c8101ba9ef..6f1b9117c0f 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -58,11 +58,17 @@
 #include <projectexplorer/cesdkhandler.h>
 #include <projectexplorer/gcctoolchain.h>
 #include <projectexplorer/toolchainmanager.h>
-#include <utils/synchronousprocess.h>
+#include <projectexplorer/headerpath.h>
+#include <projectexplorer/ioutputparser.h>
+#include <projectexplorer/task.h>
+
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/helpmanager.h>
+
 #include <extensionsystem/pluginmanager.h>
+
+#include <utils/synchronousprocess.h>
 #include <utils/qtcassert.h>
 #include <utils/qtcprocess.h>
 #ifdef Q_OS_WIN
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 086e42f1847..13c762be3eb 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -36,11 +36,7 @@
 
 #include "qt4projectmanager_global.h"
 
-#include <projectexplorer/ioutputparser.h>
-#include <projectexplorer/taskwindow.h>
 #include <projectexplorer/abi.h>
-#include <projectexplorer/task.h>
-#include <projectexplorer/toolchain.h>
 
 #include <QtCore/QHash>
 #include <QtCore/QSet>
@@ -51,6 +47,12 @@ namespace Utils {
 class Environment;
 }
 
+namespace ProjectExplorer {
+class HeaderPath;
+class IOutputParser;
+class Task;
+}
+
 namespace Qt4ProjectManager {
 
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
index 3bbb12e2fcc..5c3dcb5d483 100644
--- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
@@ -39,6 +39,8 @@
 
 #include "qt4projectmanagerconstants.h"
 
+#include <projectexplorer/task.h>
+
 #include <QtCore/QCoreApplication>
 #include <QtGui/QIcon>
 
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index 9f2815572e2..8b79c54d21a 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -42,9 +42,14 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/editormanager/editormanager.h>
+
 #include <cpptools/cpptoolsconstants.h>
-#include <extensionsystem/pluginmanager.h>
+
 #include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/task.h>
+
+#include <extensionsystem/pluginmanager.h>
+
 #include <QtCore/QCoreApplication>
 #include <QtCore/QVariant>
 
diff --git a/src/plugins/texteditor/texteditoroptionspage.cpp b/src/plugins/texteditor/texteditoroptionspage.cpp
index d7867d2f640..5438286de63 100644
--- a/src/plugins/texteditor/texteditoroptionspage.cpp
+++ b/src/plugins/texteditor/texteditoroptionspage.cpp
@@ -36,6 +36,7 @@
 #include "texteditorconstants.h"
 
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 using namespace TextEditor;
 
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.cpp b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
index 416930ae5a9..ae22d739812 100644
--- a/src/plugins/vcsbase/vcsbaseoptionspage.cpp
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
@@ -36,6 +36,7 @@
 #include "vcsbaseconstants.h"
 
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 namespace VCSBase {
 
-- 
GitLab