diff options
author | Brad King <brad.king@kitware.com> | 2022-02-10 20:23:07 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-02-10 21:30:10 (GMT) |
commit | 38de1bef2d10270d5f1be1fef2760310571c4026 (patch) | |
tree | a00c50445fc14db6deee51e9d02b497c8ff8e985 /Source | |
parent | d634d203973086f32f6d26e636eb1c9cc1acc545 (diff) | |
download | CMake-38de1bef2d10270d5f1be1fef2760310571c4026.zip CMake-38de1bef2d10270d5f1be1fef2760310571c4026.tar.gz CMake-38de1bef2d10270d5f1be1fef2760310571c4026.tar.bz2 |
find_package: Improve --debug-find-pkg= when using a find module
Extend the feature added by commit d7b18895bc (cmake: Add filtered
debug-find options, 2021-12-07, v3.23.0-rc1~217^2) to enable debug
output for `find_*` calls within a find module or cmake package
configuration file.
Fixes: #23211
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmFindCommon.cxx | 3 | ||||
-rw-r--r-- | Source/cmFindPackageCommand.cxx | 5 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 19 | ||||
-rw-r--r-- | Source/cmMakefile.h | 14 |
4 files changed, 37 insertions, 4 deletions
diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx index 1bb98ea..7106e4b 100644 --- a/Source/cmFindCommon.cxx +++ b/Source/cmFindCommon.cxx @@ -73,7 +73,8 @@ void cmFindCommon::DebugMessage(std::string const& msg) const bool cmFindCommon::ComputeIfDebugModeWanted() { - return this->Makefile->IsOn("CMAKE_FIND_DEBUG_MODE") || + return this->Makefile->GetDebugFindPkgMode() || + this->Makefile->IsOn("CMAKE_FIND_DEBUG_MODE") || this->Makefile->GetCMakeInstance()->GetDebugFindOutput(); } diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index a8dff95..f55d838 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -33,7 +33,6 @@ #include "cmSystemTools.h" #include "cmValue.h" #include "cmVersion.h" -#include "cmake.h" #if defined(__HAIKU__) # include <FindDirectory.h> @@ -235,8 +234,8 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args) this->SearchPathSuffixes.emplace_back(); // Process debug mode - this->DebugMode = this->ComputeIfDebugModeWanted() || - this->Makefile->GetCMakeInstance()->GetDebugFindPkgOutput(this->Name); + cmMakefile::DebugFindPkgRAII debugFindPkgRAII(this->Makefile, this->Name); + this->DebugMode = this->ComputeIfDebugModeWanted(); // Parse the arguments. enum Doing diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 68e61bb..94d3be6 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4519,3 +4519,22 @@ cmMakefile::MacroPushPop::~MacroPushPop() { this->Makefile->PopMacroScope(this->ReportError); } + +cmMakefile::DebugFindPkgRAII::DebugFindPkgRAII(cmMakefile* mf, + std::string const& pkg) + : Makefile(mf) + , OldValue(this->Makefile->DebugFindPkg) +{ + this->Makefile->DebugFindPkg = + this->Makefile->GetCMakeInstance()->GetDebugFindPkgOutput(pkg); +} + +cmMakefile::DebugFindPkgRAII::~DebugFindPkgRAII() +{ + this->Makefile->DebugFindPkg = this->OldValue; +} + +bool cmMakefile::GetDebugFindPkgMode() const +{ + return this->DebugFindPkg; +} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 85988b8..f425697 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -931,6 +931,18 @@ public: // searches std::deque<std::vector<std::string>> FindPackageRootPathStack; + class DebugFindPkgRAII + { + cmMakefile* Makefile; + bool OldValue; + + public: + DebugFindPkgRAII(cmMakefile* mf, std::string const& pkg); + ~DebugFindPkgRAII(); + }; + + bool GetDebugFindPkgMode() const; + void MaybeWarnCMP0074(std::string const& pkg); void MaybeWarnUninitialized(std::string const& variable, const char* sourceFilename) const; @@ -1104,6 +1116,8 @@ private: std::vector<BT<GeneratorAction>> GeneratorActions; bool GeneratorActionsInvoked = false; + bool DebugFindPkg = false; + bool CheckSystemVars; bool CheckCMP0000; std::set<std::string> WarnedCMP0074; |