summaryrefslogtreecommitdiff
path: root/src/lib/buildgraph
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-09-17 08:42:21 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-09-18 10:19:13 +0200
commite8d3ee487330f50c06a411e6ba52ca4b304db4cf (patch)
treef6f4d7954c5b4f609273c767da2b3a54e369ab56 /src/lib/buildgraph
parent37f23c0a86403247d74ace9f30f00a0bab9df346 (diff)
downloadqbs-e8d3ee487330f50c06a411e6ba52ca4b304db4cf.tar.gz
Transformer.explicitlyDependsOn added
Change-Id: If4f695878087f0cd72d85e497d918c4f70e42001 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/buildgraph')
-rw-r--r--src/lib/buildgraph/projectbuilddata.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/buildgraph/projectbuilddata.cpp b/src/lib/buildgraph/projectbuilddata.cpp
index bc2f74735..452a99675 100644
--- a/src/lib/buildgraph/projectbuilddata.cpp
+++ b/src/lib/buildgraph/projectbuilddata.cpp
@@ -284,6 +284,8 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc
}
// read manually added transformers
+ typedef QPair<ResolvedTransformerConstPtr, TransformerConstPtr> TrafoPair;
+ QList<TrafoPair> trafos;
foreach (const ResolvedTransformerConstPtr &rtrafo, product->transformers) {
ArtifactList inputArtifacts;
foreach (const QString &inputFileName, rtrafo->inputs) {
@@ -293,6 +295,7 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc
inputArtifacts += artifact;
}
TransformerPtr transformer = Transformer::create();
+ trafos += TrafoPair(rtrafo, transformer);
transformer->inputs = inputArtifacts;
const RulePtr rule = Rule::create();
rule->jsImports = rtrafo->jsImports;
@@ -328,6 +331,19 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc
throw ErrorInfo(QString("There's a transformer without commands."), rtrafo->transform->location);
}
+ // Handle Transformer.explicitlyDependsOn after all transformer outputs have been created.
+ foreach (const TrafoPair &p, trafos) {
+ const ResolvedTransformerConstPtr &rtrafo = p.first;
+ const TransformerConstPtr &trafo = p.second;
+ foreach (const FileTag &tag, rtrafo->explicitlyDependsOn) {
+ foreach (Artifact *output, trafo->outputs) {
+ foreach (Artifact *dependency, artifactsPerFileTag.value(tag)) {
+ loggedConnect(output, dependency, m_logger);
+ }
+ }
+ }
+ }
+
RulesApplicator(product, artifactsPerFileTag, m_logger).applyAllRules();
addTargetArtifacts(product, artifactsPerFileTag, m_logger);
}