Browse Source

Merge topic 'debug-find'

38de1bef2d find_package: Improve --debug-find-pkg= when using a find module
d634d20397 find_package: Avoid printing debug output header multiple times
df3e29450a find_package: Mention package name in Config mode debug output
636ca7f25c find_package: Fix find module name in --debug-find output
596e185409 find_package: Improve formatting of --debug-find output
2f43527574 Tests: Improve order of RunCMake.find_package cases
a690523fcf cmFindPackageCommand: Drop ComputeIfDebugModeWanted overload

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !6973
Brad King 3 years ago
parent
commit
bdbacf6b65

+ 2 - 1
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();
 }
 

+ 27 - 40
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->Name);
-  this->DebugBuffer.clear();
+  cmMakefile::DebugFindPkgRAII debugFindPkgRAII(this->Makefile, this->Name);
+  this->DebugMode = this->ComputeIfDebugModeWanted();
 
   // Parse the arguments.
   enum Doing
@@ -609,22 +608,15 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args)
         loadedPackage = true;
       }
     }
-
-    if (this->DebugMode) {
-      this->DebugMessage(this->DebugBuffer);
-      this->DebugBuffer.clear();
-    }
   }
 
   this->AppendSuccessInformation();
 
-  return loadedPackage;
-}
+  if (!this->DebugBuffer.empty()) {
+    this->DebugMessage(this->DebugBuffer);
+  }
 
-bool cmFindPackageCommand::ComputeIfDebugModeWanted(std::string const& var)
-{
-  return this->ComputeIfDebugModeWanted() ||
-    this->Makefile->GetCMakeInstance()->GetDebugFindPkgOutput(var);
+  return loadedPackage;
 }
 
 bool cmFindPackageCommand::FindPackageUsingModuleMode()
@@ -794,22 +786,21 @@ void cmFindPackageCommand::RestoreFindDefinitions()
 
 bool cmFindPackageCommand::FindModule(bool& found)
 {
-  std::string module = cmStrCat("Find", this->Name, ".cmake");
+  std::string moduleFileName = cmStrCat("Find", this->Name, ".cmake");
 
   bool system = false;
-  std::string debugBuffer =
-    cmStrCat("find_package considered the following paths for ", this->Name,
-             ".cmake\n");
+  std::string debugBuffer = cmStrCat(
+    "find_package considered the following paths for ", moduleFileName, ":\n");
   std::string mfile = this->Makefile->GetModulesFile(
-    module, system, this->DebugMode, debugBuffer);
+    moduleFileName, system, this->DebugMode, debugBuffer);
   if (this->DebugMode) {
     if (mfile.empty()) {
-      debugBuffer = cmStrCat(debugBuffer, "The file was not found.");
+      debugBuffer = cmStrCat(debugBuffer, "The file was not found.\n");
     } else {
       debugBuffer =
         cmStrCat(debugBuffer, "The file was found at\n  ", mfile, "\n");
     }
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 
   if (!mfile.empty()) {
@@ -953,11 +944,6 @@ bool cmFindPackageCommand::HandlePackageMode(
     result = false;
   }
 
-  if (this->DebugMode) {
-    this->DebugMessage(this->DebugBuffer);
-    this->DebugBuffer.clear();
-  }
-
   // package not found
   if (result && !found) {
     // warn if package required or neither quiet nor in config mode
@@ -1123,7 +1109,8 @@ bool cmFindPackageCommand::FindConfig()
   if (this->DebugMode) {
     this->DebugBuffer = cmStrCat(this->DebugBuffer,
                                  "find_package considered the following "
-                                 "locations for the Config module:\n");
+                                 "locations for ",
+                                 this->Name, "'s Config module:\n");
   }
 
   // Search for frameworks.
@@ -1315,7 +1302,7 @@ inline std::size_t collectPathsForDebug(std::string& buffer,
 {
   const auto& paths = searchPath.GetPaths();
   if (paths.empty()) {
-    buffer += "  none";
+    buffer += "  none\n";
     return 0;
   }
   for (std::size_t i = startIndex; i < paths.size(); i++) {
@@ -1375,7 +1362,7 @@ void cmFindPackageCommand::FillPrefixesPackageRoot()
     std::string debugBuffer = "<PackageName>_ROOT CMake variable "
                               "[CMAKE_FIND_USE_PACKAGE_ROOT_PATH].\n";
     collectPathsForDebug(debugBuffer, paths);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1398,7 +1385,7 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment()
   paths.AddEnvPath("CMAKE_PREFIX_PATH");
   if (this->DebugMode) {
     debugBuffer = cmStrCat(debugBuffer,
-                           "\nCMAKE_PREFIX_PATH env variable "
+                           "CMAKE_PREFIX_PATH env variable "
                            "[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH].\n");
     debugOffset = collectPathsForDebug(debugBuffer, paths, debugOffset);
   }
@@ -1408,10 +1395,10 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment()
   if (this->DebugMode) {
     debugBuffer =
       cmStrCat(debugBuffer,
-               "\nCMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env "
+               "CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env "
                "variables [CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH].\n");
     collectPathsForDebug(debugBuffer, paths, debugOffset);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1432,10 +1419,10 @@ void cmFindPackageCommand::FillPrefixesCMakeVariable()
   if (this->DebugMode) {
     debugBuffer =
       cmStrCat(debugBuffer,
-               "\nCMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables "
+               "CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables "
                "[CMAKE_FIND_USE_CMAKE_PATH].\n");
     collectPathsForDebug(debugBuffer, paths, debugOffset);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1460,7 +1447,7 @@ void cmFindPackageCommand::FillPrefixesSystemEnvironment()
     std::string debugBuffer = "Standard system environment variables "
                               "[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH].\n";
     collectPathsForDebug(debugBuffer, paths);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1490,7 +1477,7 @@ void cmFindPackageCommand::FillPrefixesUserRegistry()
       "CMake User Package Registry [CMAKE_FIND_USE_PACKAGE_REGISTRY].\n";
     collectPathsForDebug(debugBuffer,
                          this->LabeledPaths[PathLabel::UserRegistry]);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1510,7 +1497,7 @@ void cmFindPackageCommand::FillPrefixesSystemRegistry()
       "[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY].\n";
     collectPathsForDebug(debugBuffer,
                          this->LabeledPaths[PathLabel::SystemRegistry]);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1689,7 +1676,7 @@ void cmFindPackageCommand::FillPrefixesCMakeSystemVariable()
     std::string debugBuffer = "CMake variables defined in the Platform file "
                               "[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH].\n";
     collectPathsForDebug(debugBuffer, paths);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1704,7 +1691,7 @@ void cmFindPackageCommand::FillPrefixesUserGuess()
     std::string debugBuffer =
       "Paths specified by the find_package PATHS option.\n";
     collectPathsForDebug(debugBuffer, paths);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 
@@ -1719,7 +1706,7 @@ void cmFindPackageCommand::FillPrefixesUserHints()
     std::string debugBuffer =
       "Paths specified by the find_package HINTS option.\n";
     collectPathsForDebug(debugBuffer, paths);
-    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer, "\n");
+    this->DebugBuffer = cmStrCat(this->DebugBuffer, debugBuffer);
   }
 }
 

+ 0 - 2
Source/cmFindPackageCommand.h

@@ -40,7 +40,6 @@ class cmSearchPath;
 class cmFindPackageCommand : public cmFindCommon
 {
 public:
-  using cmFindCommon::ComputeIfDebugModeWanted;
   /*! A sorting order strategy to be applied to recovered package folders (see
    * FIND_PACKAGE_SORT_ORDER)*/
   enum /*class*/ SortOrderType
@@ -121,7 +120,6 @@ private:
   bool ReadListFile(const std::string& f, PolicyScopeRule psr);
   void StoreVersionFound();
 
-  bool ComputeIfDebugModeWanted(std::string const& var);
   void ComputePrefixes();
   void FillPrefixesPackageRoot();
   void FillPrefixesCMakeEnvironment();

+ 19 - 0
Source/cmMakefile.cxx

@@ -4552,3 +4552,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;
+}

+ 14 - 0
Source/cmMakefile.h

@@ -932,6 +932,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;
@@ -1105,6 +1117,8 @@ private:
   std::vector<BT<GeneratorAction>> GeneratorActions;
   bool GeneratorActionsInvoked = false;
 
+  bool DebugFindPkg = false;
+
   bool CheckSystemVars;
   bool CheckCMP0000;
   std::set<std::string> WarnedCMP0074;

+ 2 - 1
Tests/RunCMake/CMakePresets/Debug-stderr.txt

@@ -1 +1,2 @@
-  find_package considered the following locations for the Config module:
+  find_package considered the following locations for
+  ThisPackageHopefullyDoesNotExist's Config module:

+ 80 - 20
Tests/RunCMake/find_package/FromPATHEnv-stderr.txt

@@ -1,20 +1,80 @@
-CMake Debug Log at FromPATHEnv.cmake:5 \(find_package\):
-  find_package considered the following paths for Resolved.cmake.*
-.*/Modules/FindResolved.cmake.*
-  The file was not found.*
-  <PackageName>_ROOT CMake variable.*
-  CMAKE_PREFIX_PATH variable.*
-  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables.*
-  Env variable Resolved_DIR.*
-  CMAKE_PREFIX_PATH env variable.*
-  Paths specified by the find_package HINTS option.*
-  Standard system environment variables.*
-.*Tests/RunCMake/find_package/PackageRoot.*
-  CMake User Package Registry.*
-  CMake variables defined in the Platform file.*
-  CMake System Package Registry.*
-  Paths specified by the find_package PATHS option.*
-  find_package considered the following locations for the Config module:.*
-.*Tests/RunCMake/find_package/PackageRoot/ResolvedConfig\.cmake.*
-  The file was found at.*
-.*Tests/RunCMake/find_package/PackageRoot/ResolvedConfig\.cmake
+^CMake Debug Log at FromPATHEnv.cmake:[0-9]+ \(find_package\):
+  find_package considered the following paths for FindResolved.cmake:
+
+    [^
+]*/Modules/FindResolved.cmake
+
+  The file was not found.
+
+  <PackageName>_ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\].
+
+    none
+
+  CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\].
+
+    none
+
+  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables
+  \[CMAKE_FIND_USE_CMAKE_PATH\].
+
+    none
+
+  Env variable Resolved_DIR \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+
+    none
+
+  CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+(
+    [^
+]+)+
+
+  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables
+  \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+(
+    [^
+]+)+
+
+  Paths specified by the find_package HINTS option.
+
+    none
+
+  Standard system environment variables
+  \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\].
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot
+
+  CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\].
+(
+    [^
+]+)+
+
+  CMake variables defined in the Platform file
+  \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\].
+(
+    [^
+]+)+
+
+  CMake System Package Registry
+  \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\].
+(
+    [^
+]+)+
+
+  Paths specified by the find_package PATHS option.
+
+    none
+
+  find_package considered the following locations for Resolved's Config
+  module:
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot/ResolvedConfig.cmake
+
+  The file was found at
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot/ResolvedConfig.cmake
+
+Call Stack \(most recent call first\):
+  CMakeLists.txt:[0-9]+ \(include\)$

+ 5 - 0
Tests/RunCMake/find_package/FromPATHEnv.cmake

@@ -1,4 +1,7 @@
 set(ENV_PATH "$ENV{PATH}")
+set(ENV_CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
+
+set(ENV{CMAKE_PREFIX_PATH} "")
 
 set(CMAKE_FIND_DEBUG_MODE ON)
 set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}/PackageRoot")
@@ -30,4 +33,6 @@ foreach(path "/does_not_exist" "/PackageRoot" "")
   find_package(Resolved NO_SYSTEM_ENVIRONMENT_PATH QUIET)
   message(STATUS "Resolved_FOUND='${Resolved_FOUND}'")
 endforeach()
+
+set(ENV{CMAKE_PREFIX_PATH} "${ENV_CMAKE_PREFIX_PATH}")
 set(ENV{PATH} "${ENV_PATH}")

+ 80 - 21
Tests/RunCMake/find_package/FromPATHEnvDebugPkg-stderr.txt

@@ -1,21 +1,80 @@
-CMake Debug Log at FromPATHEnvDebugPkg.cmake:4 \(find_package\):
-  find_package considered the following paths for Resolved.cmake.*
-.*/Modules/FindResolved.cmake.*
-  The file was not found.*
-  <PackageName>_ROOT CMake variable.*
-  CMAKE_PREFIX_PATH variable.*
-  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables.*
-  Env variable Resolved_DIR.*
-  CMAKE_PREFIX_PATH env variable.*
-  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables.*
-  Paths specified by the find_package HINTS option.*
-  Standard system environment variables.*
-.*Tests/RunCMake/find_package/PackageRoot.*
-  CMake User Package Registry.*
-  CMake variables defined in the Platform file.*
-  CMake System Package Registry.*
-  Paths specified by the find_package PATHS option.*
-  find_package considered the following locations for the Config module:.*
-.*Tests/RunCMake/find_package/PackageRoot/ResolvedConfig\.cmake.*
-  The file was found at.*
-.*Tests/RunCMake/find_package/PackageRoot/ResolvedConfig\.cmake
+^CMake Debug Log at FromPATHEnvDebugPkg.cmake:[0-9]+ \(find_package\):
+  find_package considered the following paths for FindResolved.cmake:
+
+    [^
+]*/Modules/FindResolved.cmake
+
+  The file was not found.
+
+  <PackageName>_ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\].
+
+    none
+
+  CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\].
+
+    none
+
+  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables
+  \[CMAKE_FIND_USE_CMAKE_PATH\].
+
+    none
+
+  Env variable Resolved_DIR \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+
+    none
+
+  CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+(
+    [^
+]+)+
+
+  CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables
+  \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\].
+(
+    [^
+]+)+
+
+  Paths specified by the find_package HINTS option.
+
+    none
+
+  Standard system environment variables
+  \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\].
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot
+
+  CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\].
+(
+    [^
+]+)+
+
+  CMake variables defined in the Platform file
+  \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\].
+(
+    [^
+]+)+
+
+  CMake System Package Registry
+  \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\].
+(
+    [^
+]+)+
+
+  Paths specified by the find_package PATHS option.
+
+    none
+
+  find_package considered the following locations for Resolved's Config
+  module:
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot/ResolvedConfig.cmake
+
+  The file was found at
+
+    [^
+]*/Tests/RunCMake/find_package/PackageRoot/ResolvedConfig.cmake
+
+Call Stack \(most recent call first\):
+  CMakeLists.txt:[0-9]+ \(include\)$

+ 5 - 0
Tests/RunCMake/find_package/FromPATHEnvDebugPkg.cmake

@@ -1,4 +1,7 @@
 set(ENV_PATH "$ENV{PATH}")
+set(ENV_CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
+
+set(ENV{CMAKE_PREFIX_PATH} "")
 
 set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}/PackageRoot")
 find_package(Resolved QUIET)
@@ -28,4 +31,6 @@ foreach(path "/does_not_exist" "/PackageRoot" "")
   find_package(ResolvedC NO_SYSTEM_ENVIRONMENT_PATH QUIET)
   message(STATUS "Resolved_FOUND='${ResolvedC_FOUND}'")
 endforeach()
+
+set(ENV{CMAKE_PREFIX_PATH} "${ENV_CMAKE_PREFIX_PATH}")
 set(ENV{PATH} "${ENV_PATH}")

+ 128 - 0
Tests/RunCMake/find_package/ModuleModeDebugPkg-stderr.txt

@@ -0,0 +1,128 @@
+^CMake Debug Log at ModuleModeDebugPkg/FindFoo.cmake:[0-9]+ \(find_program\):
+  find_program called with the following settings:
+
+    VAR: FOO_EXE
+    NAMES: "ModuleModeDebugPkgFooExe"
+    Documentation: Path to a program.
+    Framework
+      Only Search Frameworks: 0
+      Search Frameworks Last: 0
+      Search Frameworks First: [01]
+    AppBundle
+      Only Search AppBundle: 0
+      Search AppBundle Last: 0
+      Search AppBundle First: [01]
+    NO_DEFAULT_PATH Enabled
+
+  find_program considered the following locations:
+
+  The item was not found.
+
+Call Stack \(most recent call first\):
+  ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\)
+  CMakeLists.txt:[0-9]+ \(include\)
++
+CMake Debug Log at ModuleModeDebugPkg/FindFoo.cmake:[0-9]+ \(find_library\):
+  find_library called with the following settings:
+
+    VAR: FOO_LIB
+    NAMES: "ModuleModeDebugPkgFooLib"
+    Documentation: Path to a library.
+    Framework
+      Only Search Frameworks: 0
+      Search Frameworks Last: 0
+      Search Frameworks First: [01]
+    AppBundle
+      Only Search AppBundle: 0
+      Search AppBundle Last: 0
+      Search AppBundle First: [01]
+    NO_DEFAULT_PATH Enabled
+
+  find_library considered the following locations:
+
+  The item was not found.
+
+Call Stack \(most recent call first\):
+  ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\)
+  CMakeLists.txt:[0-9]+ \(include\)
++
+CMake Debug Log at ModuleModeDebugPkg/FindFoo.cmake:[0-9]+ \(find_path\):
+  find_path called with the following settings:
+
+    VAR: FOO_PATH
+    NAMES: "ModuleModeDebugPkgFoo.h"
+    Documentation: Path to a file.
+    Framework
+      Only Search Frameworks: 0
+      Search Frameworks Last: 0
+      Search Frameworks First: [01]
+    AppBundle
+      Only Search AppBundle: 0
+      Search AppBundle Last: 0
+      Search AppBundle First: [01]
+    NO_DEFAULT_PATH Enabled
+
+  find_path considered the following locations:
+
+  The item was not found.
+
+Call Stack \(most recent call first\):
+  ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\)
+  CMakeLists.txt:[0-9]+ \(include\)
++
+CMake Debug Log at ModuleModeDebugPkg/FindFoo.cmake:[0-9]+ \(find_file\):
+  find_file called with the following settings:
+
+    VAR: FOO_FILE
+    NAMES: "ModuleModeDebugPkgFoo.h"
+    Documentation: Path to a file.
+    Framework
+      Only Search Frameworks: 0
+      Search Frameworks Last: 0
+      Search Frameworks First: [01]
+    AppBundle
+      Only Search AppBundle: 0
+      Search AppBundle Last: 0
+      Search AppBundle First: [01]
+    NO_DEFAULT_PATH Enabled
+
+  find_file considered the following locations:
+
+  The item was not found.
+
+Call Stack \(most recent call first\):
+  ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\)
+  CMakeLists.txt:[0-9]+ \(include\)
++
+FindBar processed here.
++
+CMake Debug Log at ModuleModeDebugPkg/FindFoo.cmake:[0-9]+ \(find_package\):
+  Paths specified by the find_package HINTS option.
+
+    none
+
+  Paths specified by the find_package PATHS option.
+
+    none
+
+  find_package considered the following locations for Zot's Config module:
+
+  The file was not found.
+
+Call Stack \(most recent call first\):
+  ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\)
+  CMakeLists.txt:[0-9]+ \(include\)
++
+CMake Debug Log at ModuleModeDebugPkg.cmake:[0-9]+ \(find_package\):
+  find_package considered the following paths for FindFoo.cmake:
+
+    [^
+]*/Modules/FindFoo.cmake
+
+  The file was found at
+
+    [^
+]*/Tests/RunCMake/find_package/ModuleModeDebugPkg/FindFoo.cmake
+
+Call Stack \(most recent call first\):
+  CMakeLists.txt:[0-9]+ \(include\)$

+ 2 - 0
Tests/RunCMake/find_package/ModuleModeDebugPkg.cmake

@@ -0,0 +1,2 @@
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ModuleModeDebugPkg)
+find_package(Foo)

+ 2 - 0
Tests/RunCMake/find_package/ModuleModeDebugPkg/FindBar.cmake

@@ -0,0 +1,2 @@
+message("FindBar processed here.\n")
+find_program(BAR_EXE NAMES ModuleModeDebugPkgBarExe NO_DEFAULT_PATH)

+ 6 - 0
Tests/RunCMake/find_package/ModuleModeDebugPkg/FindFoo.cmake

@@ -0,0 +1,6 @@
+find_program(FOO_EXE NAMES ModuleModeDebugPkgFooExe NO_DEFAULT_PATH)
+find_library(FOO_LIB NAMES ModuleModeDebugPkgFooLib NO_DEFAULT_PATH)
+find_path(FOO_PATH NAMES ModuleModeDebugPkgFoo.h NO_DEFAULT_PATH)
+find_file(FOO_FILE NAMES ModuleModeDebugPkgFoo.h NO_DEFAULT_PATH)
+find_package(Bar) # not included
+find_package(Zot NO_MODULE NO_DEFAULT_PATH) # is included

+ 3 - 3
Tests/RunCMake/find_package/RunCMakeTest.cmake

@@ -4,6 +4,7 @@ run_cmake(CMP0074-WARN)
 run_cmake(CMP0074-OLD)
 run_cmake(ComponentRequiredAndOptional)
 run_cmake(FromPATHEnv)
+run_cmake_with_options(FromPATHEnvDebugPkg --debug-find-pkg=Resolved)
 run_cmake(FromPrefixPath)
 run_cmake(MissingNormal)
 run_cmake(MissingNormalForceRequired)
@@ -15,10 +16,12 @@ run_cmake(MissingModule)
 run_cmake(MissingModuleRequired)
 run_cmake(MissingConfig)
 run_cmake(MissingConfigDebug)
+run_cmake_with_options(MissingConfigDebugPkg --debug-find-pkg=NotHere)
 run_cmake(MissingConfigOneName)
 run_cmake(MissingConfigRequired)
 run_cmake(MissingConfigVersion)
 run_cmake(MixedModeOptions)
+run_cmake_with_options(ModuleModeDebugPkg --debug-find-pkg=Foo,Zot)
 run_cmake(PackageRoot)
 run_cmake(PackageRootNestedConfig)
 run_cmake(PackageRootNestedModule)
@@ -51,6 +54,3 @@ if(UNIX
     )
   run_cmake(SetFoundResolved)
 endif()
-
-run_cmake_with_options(MissingConfigDebugPkg --debug-find-pkg=NotHere)
-run_cmake_with_options(FromPATHEnvDebugPkg --debug-find-pkg=Resolved)