From cd30304685e45c270f073412d38e279e1921b3d5 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 2 Nov 2016 14:24:40 +0100 Subject: [PATCH] fix cumulative qmake evaluation in debug_and_release configs don't fail to make the build pass evaluator cumulative as well. Task-number: QTCREATORBUG-17214 Change-Id: I217578b7d29d0dcf9ef63c954ec403412812c70c Reviewed-by: Orgad Shaneh --- src/plugins/qmakeprojectmanager/qmakenodes.cpp | 7 ++++--- src/plugins/qmakeprojectmanager/qmakenodes.h | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index e802968c9ab..154c10851c9 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -1776,7 +1776,7 @@ void QmakeProFileNode::setupReader() bool QmakeProFileNode::evaluateOne( const EvalInput &input, ProFile *pro, QtSupport::ProFileReader *reader, - QtSupport::ProFileReader **buildPassReader) + bool cumulative, QtSupport::ProFileReader **buildPassReader) { if (!reader->accept(pro, QMakeEvaluator::LoadAll)) return false; @@ -1797,6 +1797,7 @@ bool QmakeProFileNode::evaluateOne( // We don't increase/decrease m_qmakeGlobalsRefCnt here, because the outer profilereaders keep m_qmakeGlobals alive anyway auto bpReader = new QtSupport::ProFileReader(input.qmakeGlobals, input.qmakeVfs); // needs to access m_qmakeGlobals, m_qmakeVfs bpReader->setOutputDir(input.buildDirectory); + bpReader->setCumulative(cumulative); bpReader->setExtraVars(basevars); bpReader->setExtraConfigs(basecfgs); @@ -1816,8 +1817,8 @@ EvalResult *QmakeProFileNode::evaluate(const EvalInput &input) QtSupport::ProFileReader *cumulativeBuildPassReader = nullptr; ProFile *pro; if ((pro = input.readerExact->parsedProFile(input.projectFilePath.toString()))) { - bool exactOk = evaluateOne(input, pro, input.readerExact, &exactBuildPassReader); - bool cumulOk = evaluateOne(input, pro, input.readerCumulative, &cumulativeBuildPassReader); + bool exactOk = evaluateOne(input, pro, input.readerExact, false, &exactBuildPassReader); + bool cumulOk = evaluateOne(input, pro, input.readerCumulative, true, &cumulativeBuildPassReader); pro->deref(); result->state = exactOk ? EvalResult::EvalOk : cumulOk ? EvalResult::EvalPartial : EvalResult::EvalFail; } else { diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index e7d3a3f8b25..01228a8f9f9 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -374,7 +374,9 @@ private: void setupReader(); Internal::EvalInput evalInput() const; - static bool evaluateOne(const Internal::EvalInput &input, ProFile *pro, QtSupport::ProFileReader *reader, QtSupport::ProFileReader **buildPassReader); + static bool evaluateOne( + const Internal::EvalInput &input, ProFile *pro, QtSupport::ProFileReader *reader, + bool cumulative, QtSupport::ProFileReader **buildPassReader); static Internal::EvalResult *evaluate(const Internal::EvalInput &input); void applyEvaluate(Internal::EvalResult *parseResult);