diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2019-07-16 08:42:00 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-07-16 13:09:24 (GMT) |
commit | f2edccea666662ce93af29e397c50702a675f3f4 (patch) | |
tree | a0a94a1ed1f1e965a5b61a79f107a820e6383851 /Source/cmFindPackageCommand.cxx | |
parent | 86ead0b5a32ee48907084a7cf85d00196cbf0366 (diff) | |
download | CMake-f2edccea666662ce93af29e397c50702a675f3f4.zip CMake-f2edccea666662ce93af29e397c50702a675f3f4.tar.gz CMake-f2edccea666662ce93af29e397c50702a675f3f4.tar.bz2 |
find_package: Fix NO_MODULE under CMAKE_FIND_PACKAGE_PREFER_CONFIG
The module mode fallback added by commit 22e65d10c1 (find_package: Fixed
CMAKE_FIND_PACKAGE_PREFER_CONFIG Module fallback, 2019-06-13,
v3.15.0-rc2~6^2) should not be used unless the `find_package` call
allows module mode. Doing so can lead to infinite recursion if a find
module tries to call config mode with `find_package(... NO_MODULE)`.
Fix the logic and add a test case.
Fixes: #19478
Diffstat (limited to 'Source/cmFindPackageCommand.cxx')
-rw-r--r-- | Source/cmFindPackageCommand.cxx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 828488f..1d4a8ed 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -823,8 +823,9 @@ bool cmFindPackageCommand::HandlePackageMode( } } - if (this->Makefile->IsOn("CMAKE_FIND_PACKAGE_PREFER_CONFIG") && !found && - handlePackageModeType == HandlePackageModeType::Config) { + if (this->UseFindModules && !found && + handlePackageModeType == HandlePackageModeType::Config && + this->Makefile->IsOn("CMAKE_FIND_PACKAGE_PREFER_CONFIG")) { // Config mode failed. Allow Module case. result = false; } |