diff --git a/Help/manual/cmake-configure-log.7.rst b/Help/manual/cmake-configure-log.7.rst index 43513af63a..f87940693a 100644 --- a/Help/manual/cmake-configure-log.7.rst +++ b/Help/manual/cmake-configure-log.7.rst @@ -441,3 +441,243 @@ The keys specific to ``find-v1`` mappings are: ``found`` Either a string representing the found value or ``false`` if it was not found. + +.. _`find_package configure-log event`: + +Event Kind ``find_package`` +--------------------------- + +.. versionadded:: 4.1 + +The :command:`find_package` command logs ``find_package`` events. + +There is only one ``find_package`` event major version, version 1. + +.. _`find_package-v1 event`: + +``find_package-v1`` Event +^^^^^^^^^^^^^^^^^^^^^^^^^ + +A ``find_package-v1`` event is a YAML mapping: + +.. code-block:: yaml + + kind: "find_package-v1" + backtrace: + - "CMakeLists.txt:456 (find_program)" + name: "PackageName" + components: + - + name: "Component" + required: true + found: true + configs: + - + filename: PackageNameConfig.cmake + kind: "cmake" + - + filename: packagename-config.cmake + kind: "cmake" + version_request: + version: "1.0" + version_complete: "1.0...1.5" + min: "INCLUDE" + max: "INCLUDE" + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + hints: + - "/hint/path" + names: + - "name1" + - "name2" + search_paths: + - "/search/path" + path_suffixes: + - "" + - "suffix" + registry_view: "HOST" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: "/path/to/config/PackageName/PackageNameConfig.cmake" + mode: "config" + reason: "insufficient_version" + - + path: "/path/to/config/PackageName/packagename-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: "/path/to/config/PackageName-2.5/PackageNameConfig.cmake" + mode: "config" + version: "2.5" + +The keys specific to ``find_package-v1`` mappings are: + +``name`` + The name of the requested package. + +``components`` + If present, an array of objects containing the fields: + + ``name`` + The name of the component. + + ``required`` + A boolean indicating whether the component is required or optional. + + ``found`` + A boolean indicating whether the component was found or not. + +``configs`` + If present, an array of objects indicating the configuration files to search + for. + + ``filename`` + The filename of the configuration file. + + ``kind`` + The kind of file. Either ``cmake`` or ``cps``. + +``version_request`` + An object indicating the version constraints on the search. + + ``version`` + The minimum version required. + + ``version_complete`` + The user-provided version range. + + ``min`` + Whether to ``INCLUDE`` or ``EXCLUDE`` the lower bound on the version + range. + + ``max`` + Whether to ``INCLUDE`` or ``EXCLUDE`` the upper bound on the version + range. + + ``exact`` + A boolean indicating whether an ``EXACT`` version match was requested. + +``settings`` + Search settings active for the search. + + ``required`` + The requirement request of the search. One of ``optional``, + ``optional_explicit``, ``required_explicit``, + ``required_from_package_variable``, or ``required_from_find_variable``. + + ``quiet`` + A boolean indicating whether the search is ``QUIET`` or not. + + ``global`` + A boolean indicating whether the ``GLOBAL`` keyword has been provided or + not. + + ``policy_scope`` + A boolean indicating whether the ``NO_POLICY_SCOPE`` keyword has been + provided or not. + + ``bypass_provider`` + A boolean indicating whether the ``BYPASS_PROVIDER`` keyword has been + provided or not. + + ``hints`` + An array of paths provided as ``HINTS``. + + ``names`` + An array of package names to use when searching, provided by ``NAMES``. + + ``search_paths`` + An array of paths to search, provided by ``PATHS``. + + ``path_suffixes`` + An array of suffixes to use when searching, provided by ``PATH_SUFFIXES``. + + ``registry_view`` + The ``REGISTRY_VIEW`` requested for the search. + + ``paths`` + Path settings active for the search. + + ``CMAKE_FIND_USE_CMAKE_PATH`` + A boolean indicating whether or not CMake-specific cache variables are + used when searching. See :variable:`CMAKE_FIND_USE_CMAKE_PATH`. + + ``CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`` + A boolean indicating whether or not CMake-specific environment variables + are used when searching. See + :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`. + + ``CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`` + A boolean indicating whether or not platform-specific environment + variables are used when searching. See + :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`. + + ``CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`` + A boolean indicating whether or not platform-specific CMake variables are + used when searching. See :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`. + + ``CMAKE_FIND_USE_INSTALL_PREFIX`` + A boolean indicating whether or not the install prefix is used when + searching. See :variable:`CMAKE_FIND_USE_INSTALL_PREFIX`. + + ``CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY`` + A boolean indicating whether or not to search the CMake package registry + for the package. See :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`. + + ``CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`` + A boolean indicating whether or not to search the system CMake package + registry for the package. See + :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`. + + ``CMAKE_FIND_ROOT_PATH_MODE`` + A string indicating the root path mode in effect as selected by the + ``CMAKE_FIND_ROOT_PATH_BOTH``, ``ONLY_CMAKE_FIND_ROOT_PATH``, and + ``NO_CMAKE_FIND_ROOT_PATH`` arguments. + +``candidates`` + An array of rejected candidate paths. Each element contains the following + keys: + + ``path`` + The path to the considered file. + + ``mode`` + The mode which found the file. One of ``module``, ``cps``, ``cmake``, or + ``provider``. + + ``reason`` + The reason the path was rejected. One of ``insufficient_version``, + ``no_exist``, ``ignored``, ``no_config_file``, or ``not_found``. + + ``message`` + If present, a string describing why the package is considered as not + found. + +``found`` + If the package has been found, information on the found file. If it is not + found, this is ``null``. Keys available: + + ``path`` + The path to the module or configuration that found the package. + + ``mode`` + The mode that considered the path. One of ``module``, ``cps``, ``cmake``, + or ``provider``. + + ``version`` + The reported version of the package. diff --git a/Source/cmConfigureLog.cxx b/Source/cmConfigureLog.cxx index a7ada175a1..b486cc3df3 100644 --- a/Source/cmConfigureLog.cxx +++ b/Source/cmConfigureLog.cxx @@ -123,6 +123,26 @@ void cmConfigureLog::EndLine() this->Stream << std::endl; } +void cmConfigureLog::BeginArray() +{ + ++this->Indent; +} + +void cmConfigureLog::NextArrayElement() +{ + assert(this->Indent); + --this->Indent; + this->BeginLine() << '-'; + this->EndLine(); + ++this->Indent; +} + +void cmConfigureLog::EndArray() +{ + assert(this->Indent); + --this->Indent; +} + void cmConfigureLog::BeginObject(cm::string_view key) { this->BeginLine() << key << ':'; diff --git a/Source/cmConfigureLog.h b/Source/cmConfigureLog.h index ff9b4ee7a9..6c6c44f40f 100644 --- a/Source/cmConfigureLog.h +++ b/Source/cmConfigureLog.h @@ -34,6 +34,10 @@ public: void BeginEvent(std::string const& kind, cmMakefile const& mf); void EndEvent(); + void BeginArray(); + void NextArrayElement(); + void EndArray(); + void BeginObject(cm::string_view key); void EndObject(); diff --git a/Source/cmFileAPIConfigureLog.cxx b/Source/cmFileAPIConfigureLog.cxx index 8c571aaf1b..3e5ba94350 100644 --- a/Source/cmFileAPIConfigureLog.cxx +++ b/Source/cmFileAPIConfigureLog.cxx @@ -52,10 +52,11 @@ Json::Value ConfigureLog::DumpEventKindNames() // major version of the configureLog object kind is needed. Json::Value eventKindNames = Json::arrayValue; if (this->Version == 1) { - eventKindNames.append("message-v1"); // WriteMessageEvent - eventKindNames.append("try_compile-v1"); // WriteTryCompileEvent - eventKindNames.append("try_run-v1"); // WriteTryRunEvent - eventKindNames.append("find-v1"); // WriteFindBaseEvent + eventKindNames.append("message-v1"); // WriteMessageEvent + eventKindNames.append("try_compile-v1"); // WriteTryCompileEvent + eventKindNames.append("try_run-v1"); // WriteTryRunEvent + eventKindNames.append("find-v1"); // WriteFindBaseEvent + eventKindNames.append("find_package-v1"); // WriteFindPackageEvent } return eventKindNames; } diff --git a/Source/cmFindCommon.h b/Source/cmFindCommon.h index b8e62135a9..22bc40742e 100644 --- a/Source/cmFindCommon.h +++ b/Source/cmFindCommon.h @@ -40,6 +40,7 @@ protected: friend class cmSearchPath; friend class cmFindBaseDebugState; friend class cmFindCommonDebugState; + friend class cmFindPackageDebugState; /** Used to define groups of path labels */ class PathGroup : public cmPathLabel diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 34312acbd1..a2a71bd9e2 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -24,6 +24,7 @@ #include "cmsys/String.h" #include "cmAlgorithms.h" +#include "cmConfigureLog.h" #include "cmDependencyProvider.h" #include "cmExecutionStatus.h" #include "cmExperimental.h" @@ -60,8 +61,6 @@ # endif #endif -class cmConfigureLog; - namespace { using pdt = cmFindPackageCommand::PackageDescriptionType; @@ -548,6 +547,13 @@ cmFindPackageCommand::cmFindPackageCommand(cmExecutionStatus& status) this->DeprecatedFindModules["Qt"] = cmPolicies::CMP0084; } +cmFindPackageCommand::~cmFindPackageCommand() +{ + if (this->DebugState) { + this->DebugState->Write(); + } +} + void cmFindPackageCommand::AppendSearchPathGroups() { // Update the All group with new paths. Note that package redirection must @@ -608,8 +614,7 @@ void cmFindPackageCommand::InheritOptions(cmFindPackageCommand* other) bool cmFindPackageCommand::IsFound() const { - // TODO: track the actual found state. - return false; + return !this->FileFound.empty(); } bool cmFindPackageCommand::IsDefined() const @@ -717,7 +722,6 @@ bool cmFindPackageCommand::InitialPass(std::vector const& args) // Record options. this->Name = args[0]; cm::string_view componentsSep = ""_s; - bool bypassProvider = false; // Always search directly in a generated path. this->SearchPathSuffixes.emplace_back(); @@ -751,7 +755,7 @@ bool cmFindPackageCommand::InitialPass(std::vector const& args) this->Quiet = true; doing = DoingNone; } else if (args[i] == "BYPASS_PROVIDER") { - bypassProvider = true; + this->BypassProvider = true; doing = DoingNone; } else if (args[i] == "EXACT") { this->VersionExact = true; @@ -1015,7 +1019,8 @@ bool cmFindPackageCommand::InitialPass(std::vector const& args) this->VersionMaxPatch, this->VersionMaxTweak); } - return this->FindPackage(bypassProvider ? std::vector{} : args); + return this->FindPackage(this->BypassProvider ? std::vector{} + : args); } bool cmFindPackageCommand::FindPackage( @@ -1517,6 +1522,23 @@ bool cmFindPackageCommand::FindModule(bool& found) this->DebugBuffer = cmStrCat( this->DebugBuffer, "The module is considered not found due to ", foundVar, " being FALSE."); + + this->ConsideredPaths.emplace_back(mfile, FoundPackageMode::Module, + SearchResult::NotFound); + std::string const notFoundMessageVar = + cmStrCat(this->Name, "_NOT_FOUND_MESSAGE"); + if (cmValue notFoundMessage = + this->Makefile->GetDefinition(notFoundMessageVar)) { + + this->ConsideredPaths.back().Message = *notFoundMessage; + } + } else { + this->FileFound = mfile; + this->FileFoundMode = FoundPackageMode::Module; + std::string const versionVar = cmStrCat(this->Name, "_VERSION"); + if (cmValue version = this->Makefile->GetDefinition(versionVar)) { + this->VersionFound = *version; + } } } return result; @@ -1547,8 +1569,10 @@ bool cmFindPackageCommand::HandlePackageMode( } // The file location was cached. Look for the correct file. std::string file; - if (this->FindConfigFile(dir, pdt::Any, file)) { + FoundPackageMode foundMode = FoundPackageMode::None; + if (this->FindConfigFile(dir, pdt::Any, file, foundMode)) { this->FileFound = std::move(file); + this->FileFoundMode = foundMode; fileFound = true; } def = this->Makefile->GetDefinition(this->Variable); @@ -2765,13 +2789,17 @@ bool cmFindPackageCommand::CheckDirectory(std::string const& dir, std::string const d = dir.substr(0, dir.size() - 1); if (cm::contains(this->IgnoredPaths, d)) { + this->ConsideredPaths.emplace_back( + dir, cmFindPackageCommand::FoundMode(type), SearchResult::Ignored); return false; } // Look for the file in this directory. std::string file; - if (this->FindConfigFile(d, type, file)) { + FoundPackageMode foundMode = FoundPackageMode::None; + if (this->FindConfigFile(d, type, file, foundMode)) { this->FileFound = std::move(file); + this->FileFoundMode = foundMode; return true; } return false; @@ -2779,7 +2807,8 @@ bool cmFindPackageCommand::CheckDirectory(std::string const& dir, bool cmFindPackageCommand::FindConfigFile(std::string const& dir, PackageDescriptionType type, - std::string& file) + std::string& file, + FoundPackageMode& foundMode) { for (auto const& config : this->Configs) { if (type != pdt::Any && config.Type != type) { @@ -2789,14 +2818,24 @@ bool cmFindPackageCommand::FindConfigFile(std::string const& dir, if (this->DebugModeEnabled()) { this->DebugBuffer = cmStrCat(this->DebugBuffer, " ", file, '\n'); } - if (cmSystemTools::FileExists(file, true) && this->CheckVersion(file)) { - // Allow resolving symlinks when the config file is found through a link - if (this->UseRealPath) { - file = cmSystemTools::GetRealPath(file); - } else { - file = cmSystemTools::ToNormalizedPathOnDisk(file); + if (cmSystemTools::FileExists(file, true)) { + if (this->CheckVersion(file)) { + // Allow resolving symlinks when the config file is found through a + // link + if (this->UseRealPath) { + file = cmSystemTools::GetRealPath(file); + } else { + file = cmSystemTools::ToNormalizedPathOnDisk(file); + } + foundMode = cmFindPackageCommand::FoundMode(config.Type); + return true; } - return true; + this->ConsideredPaths.emplace_back(file, + cmFindPackageCommand::FoundMode(type), + SearchResult::InsufficientVersion); + } else { + this->ConsideredPaths.emplace_back( + file, cmFindPackageCommand::FoundMode(type), SearchResult::NoExist); } } return false; @@ -3374,6 +3413,20 @@ bool cmFindPackageCommand::IsRequired() const this->Required == RequiredStatus::RequiredFromFindVar; } +cmFindPackageCommand::FoundPackageMode cmFindPackageCommand::FoundMode( + PackageDescriptionType type) +{ + switch (type) { + case PackageDescriptionType::Any: + return FoundPackageMode::None; + case PackageDescriptionType::CMake: + return FoundPackageMode::Config; + case PackageDescriptionType::Cps: + return FoundPackageMode::Cps; + } + return FoundPackageMode::None; +} + // TODO: Debug cmsys::Glob double slash problem. bool cmFindPackage(std::vector const& args, @@ -3385,7 +3438,7 @@ bool cmFindPackage(std::vector const& args, cmFindPackageDebugState::cmFindPackageDebugState( cmFindPackageCommand const* findPackage) : cmFindCommonDebugState("find_package", findPackage) -// , FindPackageCommand(findPackage) + , FindPackageCommand(findPackage) { } @@ -3416,6 +3469,205 @@ void cmFindPackageDebugState::WriteEvent(cmConfigureLog& log, (void)log; (void)mf; - // TODO + log.BeginEvent("find_package-v1", mf); + + auto const* fpc = this->FindPackageCommand; + + log.WriteValue("name"_s, fpc->Name); + if (!fpc->Components.empty()) { + log.BeginObject("components"_s); + log.BeginArray(); + for (auto const& component : cmList{ fpc->Components }) { + log.NextArrayElement(); + log.WriteValue("name"_s, component); + log.WriteValue("required"_s, + fpc->RequiredComponents.find(component) != + fpc->RequiredComponents.end()); + log.WriteValue("found"_s, + mf.IsOn(cmStrCat(fpc->Name, '_', component, "_FOUND"))); + } + log.EndArray(); + log.EndObject(); + } + if (!fpc->Configs.empty()) { + auto pdt_name = + [](cmFindPackageCommand::PackageDescriptionType type) -> std::string { + switch (type) { + case pdt::Any: + return "any"; + case pdt::CMake: + return "cmake"; + case pdt::Cps: + return "cps"; + } + assert(false); + return ""; + }; + + log.BeginObject("configs"_s); + log.BeginArray(); + for (auto const& config : fpc->Configs) { + log.NextArrayElement(); + log.WriteValue("filename"_s, config.Name); + log.WriteValue("kind"_s, pdt_name(config.Type)); + } + log.EndArray(); + log.EndObject(); + } + { + log.BeginObject("version_request"_s); + if (!fpc->Version.empty()) { + log.WriteValue("version"_s, fpc->Version); + } + if (!fpc->VersionComplete.empty()) { + log.WriteValue("version_complete"_s, fpc->VersionComplete); + } + if (!fpc->VersionRange.empty()) { + log.WriteValue("min"_s, std::string(fpc->VersionRangeMin)); + log.WriteValue("max"_s, std::string(fpc->VersionRangeMax)); + } + log.WriteValue("exact"_s, fpc->VersionExact); + log.EndObject(); + } + { + auto required_str = + [](cmFindPackageCommand::RequiredStatus status) -> std::string { + switch (status) { + case cmFindPackageCommand::RequiredStatus::Optional: + return "optional"; + case cmFindPackageCommand::RequiredStatus::OptionalExplicit: + return "optional_explicit"; + case cmFindPackageCommand::RequiredStatus::RequiredExplicit: + return "required_explicit"; + case cmFindPackageCommand::RequiredStatus::RequiredFromPackageVar: + return "required_from_package_variable"; + case cmFindPackageCommand::RequiredStatus::RequiredFromFindVar: + return "required_from_find_variable"; + } + assert(false); + return ""; + }; + log.BeginObject("settings"_s); + log.WriteValue("required"_s, required_str(fpc->Required)); + log.WriteValue("quiet"_s, fpc->Quiet); + log.WriteValue("global"_s, fpc->GlobalScope); + log.WriteValue("policy_scope"_s, fpc->PolicyScope); + log.WriteValue("bypass_provider"_s, fpc->BypassProvider); + if (!fpc->UserHintsArgs.empty()) { + log.WriteValue("hints"_s, fpc->UserHintsArgs); + } + if (!fpc->Names.empty()) { + log.WriteValue("names"_s, fpc->Names); + } + if (!fpc->UserGuessArgs.empty()) { + log.WriteValue("search_paths"_s, fpc->UserGuessArgs); + } + if (!fpc->SearchPathSuffixes.empty()) { + log.WriteValue("path_suffixes"_s, fpc->SearchPathSuffixes); + } + if (fpc->RegistryViewDefined) { + log.WriteValue( + "registry_view"_s, + std::string(cmWindowsRegistry::FromView(fpc->RegistryView))); + } + { + auto find_root_path_mode = + [](cmFindCommon::RootPathMode mode) -> std::string { + switch (mode) { + case cmFindCommon::RootPathModeNever: + return "NEVER"; + case cmFindCommon::RootPathModeOnly: + return "ONLY"; + case cmFindCommon::RootPathModeBoth: + return "BOTH"; + } + assert(false); + return ""; + }; + log.BeginObject("paths"_s); + log.WriteValue("CMAKE_FIND_USE_CMAKE_PATH"_s, !fpc->NoDefaultPath); + log.WriteValue("CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH"_s, + !fpc->NoCMakeEnvironmentPath); + log.WriteValue("CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH"_s, + !fpc->NoSystemEnvironmentPath); + log.WriteValue("CMAKE_FIND_USE_CMAKE_SYSTEM_PATH"_s, + !fpc->NoCMakeSystemPath); + log.WriteValue("CMAKE_FIND_USE_INSTALL_PREFIX"_s, + !fpc->NoCMakeInstallPath); + log.WriteValue("CMAKE_FIND_USE_PACKAGE_ROOT_PATH"_s, + !fpc->NoPackageRootPath); + log.WriteValue("CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY"_s, + !fpc->NoUserRegistry); + log.WriteValue("CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY"_s, + !fpc->NoSystemRegistry); + log.WriteValue("CMAKE_FIND_ROOT_PATH_MODE"_s, + find_root_path_mode(fpc->FindRootPathMode)); + log.EndObject(); + } + log.EndObject(); + } + + auto found_mode = + [](cmFindPackageCommand::FoundPackageMode status) -> std::string { + switch (status) { + case cmFindPackageCommand::FoundPackageMode::None: + return "none?"; + case cmFindPackageCommand::FoundPackageMode::Module: + return "module"; + case cmFindPackageCommand::FoundPackageMode::Config: + return "config"; + case cmFindPackageCommand::FoundPackageMode::Cps: + return "cps"; + case cmFindPackageCommand::FoundPackageMode::Provider: + return "provider"; + } + assert(false); + return ""; + }; + if (!fpc->ConsideredPaths.empty()) { + auto search_result = + [](cmFindPackageCommand::SearchResult type) -> std::string { + switch (type) { + case cmFindPackageCommand::SearchResult::InsufficientVersion: + return "insufficient_version"; + case cmFindPackageCommand::SearchResult::NoExist: + return "no_exist"; + case cmFindPackageCommand::SearchResult::Ignored: + return "ignored"; + case cmFindPackageCommand::SearchResult::NoConfigFile: + return "no_config_file"; + case cmFindPackageCommand::SearchResult::NotFound: + return "not_found"; + } + assert(false); + return ""; + }; + + log.BeginObject("candidates"_s); + log.BeginArray(); + for (auto const& considered : fpc->ConsideredPaths) { + log.NextArrayElement(); + log.WriteValue("path"_s, considered.Path); + log.WriteValue("mode"_s, found_mode(considered.Mode)); + log.WriteValue("reason"_s, search_result(considered.Reason)); + if (!considered.Message.empty()) { + log.WriteValue("message"_s, considered.Message); + } + } + log.EndArray(); + log.EndObject(); + } + // TODO: Add provider information (see #26925) + if (fpc->IsFound()) { + log.BeginObject("found"_s); + log.WriteValue("path"_s, fpc->FileFound); + log.WriteValue("mode"_s, found_mode(fpc->FileFoundMode)); + log.WriteValue("version"_s, fpc->VersionFound); + log.EndObject(); + } else { + log.WriteValue("found"_s, nullptr); + } + + log.EndEvent(); } #endif diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h index 18a49e3dfe..bbbcdd41f8 100644 --- a/Source/cmFindPackageCommand.h +++ b/Source/cmFindPackageCommand.h @@ -75,6 +75,7 @@ public: SortDirectionType dir); cmFindPackageCommand(cmExecutionStatus& status); + ~cmFindPackageCommand() override; bool InitialPass(std::vector const& args); @@ -179,6 +180,14 @@ private: void PopFindPackageRootPathStack(); class PushPopRootPathStack; + enum class FoundPackageMode + { + None, + Module, + Config, + Cps, + Provider, + }; void ComputePrefixes(); void FillPrefixesPackageRedirect(); void FillPrefixesPackageRoot(); @@ -200,7 +209,7 @@ private: bool SearchDirectory(std::string const& dir, PackageDescriptionType type); bool CheckDirectory(std::string const& dir, PackageDescriptionType type); bool FindConfigFile(std::string const& dir, PackageDescriptionType type, - std::string& file); + std::string& file, FoundPackageMode& foundMode); bool CheckVersion(std::string const& config_file); bool CheckVersionFile(std::string const& version_file, std::string& result_version); @@ -243,6 +252,7 @@ private: unsigned int VersionMaxCount = 0; bool VersionExact = false; std::string FileFound; + FoundPackageMode FileFoundMode = FoundPackageMode::None; std::string VersionFound; unsigned int VersionFoundMajor = 0; unsigned int VersionFoundMinor = 0; @@ -250,6 +260,7 @@ private: unsigned int VersionFoundTweak = 0; unsigned int VersionFoundCount = 0; KWIML_INT_uint64_t RequiredCMakeVersion = 0; + bool BypassProvider = false; bool Quiet = false; RequiredStatus Required = RequiredStatus::Optional; bool UseCpsFiles = false; @@ -273,6 +284,32 @@ private: std::set OptionalComponents; std::set RequiredTargets; std::string DebugBuffer; + enum class SearchResult + { + InsufficientVersion, + NoExist, + Ignored, + NoConfigFile, + NotFound, + }; + struct ConsideredPath + { + ConsideredPath(std::string path, FoundPackageMode mode, + SearchResult reason) + : Path(std::move(path)) + , Mode(mode) + , Reason(reason) + { + } + + std::string Path; + FoundPackageMode Mode; + SearchResult Reason; + std::string Message; + }; + std::vector ConsideredPaths; + + static FoundPackageMode FoundMode(PackageDescriptionType type); struct ConfigName { @@ -327,6 +364,7 @@ private: AppendixMap CpsAppendices; friend struct std::hash; + friend class cmFindPackageDebugState; }; namespace std { @@ -363,5 +401,5 @@ private: void WriteEvent(cmConfigureLog& log, cmMakefile const& mf) const override; #endif - // cmFindPackageCommand const* const FindPackageCommand; + cmFindPackageCommand const* const FindPackageCommand; }; diff --git a/Tests/RunCMake/FileAPI/FailConfigure-check.py b/Tests/RunCMake/FileAPI/FailConfigure-check.py index 7c57db938e..7b2cece76f 100644 --- a/Tests/RunCMake/FileAPI/FailConfigure-check.py +++ b/Tests/RunCMake/FileAPI/FailConfigure-check.py @@ -65,7 +65,7 @@ def check_object_configureLog(o): assert os.path.exists(path) eventKindNames = o["eventKindNames"] assert is_list(eventKindNames) - assert sorted(eventKindNames) == ["find-v1", "message-v1", "try_compile-v1", "try_run-v1"] + assert sorted(eventKindNames) == ["find-v1", "find_package-v1", "message-v1", "try_compile-v1", "try_run-v1"] assert is_dict(index) assert sorted(index.keys()) == ["cmake", "objects", "reply"] diff --git a/Tests/RunCMake/FileAPI/configureLog-v1-FailConfigure-check.py b/Tests/RunCMake/FileAPI/configureLog-v1-FailConfigure-check.py index 512b382ddb..e505525d82 100644 --- a/Tests/RunCMake/FileAPI/configureLog-v1-FailConfigure-check.py +++ b/Tests/RunCMake/FileAPI/configureLog-v1-FailConfigure-check.py @@ -45,7 +45,7 @@ def check_object_configureLog(o): assert os.path.exists(path) eventKindNames = o["eventKindNames"] assert is_list(eventKindNames) - assert sorted(eventKindNames) == ["find-v1", "message-v1", "try_compile-v1", "try_run-v1"] + assert sorted(eventKindNames) == ["find-v1", "find_package-v1", "message-v1", "try_compile-v1", "try_run-v1"] assert is_dict(index) assert sorted(index.keys()) == ["cmake", "objects", "reply"] diff --git a/Tests/RunCMake/FileAPI/configureLog-v1-check.py b/Tests/RunCMake/FileAPI/configureLog-v1-check.py index 0be5262a90..d5c74d7c28 100644 --- a/Tests/RunCMake/FileAPI/configureLog-v1-check.py +++ b/Tests/RunCMake/FileAPI/configureLog-v1-check.py @@ -14,7 +14,7 @@ def check_object_configureLog(o): assert os.path.exists(path) eventKindNames = o["eventKindNames"] assert is_list(eventKindNames) - assert sorted(eventKindNames) == ["find-v1", "message-v1", "try_compile-v1", "try_run-v1"] + assert sorted(eventKindNames) == ["find-v1", "find_package-v1", "message-v1", "try_compile-v1", "try_run-v1"] assert is_dict(index) assert sorted(index.keys()) == ["cmake", "objects", "reply"] diff --git a/Tests/RunCMake/find_package/ConfigureLog-config.txt b/Tests/RunCMake/find_package/ConfigureLog-config.txt new file mode 100644 index 0000000000..59c50ba762 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog-config.txt @@ -0,0 +1,268 @@ +^ +--- +events: + - + kind: "message-v1" + backtrace:( + - "[^"]+")+ + message: \|( ++ [^ +]*)* + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ViaConfig" + configs: + - + filename: "ViaConfigConfig.cmake" + kind: "cmake" + - + filename: "viaconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ViaConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog-build/CMakeFiles/pkgRedirects/ViaConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog-build/CMakeFiles/pkgRedirects/viaconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ViaConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/viaconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ViaConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/viaconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfig.cmake" + mode: "config" + version: "1\.0" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ViaModule" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaModule.cmake" + mode: "module" + version: "1.0" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "Inner" + configs: + - + filename: "InnerConfig.cmake" + kind: "cmake" + - + filename: "inner-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "Inner" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/InnerConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/inner-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/InnerConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/inner-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/InnerConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/inner-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake" + mode: "config" + version: "1.1" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "WithInner" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindWithInner.cmake" + mode: "module" + version: "1.1" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "VersionCheck" + configs: + - + filename: "VersionCheckConfig.cmake" + kind: "cmake" + - + filename: "versioncheck-config.cmake" + kind: "cmake" + version_request: + version: "2.0" + version_complete: "2.0" + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "VersionCheck" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/VersionCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/versioncheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/VersionCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/versioncheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/VersionCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/versioncheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfig.cmake" + mode: "config" + reason: "insufficient_version" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/versioncheck-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfig.cmake" + mode: "config" + version: "2.5" +\.\.\.$ diff --git a/Tests/RunCMake/find_package/ConfigureLog-stderr.txt b/Tests/RunCMake/find_package/ConfigureLog-stderr.txt new file mode 100644 index 0000000000..336a0d8cd5 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog-stderr.txt @@ -0,0 +1,284 @@ +^CMake Debug Log at ConfigureLog.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindViaConfig.cmake: + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaConfig.cmake + .*/Modules/FindViaConfig.cmake + + The file was not found. + + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + .*/Tests/RunCMake/find_package/ConfigureLog-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + .*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ViaConfig_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\]. +( + none +)? + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ViaConfig's Config + module: + + .*/Tests/RunCMake/find_package/ConfigureLog-build/CMakeFiles/pkgRedirects/ViaConfigConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog-build/CMakeFiles/pkgRedirects/viaconfig-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/ViaConfigConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/viaconfig-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/ViaConfigConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/viaconfig-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfig.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLog.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindViaModule.cmake: + +( [^ +]* +)* + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaModule.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLog/cmake/FindWithInner.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindInner.cmake: + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindInner.cmake + .*/Modules/FindInner.cmake + + The file was not found. + + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + .*/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + .*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable Inner_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\]. +( + none +)? + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for Inner's Config module: + + .*/CMakeFiles/pkgRedirects/InnerConfig.cmake + .*/CMakeFiles/pkgRedirects/inner-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/InnerConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/inner-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/InnerConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/inner-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake + +Call Stack \(most recent call first\): + ConfigureLog.cmake:[0-9]+ \(find_package\) + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLog.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindWithInner.cmake: + + .*/Modules/FindWithInner.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindWithInner.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLog.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindVersionCheck.cmake: + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindVersionCheck.cmake + .*/Modules/FindVersionCheck.cmake +( [^ +]* +)* + The file was not found. + + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + .*/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + .*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable VersionCheck_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\]. +( + none +)? + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for VersionCheck's Config + module: + + .*/CMakeFiles/pkgRedirects/VersionCheckConfig.cmake + .*/CMakeFiles/pkgRedirects/versioncheck-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/VersionCheckConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/versioncheck-config.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/VersionCheckConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/versioncheck-config.cmake( + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfig.cmake + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/versioncheck-config.cmake)? + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfig.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/find_package/ConfigureLog.cmake b/Tests/RunCMake/find_package/ConfigureLog.cmake new file mode 100644 index 0000000000..49e785c183 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog.cmake @@ -0,0 +1,27 @@ +list(INSERT CMAKE_MODULE_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog/cmake") +list(INSERT CMAKE_PREFIX_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog") + +set(CMAKE_FIND_DEBUG_MODE 1) +# Stable sorting for predictable behaviors. +set(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) + +# Unset search variables for more predictable output. +unset(CMAKE_FRAMEWORK_PATH) +unset(CMAKE_APPBUNDLE_PATH) +unset(ENV{CMAKE_PREFIX_PATH}) +unset(ENV{CMAKE_FRAMEWORK_PATH}) +unset(ENV{CMAKE_APPBUNDLE_PATH}) + +# Find a config package +find_package(ViaConfig) + +# Find a module +find_package(ViaModule) + +# Find a module that chains to a config package +find_package(WithInner) + +# Version insufficiency testing +find_package(VersionCheck 2.0) diff --git a/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake new file mode 100644 index 0000000000..ae73fcc3d8 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake @@ -0,0 +1,24 @@ +set("${CMAKE_FIND_PACKAGE_NAME}_VERSION" "1.2") + +if (${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT AND + NOT ${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_EQUAL ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION) + set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0) + set("${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE" + "Not an EXACT version match") +elseif (DEFINED ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_RANGE AND + (${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_LESS ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_MIN OR + (${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND + ${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_GREATER_EQUAL ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_MAX) OR + (${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND + ${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_GREATER ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_MAX))) + set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0) + set("${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE" + "Out-of-range version request") +elseif (DEFINED ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION AND + ${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_LESS ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION) + set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0) + set("${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE" + "Insufficient version") +else () + set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 1) +endif () diff --git a/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaModule.cmake b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaModule.cmake new file mode 100644 index 0000000000..620474b2ad --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindViaModule.cmake @@ -0,0 +1,2 @@ +set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 1) +set("${CMAKE_FIND_PACKAGE_NAME}_VERSION" "1.0") diff --git a/Tests/RunCMake/find_package/ConfigureLog/cmake/FindWithInner.cmake b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindWithInner.cmake new file mode 100644 index 0000000000..eec0f83410 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/cmake/FindWithInner.cmake @@ -0,0 +1,3 @@ +find_package(Inner) +set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" "${Inner_FOUND}") +set("${CMAKE_FIND_PACKAGE_NAME}_VERSION" "${Inner_VERSION}") diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake new file mode 100644 index 0000000000..921ec035ec --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfig.cmake @@ -0,0 +1 @@ +set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 1) diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfigVersion.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfigVersion.cmake new file mode 100644 index 0000000000..5111cdb53c --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/Inner/InnerConfigVersion.cmake @@ -0,0 +1 @@ +set(PACKAGE_VERSION "1.1") diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake new file mode 100644 index 0000000000..921ec035ec --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake @@ -0,0 +1 @@ +set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 1) diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfigVersion.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfigVersion.cmake new file mode 100644 index 0000000000..b613b97b3e --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfigVersion.cmake @@ -0,0 +1 @@ +set(PACKAGE_VERSION "1.6") diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfig.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfig.cmake new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfigVersion.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfigVersion.cmake new file mode 100644 index 0000000000..dd436aaab6 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-1.5/VersionCheckConfigVersion.cmake @@ -0,0 +1,13 @@ +set(PACKAGE_VERSION "1.5") +if (PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_EXACT 1) +else () + set(PACKAGE_VERSION_EXACT 0) +endif () +if (PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE 0) +elseif (PACKAGE_FIND_VERSION_MAJOR EQUAL "1") + set(PACKAGE_VERSION_COMPATIBLE 1) +else () + set(PACKAGE_VERSION_COMPATIBLE 0) +endif () diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfig.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfig.cmake new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfigVersion.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfigVersion.cmake new file mode 100644 index 0000000000..0028a41d20 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/VersionCheck-2.5/VersionCheckConfigVersion.cmake @@ -0,0 +1,13 @@ +set(PACKAGE_VERSION "2.5") +if (PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_EXACT 1) +else () + set(PACKAGE_VERSION_EXACT 0) +endif () +if (PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE 0) +elseif (PACKAGE_FIND_VERSION_MAJOR EQUAL "2") + set(PACKAGE_VERSION_COMPATIBLE 1) +else () + set(PACKAGE_VERSION_COMPATIBLE 0) +endif () diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfig.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfig.cmake new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfigVersion.cmake b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfigVersion.cmake new file mode 100644 index 0000000000..dc12b244bb --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ViaConfig/ViaConfigConfigVersion.cmake @@ -0,0 +1 @@ +set(PACKAGE_VERSION "1.0") diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters1-config.txt b/Tests/RunCMake/find_package/ConfigureLogParameters1-config.txt new file mode 100644 index 0000000000..44a285f837 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters1-config.txt @@ -0,0 +1,322 @@ +^ +--- +events: + - + kind: "message-v1" + backtrace:( + - "[^"]+")+ + message: \|( ++ [^ +]*)* + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + version: "1.0" + version_complete: "1.0" + exact: true + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + reason: "not_found" + message: "Not an EXACT version match" + found: null + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + version: "1.0" + version_complete: "1.0...1.5" + min: "INCLUDE" + max: "INCLUDE" + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + version: "1.2" + version_complete: "1.2" + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "optional" + quiet: true + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "required_explicit" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + components: + - + name: "component" + required: true + found: false + - + name: "opt_component" + required: false + found: false + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + registry_view: "HOST" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: true + policy_scope: true + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: false + bypass_provider: false + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheck" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: true + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake" + mode: "module" + version: "1.2" +\.\.\.$ diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters1-stderr.txt b/Tests/RunCMake/find_package/ConfigureLogParameters1-stderr.txt new file mode 100644 index 0000000000..e0756e631d --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters1-stderr.txt @@ -0,0 +1,25 @@ +^CMake Debug Log at ConfigureLogParameters1.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindParameterCheck.cmake: + + .*/Modules/FindParameterCheck.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake + + The module is considered not found due to ParameterCheck_FOUND being FALSE. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)( + + +CMake Debug Log at ConfigureLogParameters1.cmake:[0-9]+ \(find_package\): + find_package considered the following paths for FindParameterCheck.cmake: + + .*/Modules/FindParameterCheck.cmake + + The file was found at + + .*/Tests/RunCMake/find_package/ConfigureLog/cmake/FindParameterCheck.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\))+$ diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters1.cmake b/Tests/RunCMake/find_package/ConfigureLogParameters1.cmake new file mode 100644 index 0000000000..00e69808f5 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters1.cmake @@ -0,0 +1,27 @@ +list(INSERT CMAKE_MODULE_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog/cmake") +list(INSERT CMAKE_PREFIX_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog") + +set(CMAKE_FIND_DEBUG_MODE 1) +# Stable sorting for predictable behaviors. +set(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) + +# Unset search variables for more predictable output. +unset(CMAKE_FRAMEWORK_PATH) +unset(CMAKE_APPBUNDLE_PATH) +unset(ENV{CMAKE_PREFIX_PATH}) +unset(ENV{CMAKE_FRAMEWORK_PATH}) +unset(ENV{CMAKE_APPBUNDLE_PATH}) + +# Parameter testing +find_package(ParameterCheck 1.0 EXACT) +find_package(ParameterCheck 1.0...1.5) +find_package(ParameterCheck 1.2) +find_package(ParameterCheck QUIET) +find_package(ParameterCheck REQUIRED) +find_package(ParameterCheck COMPONENTS component OPTIONAL_COMPONENTS opt_component) +find_package(ParameterCheck REGISTRY_VIEW HOST) +find_package(ParameterCheck GLOBAL) +find_package(ParameterCheck NO_POLICY_SCOPE) +find_package(ParameterCheck BYPASS_PROVIDER) diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters2-config.txt b/Tests/RunCMake/find_package/ConfigureLogParameters2-config.txt new file mode 100644 index 0000000000..989d83a22b --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters2-config.txt @@ -0,0 +1,524 @@ +^ +--- +events: + - + kind: "message-v1" + backtrace:( + - "[^"]+")+ + message: \|( ++ [^ +]*)* + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + hints: + - ".*/Tests/RunCMake/find_package" + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + - "suffix1" + - "suffix2" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/suffix1/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/suffix1/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/suffix2/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/suffix2/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/suffix1/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/suffix1/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/suffix2/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/suffix2/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix1/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix1/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix2/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix2/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: false + CMAKE_FIND_USE_INSTALL_PREFIX: false + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: false + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: false + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: false + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: null + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "ONLY" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "ParameterCheckConfig" + configs: + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "NEVER" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" + - + kind: "find_package-v1" + backtrace:( + - "[^"]+")+ + name: "OtherParameterCheck" + configs: + - + filename: "BogusParameterCheckConfig.cmake" + kind: "cmake" + - + filename: "bogusparametercheck-config.cmake" + kind: "cmake" + - + filename: "ParameterCheckConfigConfig.cmake" + kind: "cmake" + - + filename: "parametercheckconfig-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "optional" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "BogusParameterCheck" + - "ParameterCheckConfig" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: ".*/CMakeFiles/pkgRedirects/BogusParameterCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/bogusparametercheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/BogusParameterCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/bogusparametercheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/BogusParameterCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/bogusparametercheck-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/BogusParameterCheckConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/bogusparametercheck-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: ".*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake" + mode: "config" + version: "1.6" +\.\.\.$ diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters2-stderr.txt b/Tests/RunCMake/find_package/ConfigureLogParameters2-stderr.txt new file mode 100644 index 0000000000..2bcaf23ea3 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters2-stderr.txt @@ -0,0 +1,595 @@ +^CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ParameterCheckConfig_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + [^ +]*/Tests/RunCMake/find_package + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ParameterCheckConfig_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/suffix1/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/suffix1/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/suffix2/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/suffix2/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/suffix1/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/suffix1/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/suffix2/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/suffix2/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix1/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix1/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix2/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/suffix2/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + 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 ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + + The file was not found. + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ParameterCheckConfig_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ParameterCheckConfig_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable ParameterCheckConfig_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for ParameterCheckConfig's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) + + +CMake Debug Log at ConfigureLogParameters2.cmake:[0-9]+ \(find_package\): + The internally managed CMAKE_FIND_PACKAGE_REDIRECTS_DIR. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects + + _ROOT CMake variable \[CMAKE_FIND_USE_PACKAGE_ROOT_PATH\]. + + none + + CMAKE_PREFIX_PATH variable \[CMAKE_FIND_USE_CMAKE_PATH\]. + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables + \[CMAKE_FIND_USE_CMAKE_PATH\]. + + Env variable OtherParameterCheck_DIR + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_PREFIX_PATH env variable \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables + \[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH\]. + + none + + Paths specified by the find_package HINTS option. + + none + + Standard system environment variables + \[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH\]. + +( [^ +]* +)* + CMake User Package Registry \[CMAKE_FIND_USE_PACKAGE_REGISTRY\]. + + none + + CMake variables defined in the Platform file + \[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH\]. + +( [^ +]* +)* + CMake System Package Registry + \[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY\]. + + none + + Paths specified by the find_package PATHS option. + + none + + find_package considered the following locations for OtherParameterCheck's + Config module: + + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/BogusParameterCheckConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/bogusparametercheck-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLogParameters2-build/CMakeFiles/pkgRedirects/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/BogusParameterCheckConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/bogusparametercheck-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/BogusParameterCheckConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/bogusparametercheck-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/ParameterCheckConfigConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/cmake/parametercheckconfig-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/BogusParameterCheckConfig.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/bogusparametercheck-config.cmake + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + + The file was found at + + [^ +]*/Tests/RunCMake/find_package/ConfigureLog/lib/cmake/ParameterCheckConfig/ParameterCheckConfigConfig.cmake + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/find_package/ConfigureLogParameters2.cmake b/Tests/RunCMake/find_package/ConfigureLogParameters2.cmake new file mode 100644 index 0000000000..8fb9b06534 --- /dev/null +++ b/Tests/RunCMake/find_package/ConfigureLogParameters2.cmake @@ -0,0 +1,30 @@ +list(INSERT CMAKE_MODULE_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog/cmake") +list(INSERT CMAKE_PREFIX_PATH 0 + "${CMAKE_CURRENT_LIST_DIR}/ConfigureLog") + +set(CMAKE_FIND_DEBUG_MODE 1) +# Stable sorting for predictable behaviors. +set(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) + +# Unset search variables for more predictable output. +unset(CMAKE_FRAMEWORK_PATH) +unset(CMAKE_APPBUNDLE_PATH) +unset(ENV{CMAKE_PREFIX_PATH}) +unset(ENV{CMAKE_FRAMEWORK_PATH}) +unset(ENV{CMAKE_APPBUNDLE_PATH}) + +# Parameter testing +find_package(ParameterCheckConfig HINTS "${CMAKE_CURRENT_LIST_DIR}") +unset(ParameterCheckConfig_DIR CACHE) +find_package(ParameterCheckConfig PATH_SUFFIXES suffix1 suffix2) +unset(ParameterCheckConfig_DIR CACHE) +find_package(ParameterCheckConfig NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_SYSTEM_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_SYSTEM_PACKAGE_REGISTRY) +unset(ParameterCheckConfig_DIR CACHE) +find_package(ParameterCheckConfig CMAKE_FIND_ROOT_PATH_BOTH) +unset(ParameterCheckConfig_DIR CACHE) +find_package(ParameterCheckConfig ONLY_CMAKE_FIND_ROOT_PATH) +unset(ParameterCheckConfig_DIR CACHE) +find_package(ParameterCheckConfig NO_CMAKE_FIND_ROOT_PATH) + +find_package(OtherParameterCheck NAMES BogusParameterCheck ParameterCheckConfig) diff --git a/Tests/RunCMake/find_package/RunCMakeTest.cmake b/Tests/RunCMake/find_package/RunCMakeTest.cmake index 5affd8a163..9ae1a7cdf0 100644 --- a/Tests/RunCMake/find_package/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_package/RunCMakeTest.cmake @@ -4,6 +4,10 @@ run_cmake(CMP0074-WARN) run_cmake(CMP0074-OLD) run_cmake(ComponentRecursion) run_cmake(ComponentRequiredAndOptional) +run_cmake(ConfigureLog) +# Two tests because the stderr regex otherwise takes way too long to load. +run_cmake(ConfigureLogParameters1) +run_cmake(ConfigureLogParameters2) run_cmake(EmptyRoots) run_cmake(FromPATHEnv) run_cmake_with_options(FromPATHEnvDebugPkg --debug-find-pkg=Resolved)