cmTargetPropertyEntry: Accept a file set

Evaluate entries of a file set with its owner as current target, so that
its requirements can be evaluated for a consumer.
This commit is contained in:
Sergiu Deitsch committed 2026-10-30 22:44:45 +01:00
1 parent 173b0da32d
commit cafd167ba3
5 files changed
+27 -14

No files matched your search

+8 -5
View File
@@ -25,10 +25,12 @@ EvaluatedTargetPropertyEntry::EvaluatedTargetPropertyEntry(
EvaluatedTargetPropertyEntry EvaluateTargetPropertyEntry(
cmGeneratorTarget const* thisTarget, cm::GenEx::Context const& context,
cmGeneratorExpressionDAGChecker* dagChecker, cm::TargetPropertyEntry& entry)
cmGeneratorExpressionDAGChecker* dagChecker, cm::TargetPropertyEntry& entry,
cmGeneratorFileSet const* fileSet)
{
EvaluatedTargetPropertyEntry ee(entry.LinkItem, entry.GetBacktrace());
cmExpandList(entry.Evaluate(context, thisTarget, dagChecker), ee.Values);
cmExpandList(entry.Evaluate(context, thisTarget, dagChecker, fileSet),
ee.Values);
if (entry.GetHadContextSensitiveCondition()) {
ee.ContextDependent = true;
}
@@ -38,13 +40,14 @@ EvaluatedTargetPropertyEntry EvaluateTargetPropertyEntry(
EvaluatedTargetPropertyEntries EvaluateTargetPropertyEntries(
cmGeneratorTarget const* thisTarget, cm::GenEx::Context const& context,
cmGeneratorExpressionDAGChecker* dagChecker,
std::vector<std::unique_ptr<cm::TargetPropertyEntry>> const& in)
std::vector<std::unique_ptr<cm::TargetPropertyEntry>> const& in,
cmGeneratorFileSet const* fileSet)
{
EvaluatedTargetPropertyEntries out;
out.Entries.reserve(in.size());
for (auto const& entry : in) {
out.Entries.emplace_back(
EvaluateTargetPropertyEntry(thisTarget, context, dagChecker, *entry));
out.Entries.emplace_back(EvaluateTargetPropertyEntry(
thisTarget, context, dagChecker, *entry, fileSet));
}
return out;
}
+5 -2
View File
@@ -19,6 +19,7 @@ struct Context;
}
}
class cmGeneratorFileSet;
class cmLinkItem;
struct cmGeneratorExpressionDAGChecker;
@@ -45,7 +46,8 @@ struct EvaluatedTargetPropertyEntry
EvaluatedTargetPropertyEntry EvaluateTargetPropertyEntry(
cmGeneratorTarget const* thisTarget, cm::GenEx::Context const& context,
cmGeneratorExpressionDAGChecker* dagChecker, cm::TargetPropertyEntry& entry);
cmGeneratorExpressionDAGChecker* dagChecker, cm::TargetPropertyEntry& entry,
cmGeneratorFileSet const* fileSet = nullptr);
struct EvaluatedTargetPropertyEntries
{
@@ -56,7 +58,8 @@ struct EvaluatedTargetPropertyEntries
EvaluatedTargetPropertyEntries EvaluateTargetPropertyEntries(
cmGeneratorTarget const* thisTarget, cm::GenEx::Context const& context,
cmGeneratorExpressionDAGChecker* dagChecker,
std::vector<std::unique_ptr<cm::TargetPropertyEntry>> const& in);
std::vector<std::unique_ptr<cm::TargetPropertyEntry>> const& in,
cmGeneratorFileSet const* fileSet = nullptr);
// IncludeRuntimeInterface is used to break the cycle in computing
// the necessary transitive dependencies of targets that can occur
+2 -1
View File
@@ -59,7 +59,8 @@ public:
std::string const& Evaluate(
cm::GenEx::Context const& context, cmGeneratorTarget const* headTarget,
cmGeneratorExpressionDAGChecker* dagChecker) const override
cmGeneratorExpressionDAGChecker* dagChecker,
cmGeneratorFileSet const* /*fileSet*/) const override
{
std::map<std::string, std::vector<std::string>> filesPerDir;
this->FileSet->EvaluateFileEntry(this->BaseDirs, filesPerDir, this->Cge,
+9 -5
View File
@@ -9,6 +9,7 @@
#include <cm/memory>
#include "cmGeneratorExpression.h"
#include "cmGeneratorFileSet.h"
#include "cmLinkItem.h"
#include "cmListFileCache.h"
@@ -29,7 +30,8 @@ public:
std::string const& Evaluate(cm::GenEx::Context const&,
cmGeneratorTarget const*,
cmGeneratorExpressionDAGChecker*) const override
cmGeneratorExpressionDAGChecker*,
cmGeneratorFileSet const*) const override
{
return this->PropertyValue.Value;
}
@@ -57,11 +59,13 @@ public:
{
}
std::string const& Evaluate(
cm::GenEx::Context const& context, cmGeneratorTarget const* headTarget,
cmGeneratorExpressionDAGChecker* dagChecker) const override
std::string const& Evaluate(cm::GenEx::Context const& context,
cmGeneratorTarget const* headTarget,
cmGeneratorExpressionDAGChecker* dagChecker,
cmGeneratorFileSet const* fileSet) const override
{
return this->ge->Evaluate(context, dagChecker, headTarget);
return this->ge->Evaluate(context, dagChecker, headTarget,
fileSet ? fileSet->GetTarget() : nullptr);
}
cmListFileBacktrace GetBacktrace() const override
+3 -1
View File
@@ -9,6 +9,7 @@
class cmLinkItem;
class cmake;
class cmGeneratorFileSet;
class cmGeneratorTarget;
struct cmGeneratorExpressionDAGChecker;
@@ -32,7 +33,8 @@ public:
virtual std::string const& Evaluate(
cm::GenEx::Context const& context, cmGeneratorTarget const* headTarget,
cmGeneratorExpressionDAGChecker* dagChecker) const = 0;
cmGeneratorExpressionDAGChecker* dagChecker,
cmGeneratorFileSet const* fileSet) const = 0;
virtual cmListFileBacktrace GetBacktrace() const = 0;
virtual std::string const& GetInput() const = 0;