diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-13 18:07:23 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-14 07:39:17 +0000 |
commit | bca581c86a61412cb8c09a76f7f1805f57d22980 (patch) | |
tree | e3bcb9f9b42329a8c5be3db538981aa17b0cab6d | |
parent | 9bb30e0d4e208324573a7d13165304966a8b8a64 (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.cpp | 16 |
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; } |