diff options
Diffstat (limited to 'src/lib/corelib/buildgraph/executor.cpp')
-rw-r--r-- | src/lib/corelib/buildgraph/executor.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp index 1c50f7234..c5f652db5 100644 --- a/src/lib/corelib/buildgraph/executor.cpp +++ b/src/lib/corelib/buildgraph/executor.cpp @@ -860,24 +860,27 @@ void Executor::potentiallyRunTransformer(const TransformerPtr &transformer) return; } - if (!mustExecuteTransformer(transformer)) { + const bool mustExecute = mustExecuteTransformer(transformer); + if (mustExecute || m_buildOptions.forceTimestampCheck()) { + for (Artifact * const output : qAsConst(transformer->outputs)) { + // Scan all input artifacts. If new dependencies were found during scanning, delay + // execution of this transformer. + InputArtifactScanner scanner(output, m_inputArtifactScanContext, m_logger); + AccumulatingTimer scanTimer(m_buildOptions.logElapsedTime() + ? &m_elapsedTimeScanners : nullptr); + scanner.scan(); + scanTimer.stop(); + if (scanner.newDependencyAdded() && checkForUnbuiltDependencies(output)) + return; + } + } + + if (!mustExecute) { qCDebug(lcExec) << "Up to date. Skipping."; finishTransformer(transformer); return; } - for (Artifact * const output : qAsConst(transformer->outputs)) { - // Scan all input artifacts. If new dependencies were found during scanning, delay - // execution of this transformer. - InputArtifactScanner scanner(output, m_inputArtifactScanContext, m_logger); - AccumulatingTimer scanTimer(m_buildOptions.logElapsedTime() - ? &m_elapsedTimeScanners : nullptr); - scanner.scan(); - scanTimer.stop(); - if (scanner.newDependencyAdded() && checkForUnbuiltDependencies(output)) - return; - } - if (m_buildOptions.executeRulesOnly()) finishTransformer(transformer); else |