From c07a6118a1e507b4bd5e12edf1687878c798d781 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Thu, 12 Aug 2010 12:18:11 +0200
Subject: [PATCH] Fix build no longer failing on broken ABLD builds (Symbian)

 * Make the behaviour less implicit while doing this: Hopefully
   that will stop it from getting broken again.
---
 src/plugins/qt4projectmanager/makestep.cpp | 10 ++++++----
 src/plugins/qt4projectmanager/makestep.h   |  2 ++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index e49ccb539ce..51514a2a454 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -173,13 +173,16 @@ bool MakeStep::init()
     setEnabled(true);
     setArguments(args);
 
+    m_gnuMakeParser = 0;
+
     if (bc->qtVersion()->supportsTargetId(Qt4ProjectManager::Constants::S60_DEVICE_TARGET_ID) ||
         bc->qtVersion()->supportsTargetId(Qt4ProjectManager::Constants::S60_EMULATOR_TARGET_ID)) {
         if (bc->qtVersion()->isBuildWithSymbianSbsV2()) {
             setOutputParser(new SbsV2Parser);
         } else {
             setOutputParser(new AbldParser);
-            appendOutputParser(new ProjectExplorer::GnuMakeParser(workingDirectory));
+            m_gnuMakeParser = new ProjectExplorer::GnuMakeParser(workingDirectory);
+            appendOutputParser(m_gnuMakeParser);
         }
     } else {
         setOutputParser(new ProjectExplorer::GnuMakeParser(workingDirectory));
@@ -205,9 +208,8 @@ void MakeStep::run(QFutureInterface<bool> & fi)
 bool MakeStep::processSucceeded(int exitCode, QProcess::ExitStatus status)
 {
     // Symbian does retun 0, even on failed makes! So we check for fatal make errors here.
-    ProjectExplorer::GnuMakeParser *parser = qobject_cast<ProjectExplorer::GnuMakeParser *>(outputParser());
-    if (parser && parser->fatalErrors() != 0)
-        return false;
+    if (m_gnuMakeParser)
+        return m_gnuMakeParser->fatalErrors() == 0;
 
     return AbstractProcessStep::processSucceeded(exitCode, status);
 }
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index 388125bc5d9..ee650b41365 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -41,6 +41,7 @@ QT_END_NAMESPACE
 
 namespace ProjectExplorer {
 class BuildStep;
+class GnuMakeParser;
 class IBuildStepFactory;
 class Project;
 }
@@ -109,6 +110,7 @@ private:
     bool m_clean;
     QStringList m_userArgs;
     QString m_makeCmd;
+    ProjectExplorer::GnuMakeParser * m_gnuMakeParser;
 };
 
 class MakeStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget
-- 
GitLab