aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/corelib/buildgraph/rulenode.cpp2
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp2
-rw-r--r--src/lib/corelib/language/language.cpp3
3 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/corelib/buildgraph/rulenode.cpp b/src/lib/corelib/buildgraph/rulenode.cpp
index 6c10b3dd4..27f2d2c55 100644
--- a/src/lib/corelib/buildgraph/rulenode.cpp
+++ b/src/lib/corelib/buildgraph/rulenode.cpp
@@ -204,6 +204,8 @@ ArtifactSet RuleNode::currentInputArtifacts() const
// This can e.g. happen for the ["cpp", "hpp"] -> ["hpp", "cpp", "unmocable"] rule.
continue;
}
+ if (artifact->fileTags().intersects(m_rule->excludedInputs))
+ continue;
s += artifact;
}
}
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 2bf20496a..1144e5ff5 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -177,6 +177,8 @@ static QStringList toStringList(const ArtifactSet &artifacts)
void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &prepareScriptContext)
{
evalContext()->checkForCancelation();
+ for (const Artifact *inputArtifact : inputArtifacts)
+ QBS_CHECK(!inputArtifact->fileTags().intersects(m_rule->excludedInputs));
qCDebug(lcBuildGraph) << "apply rule" << m_rule->toString()
<< toStringList(inputArtifacts).join(QLatin1String(",\n "));
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index ac78b06c5..56c310272 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -281,7 +281,8 @@ QString Rule::toString() const
bool Rule::acceptsAsInput(Artifact *artifact) const
{
- return artifact->fileTags().intersects(inputs);
+ return artifact->fileTags().intersects(inputs)
+ && !artifact->fileTags().intersects(excludedInputs);
}
FileTags Rule::staticOutputFileTags() const