1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
11 #include "cmListFileCache.h"
13 struct GeneratorExpressionContent
;
14 struct cmGeneratorExpressionContext
;
15 class cmGeneratorTarget
;
16 class cmLocalGenerator
;
18 struct cmGeneratorExpressionDAGChecker
20 cmGeneratorExpressionDAGChecker(cmListFileBacktrace backtrace
,
21 cmGeneratorTarget
const* target
,
23 const GeneratorExpressionContent
* content
,
24 cmGeneratorExpressionDAGChecker
* parent
,
25 cmLocalGenerator
const* contextLG
,
26 std::string
const& contextConfig
);
27 cmGeneratorExpressionDAGChecker(cmGeneratorTarget
const* target
,
29 const GeneratorExpressionContent
* content
,
30 cmGeneratorExpressionDAGChecker
* parent
,
31 cmLocalGenerator
const* contextLG
,
32 std::string
const& contextConfig
);
44 void ReportError(cmGeneratorExpressionContext
* context
,
45 const std::string
& expr
);
47 bool EvaluatingTransitiveProperty() const;
48 bool EvaluatingGenexExpression() const;
49 bool EvaluatingPICExpression() const;
50 bool EvaluatingCompileExpression() const;
51 bool EvaluatingLinkExpression() const;
52 bool EvaluatingLinkOptionsExpression() const;
53 bool EvaluatingLinkerLauncher() const;
61 bool EvaluatingLinkLibraries(cmGeneratorTarget
const* tgt
= nullptr,
62 ForGenex genex
= ForGenex::ANY
) const;
64 bool EvaluatingSources() const;
66 bool GetTransitivePropertiesOnly() const;
67 void SetTransitivePropertiesOnly() { this->TransitivePropertiesOnly
= true; }
69 bool GetTransitivePropertiesOnlyCMP0131() const;
70 void SetTransitivePropertiesOnlyCMP0131() { this->CMP0131
= true; }
72 cmGeneratorTarget
const* TopTarget() const;
75 Result
CheckGraph() const;
77 const cmGeneratorExpressionDAGChecker
* const Parent
;
78 const cmGeneratorExpressionDAGChecker
* const Top
;
79 cmGeneratorTarget
const* Target
;
80 const std::string Property
;
81 mutable std::map
<cmGeneratorTarget
const*, std::set
<std::string
>> Seen
;
82 const GeneratorExpressionContent
* const Content
;
83 const cmListFileBacktrace Backtrace
;
85 bool TransitivePropertiesOnly
= false;
87 bool TopIsTransitiveProperty
= false;