diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index e3b20771d4a..14d940b4b7b 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; } diff --git a/qmake/library/qmakeglobals.cpp b/qmake/library/qmakeglobals.cpp index 471d9071e13..247084f6c61 100644 --- a/qmake/library/qmakeglobals.cpp +++ b/qmake/library/qmakeglobals.cpp @@ -311,7 +311,7 @@ QString QMakeGlobals::expandEnvVars(const QString &str) const bool QMakeGlobals::initProperties() { QByteArray data; -#ifndef QT_BOOTSTRAPPED +#if QT_CONFIG(process) QProcess proc; proc.start(qmake_abslocation, QStringList() << QLatin1String("-query")); if (!proc.waitForFinished()) diff --git a/qmake/library/qmakeglobals.h b/qmake/library/qmakeglobals.h index 58b22ba8c59..55e70ac784a 100644 --- a/qmake/library/qmakeglobals.h +++ b/qmake/library/qmakeglobals.h @@ -38,7 +38,7 @@ #include #include -#ifndef QT_BOOTSTRAPPED +#if QT_CONFIG(process) # include #endif #ifdef PROEVALUATOR_THREAD_SAFE