From 40788cb1e6d40c6ffacd6d4409aa500d93376496 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Apr 2024 18:55:54 -0400 Subject: cmGeneratorExpressionDAGChecker: Reduce duplication in constructor --- Source/cmGeneratorExpressionDAGChecker.cxx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index 4e46df7..a0566f5 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -36,15 +36,9 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( cmGeneratorTarget const* target, std::string property, const GeneratorExpressionContent* content, cmGeneratorExpressionDAGChecker* parent) - : Parent(parent) - , Target(target) - , Property(std::move(property)) - , Content(content) - , Backtrace() - , TransitivePropertiesOnly(false) - , CMP0131(false) + : cmGeneratorExpressionDAGChecker(cmListFileBacktrace(), target, + std::move(property), content, parent) { - this->Initialize(); } void cmGeneratorExpressionDAGChecker::Initialize() -- cgit v0.12 From a585e410c0329e46175c9aa85fcaaeca667b8ff8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Apr 2024 18:59:02 -0400 Subject: cmGeneratorExpressionDAGChecker: Inline initialization in constructor --- Source/cmGeneratorExpressionDAGChecker.cxx | 23 +++++++++-------------- Source/cmGeneratorExpressionDAGChecker.h | 1 - 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index a0566f5..8cd4840 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -18,6 +18,15 @@ #include "cmake.h" cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( + cmGeneratorTarget const* target, std::string property, + const GeneratorExpressionContent* content, + cmGeneratorExpressionDAGChecker* parent) + : cmGeneratorExpressionDAGChecker(cmListFileBacktrace(), target, + std::move(property), content, parent) +{ +} + +cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( cmListFileBacktrace backtrace, cmGeneratorTarget const* target, std::string property, const GeneratorExpressionContent* content, cmGeneratorExpressionDAGChecker* parent) @@ -29,20 +38,6 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( , TransitivePropertiesOnly(false) , CMP0131(false) { - this->Initialize(); -} - -cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( - cmGeneratorTarget const* target, std::string property, - const GeneratorExpressionContent* content, - cmGeneratorExpressionDAGChecker* parent) - : cmGeneratorExpressionDAGChecker(cmListFileBacktrace(), target, - std::move(property), content, parent) -{ -} - -void cmGeneratorExpressionDAGChecker::Initialize() -{ const auto* top = this->Top(); this->CheckResult = this->CheckGraph(); diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h index 782d6c8..5f333fc 100644 --- a/Source/cmGeneratorExpressionDAGChecker.h +++ b/Source/cmGeneratorExpressionDAGChecker.h @@ -99,7 +99,6 @@ struct cmGeneratorExpressionDAGChecker private: Result CheckGraph() const; - void Initialize(); const cmGeneratorExpressionDAGChecker* const Parent; cmGeneratorTarget const* Target; -- cgit v0.12 From c620d8d9cf45087edb232f68fc5a2f532377d893 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Apr 2024 19:01:24 -0400 Subject: cmGeneratorExpressionDAGChecker: Clarify COMPILE_DEFINITIONS special case --- Source/cmGeneratorExpressionDAGChecker.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index 8cd4840..71d1694 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -225,12 +225,12 @@ cmGeneratorTarget const* cmGeneratorExpressionDAGChecker::TopTarget() const 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 @@ -240,7 +240,8 @@ bool additionalTest(const char* const /*unused*/) } template <> -bool additionalTest(const char* const prop) +bool additionalTest( + const char* const prop) { return cmHasLiteralPrefix(prop, "COMPILE_DEFINITIONS_"); } @@ -253,7 +254,7 @@ bool additionalTest(const char* const prop) strcmp(prop, "INTERFACE_" #PROPERTY) == 0) { \ return true; \ } \ - return additionalTest(prop); \ + return additionalTest(prop); \ } CM_FOR_EACH_TRANSITIVE_PROPERTY(DEFINE_TRANSITIVE_PROPERTY_METHOD) -- cgit v0.12 From 304f4c261ebaa04d27ca9f4d82848cc09ba47eb9 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Apr 2024 19:03:12 -0400 Subject: cmGeneratorExpressionDAGChecker: Simplify member initialization --- Source/cmGeneratorExpressionDAGChecker.cxx | 2 -- Source/cmGeneratorExpressionDAGChecker.h | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index 71d1694..85cfa2a 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -35,8 +35,6 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( , Property(std::move(property)) , Content(content) , Backtrace(std::move(backtrace)) - , TransitivePropertiesOnly(false) - , CMP0131(false) { const auto* top = this->Top(); this->CheckResult = this->CheckGraph(); diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h index 5f333fc..6d99d9b 100644 --- a/Source/cmGeneratorExpressionDAGChecker.h +++ b/Source/cmGeneratorExpressionDAGChecker.h @@ -107,6 +107,6 @@ private: const GeneratorExpressionContent* const Content; const cmListFileBacktrace Backtrace; Result CheckResult; - bool TransitivePropertiesOnly; - bool CMP0131; + bool TransitivePropertiesOnly = false; + bool CMP0131 = false; }; -- cgit v0.12 From 50840902ceb2fe14d47f2c26c3392bf70ac18d14 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Apr 2024 19:24:33 -0400 Subject: cmGeneratorExpressionDAGChecker: Simplify finding evaluation graph root --- Source/cmGeneratorExpressionDAGChecker.cxx | 33 ++++++++++-------------------- Source/cmGeneratorExpressionDAGChecker.h | 2 +- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index 85cfa2a..da5785e 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -31,12 +31,13 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( std::string property, const GeneratorExpressionContent* content, cmGeneratorExpressionDAGChecker* parent) : Parent(parent) + , Top(parent ? parent->Top : this) , Target(target) , Property(std::move(property)) , Content(content) , 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() || @@ -129,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 @@ -146,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; @@ -159,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 || @@ -168,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")) == @@ -185,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); @@ -206,21 +207,9 @@ 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 class TransitiveProperty diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h index 6d99d9b..2f88386 100644 --- a/Source/cmGeneratorExpressionDAGChecker.h +++ b/Source/cmGeneratorExpressionDAGChecker.h @@ -94,13 +94,13 @@ struct cmGeneratorExpressionDAGChecker bool GetTransitivePropertiesOnlyCMP0131() const; void SetTransitivePropertiesOnlyCMP0131() { this->CMP0131 = true; } - cmGeneratorExpressionDAGChecker const* Top() const; cmGeneratorTarget const* TopTarget() const; private: Result CheckGraph() const; const cmGeneratorExpressionDAGChecker* const Parent; + const cmGeneratorExpressionDAGChecker* const Top; cmGeneratorTarget const* Target; const std::string Property; mutable std::map> Seen; -- cgit v0.12