Skip to content

Commit 185e6a1

Browse files
committed
Merge branch 'find_package-fix-NO_MODULE' into release-3.15
Merge-request: !3557
2 parents 7242d81 + f2edcce commit 185e6a1

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

Source/cmFindPackageCommand.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -823,8 +823,9 @@ bool cmFindPackageCommand::HandlePackageMode(
823823
}
824824
}
825825

826-
if (this->Makefile->IsOn("CMAKE_FIND_PACKAGE_PREFER_CONFIG") && !found &&
827-
handlePackageModeType == HandlePackageModeType::Config) {
826+
if (this->UseFindModules && !found &&
827+
handlePackageModeType == HandlePackageModeType::Config &&
828+
this->Makefile->IsOn("CMAKE_FIND_PACKAGE_PREFER_CONFIG")) {
828829
// Config mode failed. Allow Module case.
829830
result = false;
830831
}

Tests/FindPackageTest/CMakeLists.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,26 @@ endif()
579579

580580
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
581581
set(CMAKE_PREFIX_PATH)
582+
set(CMAKE_MODULE_PATH)
583+
584+
############################################################################
585+
##Test FIND_PACKAGE CMAKE_FIND_PACKAGE_PREFER_CONFIG - Do not recurse
586+
587+
# No CMAKE_PREFIX_PATH
588+
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/PreferConfigRecurse)
589+
590+
# Now prefer config mode
591+
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
592+
unset(ACME_FOUND)
593+
unset(ACME_CONFIG)
594+
595+
find_package(ACME)
596+
if(ACME_FOUND AND ACME_CONFIG)
597+
message(SEND_ERROR "Incorrectly found ACME in CONFIG mode, from the MODULE package")
598+
endif()
599+
600+
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
601+
set(CMAKE_MODULE_PATH)
582602

583603
############################################################################
584604
##Test find_package CMAKE_FIND_PACKAGE_PREFER_CONFIG with module fallback
@@ -592,3 +612,16 @@ find_package(ACME REQUIRED)
592612
if(NOT ACME_FOUND)
593613
message(SEND_ERROR "Did not find ACME package")
594614
endif()
615+
616+
############################################################################
617+
##Test find_package CMAKE_FIND_PACKAGE_PREFER_CONFIG with NO_MODULE
618+
619+
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/PreferConfigOnlyModule)
620+
621+
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
622+
623+
find_package(ACME NO_MODULE)
624+
625+
if(ACME_FOUND)
626+
message(SEND_ERROR "Should not find ACME package")
627+
endif()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
set(ACME_FOUND TRUE)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
find_package(ACME NO_MODULE)

0 commit comments

Comments
 (0)