summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2010-07-07 16:32:23 +0200
committerdt <qtc-committer@nokia.com>2010-07-07 18:17:24 +0200
commit870da8e7e3b2eac3db0cbfce5f43316b1c3a4b1a (patch)
tree9080e2fd7a2a8cf6440c656d7e92c5c3161d6ed1
parent008d8cb114cbb874f920f4cc53e809cd9b3ff2f3 (diff)
downloadqt-creator-870da8e7e3b2eac3db0cbfce5f43316b1c3a4b1a.tar.gz
Make the build parser for custom build steps depend on the toolchain
The API addtition to BuildConfiguration of knowing of the default parser is rather strange, but a necessary evil for this. Reviewed-By: Thorbjorn Task-Nr: QTCREATORBUG-514
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp7
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h2
-rw-r--r--src/plugins/genericprojectmanager/genericbuildconfiguration.cpp9
-rw-r--r--src/plugins/genericprojectmanager/genericbuildconfiguration.h2
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.h8
-rw-r--r--src/plugins/projectexplorer/processstep.cpp2
-rw-r--r--src/plugins/qt4projectmanager/qt4buildconfiguration.cpp8
-rw-r--r--src/plugins/qt4projectmanager/qt4buildconfiguration.h2
8 files changed, 39 insertions, 1 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 0dba078adc..029aba3d94 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -153,6 +153,13 @@ void CMakeBuildConfiguration::setMsvcVersion(const QString &msvcVersion)
emit msvcVersionChanged();
}
+ProjectExplorer::IOutputParser *CMakeBuildConfiguration::createOutputParser() const
+{
+ if (m_toolChain)
+ return m_toolChain->outputParser();
+ return 0;
+}
+
/*!
\class CMakeBuildConfigurationFactory
*/
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index 6fb65a9017..867838c46b 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -62,6 +62,8 @@ public:
QVariantMap toMap() const;
+ ProjectExplorer::IOutputParser *createOutputParser() const;
+
signals:
void msvcVersionChanged();
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index 1d575e33c3..ab83eb0354 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -50,6 +50,7 @@ const char * const BUILD_DIRECTORY_KEY("GenericProjectManager.GenericBuildConfig
GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent)
: BuildConfiguration(parent, QLatin1String(GENERIC_BC_ID))
{
+
}
GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent, const QString &id)
@@ -116,6 +117,14 @@ GenericTarget *GenericBuildConfiguration::genericTarget() const
return static_cast<GenericTarget *>(target());
}
+ProjectExplorer::IOutputParser *GenericBuildConfiguration::createOutputParser() const
+{
+ ProjectExplorer::ToolChain *tc = genericTarget()->genericProject()->toolChain();
+ if (tc)
+ return tc->outputParser();
+ return 0;
+}
+
/*!
\class GenericBuildConfigurationFactory
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
index cc70616ff1..eae5d0e749 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
@@ -57,6 +57,8 @@ public:
QVariantMap toMap() const;
+ ProjectExplorer::IOutputParser *createOutputParser() const;
+
protected:
GenericBuildConfiguration(GenericTarget *parent, GenericBuildConfiguration *source);
GenericBuildConfiguration(GenericTarget *parent, const QString &id);
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index e2c938656d..d095206106 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -44,6 +44,7 @@
namespace ProjectExplorer {
class Target;
+class IOutputParser;
class PROJECTEXPLORER_EXPORT BuildConfiguration : public ProjectConfiguration
{
@@ -73,6 +74,13 @@ public:
virtual QVariantMap toMap() const;
+ // Creates a suitable outputparser for custom build steps
+ // (based on the toolchain)
+ // TODO this is not great API
+ // it's mainly so that custom build systems are better integrated
+ // with the generic project manager
+ virtual IOutputParser *createOutputParser() const = 0;
+
signals:
void environmentChanged();
void buildDirectoryChanged();
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index fbb9ee8e35..7254dc59c7 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -94,7 +94,7 @@ bool ProcessStep::init()
AbstractProcessStep::setCommand(m_command);
AbstractProcessStep::setEnabled(m_enabled);
AbstractProcessStep::setArguments(m_arguments);
- setOutputParser(0);
+ setOutputParser(buildConfiguration()->createOutputParser());
return AbstractProcessStep::init();
}
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 4c014c06d6..b8807d8eef 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -556,6 +556,14 @@ QString Qt4BuildConfiguration::extractSpecFromArgumentList(const QStringList &li
return parsedSpec;
}
+ProjectExplorer::IOutputParser *Qt4BuildConfiguration::createOutputParser() const
+{
+ ToolChain *tc = toolChain();
+ if (tc)
+ return toolChain()->outputParser();
+ return 0;
+}
+
/*!
\class Qt4BuildConfigurationFactory
*/
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
index 93a3a435f8..e9fea98895 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
@@ -106,6 +106,8 @@ public:
QVariantMap toMap() const;
+ ProjectExplorer::IOutputParser *createOutputParser() const;
+
signals:
/// emitted if the qt version changes (either directly, or because the default qt version changed
/// or because the user changed the settings for the qt version