diff options
author | dt <qtc-committer@nokia.com> | 2010-07-07 16:32:23 +0200 |
---|---|---|
committer | dt <qtc-committer@nokia.com> | 2010-07-07 18:17:24 +0200 |
commit | 870da8e7e3b2eac3db0cbfce5f43316b1c3a4b1a (patch) | |
tree | 9080e2fd7a2a8cf6440c656d7e92c5c3161d6ed1 | |
parent | 008d8cb114cbb874f920f4cc53e809cd9b3ff2f3 (diff) | |
download | qt-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
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 |