mirror of
https://github.com/Kitware/CMake.git
synced 2026-11-06 05:16:58 +00:00
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:
5 files changed
+27
-14
No files matched your search
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user