aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-06-13 18:07:23 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-06-14 07:39:17 +0000
commitbca581c86a61412cb8c09a76f7f1805f57d22980 (patch)
treee3bcb9f9b42329a8c5be3db538981aa17b0cab6d
parent9bb30e0d4e208324573a7d13165304966a8b8a64 (diff)
Makefile generator: Improve dependency collection performance
Use the output artifact's children directly rather than "manually" collecting the input artifacts from the rule input tags. Change-Id: I3a31d24471a963c1881e89d76da61b0bcf28cc1a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/api/project.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp
index 69c7edf77..bad18cab9 100644
--- a/src/lib/corelib/api/project.cpp
+++ b/src/lib/corelib/api/project.cpp
@@ -801,16 +801,14 @@ ProjectTransformerData ProjectPrivate::transformerData()
ProductTransformerData productTransformerData;
for (const Transformer * const t : allTransformers) {
TransformerData tData;
- for (Artifact * const a : t->inputs)
- tData.d->inputs << createArtifactData(a, product, targetArtifacts);
- for (Artifact * const a : t->explicitlyDependsOn)
- tData.d->inputs << createArtifactData(a, product, targetArtifacts);
- for (Artifact * const a
- : RulesApplicator::collectAuxiliaryInputs(t->rule.get(), product.get())) {
- tData.d->inputs << createArtifactData(a, product, targetArtifacts);
- }
- for (Artifact * const a : t->outputs)
+ Set<const Artifact *> allInputs;
+ for (Artifact * const a : t->outputs) {
tData.d->outputs << createArtifactData(a, product, targetArtifacts);
+ for (const Artifact * const child : filterByType<Artifact>(a->children))
+ allInputs << child;
+ }
+ for (const Artifact * const input : allInputs)
+ tData.d->inputs << createArtifactData(input, product, targetArtifacts);
tData.d->commands = ruleCommandListForTransformer(t);
productTransformerData << tData;
}