summaryrefslogtreecommitdiffstats
path: root/qmake/library/qmakeevaluator.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2020-11-24 12:57:28 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2020-11-26 20:05:41 +0100
commit032c536644644e535584fff57ac7e115956e3e44 (patch)
tree7f029c45b54d6ae42a545247d8906768e9160dd0 /qmake/library/qmakeevaluator.cpp
parent6269438af95bbd988ead08829fa3bc9dc25891e8 (diff)
qmake: Sync back changes from qttools
Copy back changes to qmake internals that were done in qttools. This makes it easier to keep the qmakelib copies in sync. The code guarded by PROEVALUATOR_CUMULATIVE is not used by qmake itself, but only by lupdate and Qt Creator. It seems to be sensible to have the same behavior with regards to feature file evaluation in both projects. It was originally introduced in qttools for QTBUG-62478. The change regarding QT_BOOTSTRAPPED is safe, because the 'process' feature is available and off in the boostrapped case. Change-Id: I030ca8b093c017040a9ff9f4bb09a7cca4aa8964 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'qmake/library/qmakeevaluator.cpp')
-rw-r--r--qmake/library/qmakeevaluator.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp
index e3b20771d4..14d940b4b7 100644
--- a/qmake/library/qmakeevaluator.cpp
+++ b/qmake/library/qmakeevaluator.cpp
@@ -2050,6 +2050,10 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFeatureFile(
#ifdef PROEVALUATOR_CUMULATIVE
bool cumulative = m_cumulative;
+ // Even when evaluating the project in cumulative mode to maximize the
+ // chance of collecting all source declarations, prfs are evaluated in
+ // exact mode to maximize the chance of them successfully executing
+ // their programmatic function.
m_cumulative = false;
#endif
@@ -2058,6 +2062,13 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFeatureFile(
#ifdef PROEVALUATOR_CUMULATIVE
m_cumulative = cumulative;
+ if (cumulative) {
+ // As the data collected in cumulative mode is potentially total
+ // garbage, yet the prfs fed with it are executed in exact mode,
+ // we must ignore their results to avoid that evaluation is unduly
+ // aborted.
+ ok = ReturnTrue;
+ }
#endif
return ok;
}