From cc632c15978874e7d5b560776d41cfbd949fe88a Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Thu, 18 Aug 2011 13:46:52 +0200
Subject: [PATCH] Header cleanup in ProjectExplorer.

Change-Id: I19f100003427ba43aaae5ba0dc7078088017cb09
Reviewed-on: http://codereview.qt.nokia.com/3178
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
---
 .../cmakebuildconfiguration.cpp               |  1 +
 .../cmakeopenprojectwizard.cpp                |  2 +
 .../cmakerunconfiguration.cpp                 |  2 +
 src/plugins/debugger/debuggerplugin.cpp       |  1 +
 .../debugger/debuggertoolchaincombobox.cpp    |  2 +
 .../genericprojectmanager/genericproject.cpp  |  1 +
 src/plugins/projectexplorer/abiwidget.cpp     |  1 +
 src/plugins/projectexplorer/abiwidget.h       |  3 +-
 .../projectexplorer/abstractprocessstep.cpp   |  1 +
 .../projectexplorer/abstractprocessstep.h     |  8 +-
 .../applicationrunconfiguration.h             |  2 -
 .../projectexplorer/buildconfiguration.cpp    | 74 ++++++++++++-------
 .../projectexplorer/buildconfiguration.h      | 18 ++---
 src/plugins/projectexplorer/buildstep.h       |  3 +-
 src/plugins/projectexplorer/clangparser.h     |  1 +
 .../customexecutablerunconfiguration.cpp      |  2 +
 src/plugins/projectexplorer/gccparser.cpp     | 10 +--
 src/plugins/projectexplorer/gnumakeparser.cpp |  2 +-
 src/plugins/projectexplorer/ldparser.cpp      |  2 +-
 src/plugins/projectexplorer/linuxiccparser.h  |  1 +
 .../localapplicationruncontrol.cpp            |  1 +
 src/plugins/projectexplorer/nodesvisitor.h    |  1 -
 .../projectexplorer/outputparser_test.cpp     |  1 +
 src/plugins/projectexplorer/projectexplorer.h |  8 +-
 src/plugins/projectexplorer/projectnodes.h    | 11 ++-
 .../projectexplorer/runconfiguration.cpp      |  2 +
 .../projectexplorer/runconfiguration.h        | 12 ++-
 src/plugins/projectexplorer/target.cpp        |  1 +
 src/plugins/projectexplorer/toolchain.h       |  1 -
 .../projectexplorer/toolchainmanager.cpp      |  2 +-
 .../projectexplorer/toolchainmanager.h        |  4 +-
 .../projectexplorer/toolchainoptionspage.cpp  |  3 +-
 src/plugins/qt4projectmanager/qmakeparser.cpp |  6 +-
 .../qt-desktop/qt4runconfiguration.cpp        |  1 +
 .../qt4projectmanager/qt-s60/abldparser.cpp   |  2 +-
 .../qt-s60/qt4symbiantarget.cpp               |  1 +
 .../qt4projectmanager/qt-s60/rvctparser.cpp   |  2 +-
 .../qt-s60/s60createpackageparser.cpp         |  2 +-
 .../qt4projectmanager/qt-s60/winscwparser.cpp |  1 +
 .../qt4projectconfigwidget.cpp                |  2 +
 src/plugins/qt4projectmanager/qt4target.cpp   |  2 +
 src/plugins/qtsupport/baseqtversion.cpp       |  1 +
 src/plugins/qtsupport/qtparser.cpp            |  9 ++-
 .../remotelinux/abstractpackagingstep.cpp     |  1 +
 .../remotelinux/remotelinuxruncontrol.cpp     |  4 +-
 45 files changed, 125 insertions(+), 93 deletions(-)

diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 24c0502e9bf..96ae62afda7 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -38,6 +38,7 @@
 
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/buildsteplist.h>
 #include <utils/qtcassert.h>
 
diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
index c816a16ce13..1f436272e90 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
@@ -44,6 +44,8 @@
 
 #include <utils/pathchooser.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <texteditor/fontsettings.h>
 
 #include <QtGui/QVBoxLayout>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index c86c696eaeb..485ce0652d7 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -46,6 +46,8 @@
 #include <utils/detailswidget.h>
 #include <utils/qtcassert.h>
 #include <utils/debuggerlanguagechooser.h>
+#include <utils/qtcprocess.h>
+#include <utils/stringutils.h>
 
 #include <QtGui/QFormLayout>
 #include <QtGui/QLineEdit>
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 32d57cfa1a8..5effd300f25 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -92,6 +92,7 @@
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/session.h>
 #include <projectexplorer/target.h>
 #include <projectexplorer/abi.h>
diff --git a/src/plugins/debugger/debuggertoolchaincombobox.cpp b/src/plugins/debugger/debuggertoolchaincombobox.cpp
index 2592ca685a4..7642041f643 100644
--- a/src/plugins/debugger/debuggertoolchaincombobox.cpp
+++ b/src/plugins/debugger/debuggertoolchaincombobox.cpp
@@ -33,6 +33,8 @@
 #include "debuggertoolchaincombobox.h"
 
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <utils/qtcassert.h>
 
 #include <QtCore/QFileInfo>
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index ba647f9f7b5..e626457b311 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -36,6 +36,7 @@
 #include "genericprojectconstants.h"
 #include "generictarget.h"
 
+#include <projectexplorer/abi.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/headerpath.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
diff --git a/src/plugins/projectexplorer/abiwidget.cpp b/src/plugins/projectexplorer/abiwidget.cpp
index 796b0823f55..a98d8a6a979 100644
--- a/src/plugins/projectexplorer/abiwidget.cpp
+++ b/src/plugins/projectexplorer/abiwidget.cpp
@@ -31,6 +31,7 @@
 **************************************************************************/
 
 #include "abiwidget.h"
+#include "abi.h"
 
 #include <QtGui/QComboBox>
 #include <QtGui/QHBoxLayout>
diff --git a/src/plugins/projectexplorer/abiwidget.h b/src/plugins/projectexplorer/abiwidget.h
index 2ca76e2d8d1..a1f6925ca26 100644
--- a/src/plugins/projectexplorer/abiwidget.h
+++ b/src/plugins/projectexplorer/abiwidget.h
@@ -35,11 +35,10 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-
 #include <QtGui/QWidget>
 
 namespace ProjectExplorer {
+class Abi;
 
 namespace Internal {
 class AbiWidgetPrivate;
diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index 86caa8a1a26..ad136b76e76 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -36,6 +36,7 @@
 #include "ioutputparser.h"
 #include "project.h"
 #include "target.h"
+#include "task.h"
 
 #include <utils/qtcassert.h>
 #include <utils/qtcprocess.h>
diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h
index 16852e08468..cc6177dc002 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.h
+++ b/src/plugins/projectexplorer/abstractprocessstep.h
@@ -36,17 +36,17 @@
 #include "buildstep.h"
 #include "processparameters.h"
 
-#include <utils/environment.h>
-
-#include <utils/qtcprocess.h>
-
 #include <QtCore/QString>
+#include <QtCore/QProcess>
 
 QT_BEGIN_NAMESPACE
 class QEventLoop;
 class QTimer;
 QT_END_NAMESPACE
 
+namespace Utils {
+class QtcProcess;
+}
 namespace ProjectExplorer {
 
 class IOutputParser;
diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.h b/src/plugins/projectexplorer/applicationrunconfiguration.h
index 4bc79d80b80..bc34166de46 100644
--- a/src/plugins/projectexplorer/applicationrunconfiguration.h
+++ b/src/plugins/projectexplorer/applicationrunconfiguration.h
@@ -36,8 +36,6 @@
 #include "runconfiguration.h"
 #include "applicationlauncher.h"
 
-#include "abi.h"
-
 namespace Utils {
 class AbstractMacroExpander;
 class Environment;
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 43fdefdfb01..608e7b7ad79 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -32,6 +32,7 @@
 
 #include "buildconfiguration.h"
 
+#include "toolchain.h"
 #include "buildmanager.h"
 #include "buildsteplist.h"
 #include "projectexplorer.h"
@@ -42,25 +43,47 @@
 
 #include <coreplugin/variablemanager.h>
 
+#include <utils/stringutils.h>
+
 #include <QtCore/QProcess>
 
-using namespace ProjectExplorer;
+static const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount";
+static const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList.";
+static const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
+static const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
+static const char TOOLCHAIN_KEY[] = "ProjectExplorer.BuildCOnfiguration.ToolChain";
 
-namespace {
+namespace ProjectExplorer {
+namespace Internal {
 
-const char * const BUILD_STEP_LIST_COUNT("ProjectExplorer.BuildConfiguration.BuildStepListCount");
-const char * const BUILD_STEP_LIST_PREFIX("ProjectExplorer.BuildConfiguration.BuildStepList.");
-const char * const CLEAR_SYSTEM_ENVIRONMENT_KEY("ProjectExplorer.BuildConfiguration.ClearSystemEnvironment");
-const char * const USER_ENVIRONMENT_CHANGES_KEY("ProjectExplorer.BuildConfiguration.UserEnvironmentChanges");
-const char * const TOOLCHAIN_KEY("ProjectExplorer.BuildCOnfiguration.ToolChain");
+class BuildConfigMacroExpander : public Utils::AbstractQtcMacroExpander {
+public:
+    explicit BuildConfigMacroExpander(const BuildConfiguration *bc) : m_bc(bc) {}
+    virtual bool resolveMacro(const QString &name, QString *ret);
+private:
+    const BuildConfiguration *m_bc;
+};
 
-} // namespace
+bool BuildConfigMacroExpander::resolveMacro(const QString &name, QString *ret)
+{
+    if (name == QLatin1String("sourceDir")) {
+        *ret = QDir::toNativeSeparators(m_bc->target()->project()->projectDirectory());
+        return true;
+    }
+    if (name == QLatin1String("buildDir")) {
+        *ret = QDir::toNativeSeparators(m_bc->buildDirectory());
+        return true;
+    }
+    *ret = Core::VariableManager::instance()->value(name);
+    return !ret->isEmpty();
+}
+} // namespace Internal
 
 BuildConfiguration::BuildConfiguration(Target *target, const QString &id) :
     ProjectConfiguration(target, id),
     m_clearSystemEnvironment(false),
-    m_macroExpander(this),
-    m_toolChain(0)
+    m_toolChain(0),
+    m_macroExpander(0)
 {
     Q_ASSERT(target);
     BuildStepList *bsl = new BuildStepList(this, QLatin1String(Constants::BUILDSTEPS_BUILD));
@@ -84,8 +107,8 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
     ProjectConfiguration(target, source),
     m_clearSystemEnvironment(source->m_clearSystemEnvironment),
     m_userEnvironmentChanges(source->m_userEnvironmentChanges),
-    m_macroExpander(this),
-    m_toolChain(source->m_toolChain)
+    m_toolChain(source->m_toolChain),
+    m_macroExpander(0)
 {
     Q_ASSERT(target);
     // Do not clone stepLists here, do that in the derived constructor instead
@@ -101,7 +124,16 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
 }
 
 BuildConfiguration::~BuildConfiguration()
-{ }
+{
+    delete m_macroExpander;
+}
+
+Utils::AbstractMacroExpander *BuildConfiguration::macroExpander()
+{
+    if (!m_macroExpander)
+        m_macroExpander = new Internal::BuildConfigMacroExpander(this);
+    return m_macroExpander;
+}
 
 QStringList BuildConfiguration::knownStepLists() const
 {
@@ -284,20 +316,6 @@ QString BuildConfiguration::disabledReason() const
     return QString();
 }
 
-bool BuildConfigMacroExpander::resolveMacro(const QString &name, QString *ret)
-{
-    if (name == QLatin1String("sourceDir")) {
-        *ret = QDir::toNativeSeparators(m_bc->target()->project()->projectDirectory());
-        return true;
-    }
-    if (name == QLatin1String("buildDir")) {
-        *ret = QDir::toNativeSeparators(m_bc->buildDirectory());
-        return true;
-    }
-    *ret = Core::VariableManager::instance()->value(name);
-    return !ret->isEmpty();
-}
-
 ///
 // IBuildConfigurationFactory
 ///
@@ -308,3 +326,5 @@ IBuildConfigurationFactory::IBuildConfigurationFactory(QObject *parent) :
 
 IBuildConfigurationFactory::~IBuildConfigurationFactory()
 { }
+
+} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index b7cada3afb0..54fa99335fa 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -36,12 +36,14 @@
 #include "projectexplorer_export.h"
 #include "projectconfiguration.h"
 
-#include <utils/stringutils.h>
 #include <utils/environment.h>
 
-#include <QtCore/QString>
 #include <QtCore/QStringList>
 
+namespace Utils {
+class AbstractMacroExpander;
+}
+
 namespace ProjectExplorer {
 
 class BuildConfiguration;
@@ -50,14 +52,6 @@ class Target;
 class ToolChain;
 class IOutputParser;
 
-class BuildConfigMacroExpander : public Utils::AbstractQtcMacroExpander {
-public:
-    BuildConfigMacroExpander(BuildConfiguration *bc) : m_bc(bc) {}
-    virtual bool resolveMacro(const QString &name, QString *ret);
-private:
-    BuildConfiguration *m_bc;
-};
-
 class PROJECTEXPLORER_EXPORT BuildConfiguration : public ProjectConfiguration
 {
     Q_OBJECT
@@ -94,7 +88,7 @@ public:
     virtual bool isEnabled() const;
     virtual QString disabledReason() const;
 
-    Utils::AbstractMacroExpander *macroExpander() { return &m_macroExpander; }
+    Utils::AbstractMacroExpander *macroExpander();
 
     virtual ProjectExplorer::ToolChain *toolChain() const;
     virtual void setToolChain(ProjectExplorer::ToolChain *tc);
@@ -129,8 +123,8 @@ private:
     bool m_clearSystemEnvironment;
     QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
     QList<BuildStepList *> m_stepLists;
-    BuildConfigMacroExpander m_macroExpander;
     ToolChain *m_toolChain;
+    Utils::AbstractMacroExpander *m_macroExpander;
 };
 
 class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory :
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index 886f6c048f9..0da0279603c 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -35,13 +35,12 @@
 
 #include "projectconfiguration.h"
 #include "projectexplorer_export.h"
-#include "task.h"
 
 #include <QtCore/QFutureInterface>
 #include <QtGui/QWidget>
 
 namespace ProjectExplorer {
-
+class Task;
 class BuildConfiguration;
 class BuildStepList;
 class DeployConfiguration;
diff --git a/src/plugins/projectexplorer/clangparser.h b/src/plugins/projectexplorer/clangparser.h
index 6b624b33da0..6434ebd1542 100644
--- a/src/plugins/projectexplorer/clangparser.h
+++ b/src/plugins/projectexplorer/clangparser.h
@@ -34,6 +34,7 @@
 #define CLANGPARSER_H
 
 #include "ioutputparser.h"
+#include "task.h"
 
 #include <QtCore/QRegExp>
 
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index a6ce74df44e..8305b1e2932 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -37,10 +37,12 @@
 #include "debugginghelper.h"
 #include "projectexplorerconstants.h"
 #include "target.h"
+#include "abi.h"
 
 #include <coreplugin/icore.h>
 
 #include <utils/qtcprocess.h>
+#include <utils/stringutils.h>
 
 #include <QtGui/QDialog>
 #include <QtGui/QDialogButtonBox>
diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp
index 860c78aa0f1..bc790cacbdf 100644
--- a/src/plugins/projectexplorer/gccparser.cpp
+++ b/src/plugins/projectexplorer/gccparser.cpp
@@ -32,16 +32,14 @@
 
 #include "gccparser.h"
 #include "ldparser.h"
-#include "taskwindow.h"
+#include "task.h"
 #include "projectexplorerconstants.h"
 
 using namespace ProjectExplorer;
 
-namespace {
-    // opt. drive letter + filename: (2 brackets)
-    const char * const FILE_PATTERN = "(<command[ -]line>|([A-Za-z]:)?[^:]+\\.[^:]+):";
-    const char * const COMMAND_PATTERN = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: ";
-}
+// opt. drive letter + filename: (2 brackets)
+static const char FILE_PATTERN[] = "(<command[ -]line>|([A-Za-z]:)?[^:]+\\.[^:]+):";
+static const char COMMAND_PATTERN[] = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: ";
 
 GccParser::GccParser()
 {
diff --git a/src/plugins/projectexplorer/gnumakeparser.cpp b/src/plugins/projectexplorer/gnumakeparser.cpp
index ca810541279..9ddf7afe5d1 100644
--- a/src/plugins/projectexplorer/gnumakeparser.cpp
+++ b/src/plugins/projectexplorer/gnumakeparser.cpp
@@ -33,7 +33,7 @@
 #include "gnumakeparser.h"
 
 #include "projectexplorerconstants.h"
-#include "taskwindow.h"
+#include "task.h"
 
 #include <QtCore/QDir>
 #include <QtCore/QFile>
diff --git a/src/plugins/projectexplorer/ldparser.cpp b/src/plugins/projectexplorer/ldparser.cpp
index a3272b0f16a..7819dab9de2 100644
--- a/src/plugins/projectexplorer/ldparser.cpp
+++ b/src/plugins/projectexplorer/ldparser.cpp
@@ -32,7 +32,7 @@
 
 #include "ldparser.h"
 #include "projectexplorerconstants.h"
-#include "taskwindow.h"
+#include "task.h"
 
 using namespace ProjectExplorer;
 
diff --git a/src/plugins/projectexplorer/linuxiccparser.h b/src/plugins/projectexplorer/linuxiccparser.h
index d9b62e26837..4937f8ebd3a 100644
--- a/src/plugins/projectexplorer/linuxiccparser.h
+++ b/src/plugins/projectexplorer/linuxiccparser.h
@@ -34,6 +34,7 @@
 #define LINUXICCPARSER_H
 
 #include "ioutputparser.h"
+#include "task.h"
 
 #include <QtCore/QRegExp>
 
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
index b1ca9cb635d..2260c6e2b14 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
@@ -39,6 +39,7 @@
 #include <utils/environment.h>
 
 #include <QtGui/QLabel>
+#include <QtGui/QIcon>
 #include <QtCore/QDir>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/nodesvisitor.h b/src/plugins/projectexplorer/nodesvisitor.h
index 0a3d8671237..b4aa19ad00d 100644
--- a/src/plugins/projectexplorer/nodesvisitor.h
+++ b/src/plugins/projectexplorer/nodesvisitor.h
@@ -35,7 +35,6 @@
 
 #include "projectexplorer_export.h"
 
-#include <QtCore/QString>
 #include <QtCore/QStringList>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp
index 0758c92e2bf..d9ff74c9b83 100644
--- a/src/plugins/projectexplorer/outputparser_test.cpp
+++ b/src/plugins/projectexplorer/outputparser_test.cpp
@@ -31,6 +31,7 @@
 **************************************************************************/
 
 #include "outputparser_test.h"
+#include "task.h"
 
 #if defined(WITH_TESTS)
 
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 127b173d45e..06044ca197c 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -33,11 +33,10 @@
 #ifndef PROJECTEXPLORER_H
 #define PROJECTEXPLORER_H
 
-#include <QtCore/QPair>
-
 #include "projectexplorer_export.h"
 
 #include <extensionsystem/iplugin.h>
+
 #include <QtCore/QPair>
 
 QT_BEGIN_NAMESPACE
@@ -50,10 +49,6 @@ namespace Core {
 class IMode;
 }
 
-namespace Utils {
-class ParameterAction;
-}
-
 namespace ProjectExplorer {
 class BuildManager;
 class RunControl;
@@ -66,7 +61,6 @@ class BuildConfiguration;
 class ProjectNode;
 
 namespace Internal {
-class ProjectFileFactory;
 struct ProjectExplorerSettings;
 }
 
diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index 0e0fbafbe19..7dbcd893793 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -33,24 +33,23 @@
 #ifndef PROJECTNODES_H
 #define PROJECTNODES_H
 
-#include <QtCore/QObject>
-#include <QtCore/QStringList>
-#include <QtGui/QIcon>
-
-#include "runconfiguration.h"
 #include "projectexplorer_export.h"
 
+#include <QtGui/QIcon>
+
+#include <QtCore/QObject>
+#include <QtCore/QStringList>
 
 QT_BEGIN_NAMESPACE
 class QFileInfo;
 QT_END_NAMESPACE
 
-
 namespace Core {
     class MimeDatabase;
 }
 
 namespace ProjectExplorer {
+class RunConfiguration;
 
 enum NodeType {
     FileNodeType = 1,
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 6d66a03bca2..1708865590c 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -35,11 +35,13 @@
 #include "project.h"
 #include "target.h"
 #include "toolchain.h"
+#include "abi.h"
 #include "buildconfiguration.h"
 #include "projectexplorerconstants.h"
 #include <extensionsystem/pluginmanager.h>
 
 #include <utils/qtcassert.h>
+#include <utils/outputformatter.h>
 #include <utils/checkablemessagebox.h>
 
 #include <coreplugin/icore.h>
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index ec1de471bab..4c963a599e4 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -33,19 +33,23 @@
 #ifndef RUNCONFIGURATION_H
 #define RUNCONFIGURATION_H
 
-#include "abi.h"
 #include "projectconfiguration.h"
 #include "projectexplorer_export.h"
 
-#include <utils/outputformatter.h>
+#include <utils/outputformat.h>
 
 #include <QtCore/QMetaType>
 #include <QtCore/QWeakPointer>
 #include <QtGui/QWidget>
-#include <QtGui/QIcon>
 
-namespace ProjectExplorer {
+QT_FORWARD_DECLARE_CLASS(QIcon)
+
+namespace Utils {
+class OutputFormatter;
+}
 
+namespace ProjectExplorer {
+class Abi;
 class BuildConfiguration;
 class IRunConfigurationAspect;
 class RunControl;
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 66f0f8413c2..31ae8613972 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -32,6 +32,7 @@
 
 #include "target.h"
 
+#include "toolchain.h"
 #include "buildconfiguration.h"
 #include "deployconfiguration.h"
 #include "project.h"
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 4bceb309545..7d0f2eefd89 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -51,7 +51,6 @@ class ToolChainPrivate;
 }
 
 class Abi;
-class HeaderPath;
 class IOutputParser;
 class ToolChainConfigWidget;
 class ToolChainFactory;
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 7d18ace1531..c61de00f507 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -31,7 +31,7 @@
 **************************************************************************/
 
 #include "toolchainmanager.h"
-
+#include "abi.h"
 #include "toolchain.h"
 
 #include <coreplugin/icore.h>
diff --git a/src/plugins/projectexplorer/toolchainmanager.h b/src/plugins/projectexplorer/toolchainmanager.h
index 441292a6eaf..04acb59a4b0 100644
--- a/src/plugins/projectexplorer/toolchainmanager.h
+++ b/src/plugins/projectexplorer/toolchainmanager.h
@@ -35,9 +35,6 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-#include "toolchain.h"
-
 #include <QtCore/QList>
 #include <QtCore/QObject>
 #include <QtCore/QString>
@@ -46,6 +43,7 @@ namespace ProjectExplorer {
 class ProjectExplorerPlugin;
 class ToolChain;
 class ToolChainFactory;
+class Abi;
 
 namespace Internal {
 class ToolChainManagerPrivate;
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index f54b8500f05..b2bf43d9bc4 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -31,7 +31,8 @@
 **************************************************************************/
 
 #include "toolchainoptionspage.h"
-
+#include "toolchain.h"
+#include "abi.h"
 #include "projectexplorerconstants.h"
 #include "toolchainconfigwidget.h"
 #include "toolchainmanager.h"
diff --git a/src/plugins/qt4projectmanager/qmakeparser.cpp b/src/plugins/qt4projectmanager/qmakeparser.cpp
index dfc25145470..d2ef87fff05 100644
--- a/src/plugins/qt4projectmanager/qmakeparser.cpp
+++ b/src/plugins/qt4projectmanager/qmakeparser.cpp
@@ -33,7 +33,7 @@
 #include "qmakeparser.h"
 #include "qt4projectmanagerconstants.h"
 
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <utils/qtcassert.h>
 
@@ -41,11 +41,9 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 using ProjectExplorer::Task;
 
-QMakeParser::QMakeParser()
+QMakeParser::QMakeParser() : m_error(QLatin1String("^(.+):(\\d+):\\s(.+)$"))
 {
     setObjectName(QLatin1String("QMakeParser"));
-
-    m_error.setPattern("^(.+):(\\d+):\\s(.+)$");
     m_error.setMinimal(true);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
index 25048dea339..e9d0eb4437b 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
@@ -54,6 +54,7 @@
 #include <utils/qtcprocess.h>
 #include <utils/pathchooser.h>
 #include <utils/detailswidget.h>
+#include <utils/stringutils.h>
 #include <utils/debuggerlanguagechooser.h>
 #include <qtsupport/qtoutputformatter.h>
 #include <qtsupport/baseqtversion.h>
diff --git a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
index 504ac652008..7e8e53b485d 100644
--- a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
@@ -33,7 +33,7 @@
 #include "abldparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager;
 using namespace ProjectExplorer;
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
index 5c5ad17f82c..28ead6c187c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
@@ -41,6 +41,7 @@
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/project.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <symbianutils/symbiandevicemanager.h>
 #include <extensionsystem/pluginmanager.h>
 #include <QtGui/QPainter>
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp b/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
index c783b4abc2a..61b58c89f48 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
@@ -32,7 +32,7 @@
 
 #include "rvctparser.h"
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Constants;
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
index 5dfea8114eb..f4319b10805 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
@@ -33,7 +33,7 @@
 #include "s60createpackageparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager::Internal;
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp b/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
index b2f2c8d9624..61b11fe6c8b 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
@@ -33,6 +33,7 @@
 #include "winscwparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager;
 using namespace ProjectExplorer;
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 2e310ac6ab9..59c1992adb6 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -45,6 +45,8 @@
 #include <coreplugin/icore.h>
 
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <qtsupport/qtversionfactory.h>
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 2ec2103cc6e..ff32dc93551 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -46,12 +46,14 @@
 #include <projectexplorer/runconfiguration.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/task.h>
 #include <qtsupport/qtversionfactory.h>
 #include <qtsupport/baseqtversion.h>
 #include <utils/pathchooser.h>
 #include <utils/detailswidget.h>
+#include <utils/qtcprocess.h>
 
 #include <QtCore/QCoreApplication>
 #include <QtGui/QPushButton>
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 0f5d84801c1..ddf6ba6cf0b 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -38,6 +38,7 @@
 #include "qtversionmanager.h"
 #include "profilereader.h"
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/gnumakeparser.h>
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qtsupport/qtparser.cpp b/src/plugins/qtsupport/qtparser.cpp
index 9d11f5298f3..9d67772ca50 100644
--- a/src/plugins/qtsupport/qtparser.cpp
+++ b/src/plugins/qtsupport/qtparser.cpp
@@ -32,20 +32,21 @@
 
 #include "qtparser.h"
 
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
+
 #include <utils/qtcassert.h>
 
 using namespace QtSupport;
 using ProjectExplorer::Task;
 
 // opt. drive letter + filename: (2 brackets)
-static const char FILE_PATTERN[] = "^(([A-Za-z]:)?[^:]+\\.[^:]+)";
+#define FILE_PATTERN "^(([A-Za-z]:)?[^:]+\\.[^:]+)"
 
-QtParser::QtParser()
+QtParser::QtParser() :
+    m_mocRegExp(QLatin1String(FILE_PATTERN"[:\\(](\\d+)\\)?:\\s(Warning|Error):\\s(.+)$"))
 {
     setObjectName(QLatin1String("QtParser"));
-    m_mocRegExp.setPattern(QString::fromLatin1(FILE_PATTERN) + "[:\\(](\\d+)\\)?:\\s(Warning|Error):\\s(.+)$");
     m_mocRegExp.setMinimal(true);
 }
 
diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp
index d83539cdfda..e4b92a75957 100644
--- a/src/plugins/remotelinux/abstractpackagingstep.cpp
+++ b/src/plugins/remotelinux/abstractpackagingstep.cpp
@@ -37,6 +37,7 @@
 #include <projectexplorer/buildconfiguration.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/target.h>
+#include <projectexplorer/task.h>
 #include <utils/fileutils.h>
 
 #include <QtCore/QDateTime>
diff --git a/src/plugins/remotelinux/remotelinuxruncontrol.cpp b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
index 2935a369aaf..f0e441178cd 100644
--- a/src/plugins/remotelinux/remotelinuxruncontrol.cpp
+++ b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
@@ -37,9 +37,11 @@
 #include <projectexplorer/projectexplorerconstants.h>
 #include <utils/qtcassert.h>
 
-#include <QtCore/QString>
+#include <QtGui/QIcon>
 #include <QtGui/QMessageBox>
 
+#include <QtCore/QString>
+
 using namespace ProjectExplorer;
 
 namespace RemoteLinux {
-- 
GitLab