summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-04-10 13:44:03 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-04-10 13:44:13 (GMT)
commit1a315c55e3c934d1eead9842adaad66c0079ce5e (patch)
tree25dfec5019e7e33671a488eb74841f35104bd9dc
parent099aa4b51a639d9d8210cda8ca79d08f2e0b5901 (diff)
parent50840902ceb2fe14d47f2c26c3392bf70ac18d14 (diff)
downloadCMake-1a315c55e3c934d1eead9842adaad66c0079ce5e.zip
CMake-1a315c55e3c934d1eead9842adaad66c0079ce5e.tar.gz
CMake-1a315c55e3c934d1eead9842adaad66c0079ce5e.tar.bz2
Merge topic 'genex-cleanup'
50840902ce cmGeneratorExpressionDAGChecker: Simplify finding evaluation graph root 304f4c261e cmGeneratorExpressionDAGChecker: Simplify member initialization c620d8d9cf cmGeneratorExpressionDAGChecker: Clarify COMPILE_DEFINITIONS special case a585e410c0 cmGeneratorExpressionDAGChecker: Inline initialization in constructor 40788cb1e6 cmGeneratorExpressionDAGChecker: Reduce duplication in constructor Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !9413
-rw-r--r--Source/cmGeneratorExpressionDAGChecker.cxx69
-rw-r--r--Source/cmGeneratorExpressionDAGChecker.h7
2 files changed, 26 insertions, 50 deletions
diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx
index 4e46df7..da5785e 100644
--- a/Source/cmGeneratorExpressionDAGChecker.cxx
+++ b/Source/cmGeneratorExpressionDAGChecker.cxx
@@ -18,38 +18,26 @@
#include "cmake.h"
cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
- cmListFileBacktrace backtrace, cmGeneratorTarget const* target,
- std::string property, const GeneratorExpressionContent* content,
+ cmGeneratorTarget const* target, std::string property,
+ const GeneratorExpressionContent* content,
cmGeneratorExpressionDAGChecker* parent)
- : Parent(parent)
- , Target(target)
- , Property(std::move(property))
- , Content(content)
- , Backtrace(std::move(backtrace))
- , TransitivePropertiesOnly(false)
- , CMP0131(false)
+ : cmGeneratorExpressionDAGChecker(cmListFileBacktrace(), target,
+ std::move(property), content, parent)
{
- this->Initialize();
}
cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
- cmGeneratorTarget const* target, std::string property,
- const GeneratorExpressionContent* content,
+ cmListFileBacktrace backtrace, cmGeneratorTarget const* target,
+ std::string property, const GeneratorExpressionContent* content,
cmGeneratorExpressionDAGChecker* parent)
: Parent(parent)
+ , Top(parent ? parent->Top : this)
, Target(target)
, Property(std::move(property))
, Content(content)
- , Backtrace()
- , TransitivePropertiesOnly(false)
- , CMP0131(false)
-{
- this->Initialize();
-}
-
-void cmGeneratorExpressionDAGChecker::Initialize()
+ , Backtrace(std::move(backtrace))
{
- const auto* top = this->Top();
+ const auto* top = this->Top;
this->CheckResult = this->CheckGraph();
#define TEST_TRANSITIVE_PROPERTY_METHOD(METHOD) top->METHOD() ||
@@ -142,13 +130,13 @@ cmGeneratorExpressionDAGChecker::CheckGraph() const
bool cmGeneratorExpressionDAGChecker::GetTransitivePropertiesOnly() const
{
- return this->Top()->TransitivePropertiesOnly;
+ return this->Top->TransitivePropertiesOnly;
}
bool cmGeneratorExpressionDAGChecker::GetTransitivePropertiesOnlyCMP0131()
const
{
- return this->Top()->CMP0131;
+ return this->Top->CMP0131;
}
bool cmGeneratorExpressionDAGChecker::EvaluatingGenexExpression() const
@@ -159,12 +147,12 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingGenexExpression() const
bool cmGeneratorExpressionDAGChecker::EvaluatingPICExpression() const
{
- return this->Top()->Property == "INTERFACE_POSITION_INDEPENDENT_CODE";
+ return this->Top->Property == "INTERFACE_POSITION_INDEPENDENT_CODE";
}
bool cmGeneratorExpressionDAGChecker::EvaluatingCompileExpression() const
{
- cm::string_view property(this->Top()->Property);
+ cm::string_view property(this->Top->Property);
return property == "INCLUDE_DIRECTORIES"_s ||
property == "COMPILE_DEFINITIONS"_s || property == "COMPILE_OPTIONS"_s;
@@ -172,7 +160,7 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingCompileExpression() const
bool cmGeneratorExpressionDAGChecker::EvaluatingLinkExpression() const
{
- cm::string_view property(this->Top()->Property);
+ cm::string_view property(this->Top->Property);
return property == "LINK_DIRECTORIES"_s || property == "LINK_OPTIONS"_s ||
property == "LINK_DEPENDS"_s || property == "LINK_LIBRARY_OVERRIDE"_s ||
@@ -181,14 +169,14 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkExpression() const
bool cmGeneratorExpressionDAGChecker::EvaluatingLinkOptionsExpression() const
{
- cm::string_view property(this->Top()->Property);
+ cm::string_view property(this->Top->Property);
return property == "LINK_OPTIONS"_s || property == "LINKER_TYPE"_s;
}
bool cmGeneratorExpressionDAGChecker::EvaluatingLinkerLauncher() const
{
- cm::string_view property(this->Top()->Property);
+ cm::string_view property(this->Top->Property);
return property.length() > cmStrLen("_LINKER_LAUNCHER") &&
property.substr(property.length() - cmStrLen("_LINKER_LAUNCHER")) ==
@@ -198,7 +186,7 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkerLauncher() const
bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries(
cmGeneratorTarget const* tgt, ForGenex genex) const
{
- const auto* top = this->Top();
+ const auto* top = this->Top;
cm::string_view prop(top->Property);
@@ -219,29 +207,17 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries(
: (result || prop == "INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE"_s);
}
-cmGeneratorExpressionDAGChecker const* cmGeneratorExpressionDAGChecker::Top()
- const
-{
- const cmGeneratorExpressionDAGChecker* top = this;
- const cmGeneratorExpressionDAGChecker* parent = this->Parent;
- while (parent) {
- top = parent;
- parent = parent->Parent;
- }
- return top;
-}
-
cmGeneratorTarget const* cmGeneratorExpressionDAGChecker::TopTarget() const
{
- return this->Top()->Target;
+ return this->Top->Target;
}
-enum TransitiveProperty
+enum class TransitiveProperty
{
#define DEFINE_ENUM_ENTRY(NAME) NAME,
CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(DEFINE_ENUM_ENTRY)
#undef DEFINE_ENUM_ENTRY
- TransitivePropertyTerminal
+ Terminal
};
template <TransitiveProperty>
@@ -251,7 +227,8 @@ bool additionalTest(const char* const /*unused*/)
}
template <>
-bool additionalTest<COMPILE_DEFINITIONS>(const char* const prop)
+bool additionalTest<TransitiveProperty::COMPILE_DEFINITIONS>(
+ const char* const prop)
{
return cmHasLiteralPrefix(prop, "COMPILE_DEFINITIONS_");
}
@@ -264,7 +241,7 @@ bool additionalTest<COMPILE_DEFINITIONS>(const char* const prop)
strcmp(prop, "INTERFACE_" #PROPERTY) == 0) { \
return true; \
} \
- return additionalTest<PROPERTY>(prop); \
+ return additionalTest<TransitiveProperty::PROPERTY>(prop); \
}
CM_FOR_EACH_TRANSITIVE_PROPERTY(DEFINE_TRANSITIVE_PROPERTY_METHOD)
diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h
index 782d6c8..2f88386 100644
--- a/Source/cmGeneratorExpressionDAGChecker.h
+++ b/Source/cmGeneratorExpressionDAGChecker.h
@@ -94,20 +94,19 @@ struct cmGeneratorExpressionDAGChecker
bool GetTransitivePropertiesOnlyCMP0131() const;
void SetTransitivePropertiesOnlyCMP0131() { this->CMP0131 = true; }
- cmGeneratorExpressionDAGChecker const* Top() const;
cmGeneratorTarget const* TopTarget() const;
private:
Result CheckGraph() const;
- void Initialize();
const cmGeneratorExpressionDAGChecker* const Parent;
+ const cmGeneratorExpressionDAGChecker* const Top;
cmGeneratorTarget const* Target;
const std::string Property;
mutable std::map<cmGeneratorTarget const*, std::set<std::string>> Seen;
const GeneratorExpressionContent* const Content;
const cmListFileBacktrace Backtrace;
Result CheckResult;
- bool TransitivePropertiesOnly;
- bool CMP0131;
+ bool TransitivePropertiesOnly = false;
+ bool CMP0131 = false;
};