From 0e2b87244ccf45fa1bc1c68ba66ba183e6220b94 Mon Sep 17 00:00:00 2001 From: Hongxu Xu Date: Mon, 24 Feb 2025 20:35:49 +0800 Subject: [PATCH] find_package: Fix CMAKE_FIND_PACKAGE_SORT_DIRECTION documented default Previously the documentation said the default was `DEC`, but the implementation has always defaulted to `ASC`. Fixes: #22728 --- .../CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst | 10 +++++----- Source/cmFindPackageCommand.cxx | 2 +- Tests/FindPackageCMakeTest/CMakeLists.txt | 17 +++++++++-------- Tests/FindPackageCpsTest/CMakeLists.txt | 17 +++++++++-------- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst b/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst index 98c2a8f9ad..92758fd02d 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst @@ -6,13 +6,13 @@ CMAKE_FIND_PACKAGE_SORT_DIRECTION The sorting direction used by :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`. It can assume one of the following values: -``DEC`` - Default. Ordering is done in descending mode. - The highest folder found will be tested first. - ``ASC`` - Ordering is done in ascending mode. + Default. Ordering is done in ascending mode. The lowest folder found will be tested first. +``DEC`` + Ordering is done in descending mode. + The highest folder found will be tested first. + If :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` is not set or is set to ``NONE`` this variable has no effect. diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 2c51cf095b..07060d66ee 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -678,7 +678,7 @@ bool cmFindPackageCommand::InitialPass(std::vector const& args) } if (cmValue const sd = this->Makefile->GetDefinition("CMAKE_FIND_PACKAGE_SORT_DIRECTION")) { - this->SortDirection = (*sd == "ASC") ? Asc : Dec; + this->SortDirection = (*sd == "DEC") ? Dec : Asc; } // Find what search path locations have been enabled/disable. diff --git a/Tests/FindPackageCMakeTest/CMakeLists.txt b/Tests/FindPackageCMakeTest/CMakeLists.txt index 3e010292a7..bd1887a28e 100644 --- a/Tests/FindPackageCMakeTest/CMakeLists.txt +++ b/Tests/FindPackageCMakeTest/CMakeLists.txt @@ -554,14 +554,15 @@ endif() ##Test FIND_PACKAGE using sorting set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}) -set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) -SET(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) -SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION ASC) -FIND_PACKAGE(SortLib CONFIG) -IF (NOT "${SortLib_VERSION}" STREQUAL "3.1.1") - message(SEND_ERROR "FIND_PACKAGE_SORT_ORDER Name Asc! ${SortLib_VERSION}") -endif() -unset(SortLib_VERSION) +foreach(CMAKE_FIND_PACKAGE_SORT_DIRECTION IN ITEMS "" ASC Bogus) + set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) + SET(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) + FIND_PACKAGE(SortLib CONFIG) + IF (NOT "${SortLib_VERSION}" STREQUAL "3.1.1") + message(SEND_ERROR "FIND_PACKAGE_SORT_ORDER Name Asc! ${SortLib_VERSION}") + endif() + unset(SortLib_VERSION) +endforeach() set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) diff --git a/Tests/FindPackageCpsTest/CMakeLists.txt b/Tests/FindPackageCpsTest/CMakeLists.txt index 561d401f17..8f076ae00a 100644 --- a/Tests/FindPackageCpsTest/CMakeLists.txt +++ b/Tests/FindPackageCpsTest/CMakeLists.txt @@ -80,14 +80,15 @@ endif() ############################################################################### # Test glob sorting. -set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) -set(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) -set(CMAKE_FIND_PACKAGE_SORT_DIRECTION ASC) -find_package(SortLib CONFIG) -if(NOT "${SortLib_VERSION}" STREQUAL "3.1.1") - message(SEND_ERROR "FIND_PACKAGE_SORT_ORDER Name Asc! ${SortLib_VERSION}") -endif() -unset(SortLib_VERSION) +foreach(CMAKE_FIND_PACKAGE_SORT_DIRECTION IN ITEMS "" ASC Bogus) + set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) + set(CMAKE_FIND_PACKAGE_SORT_ORDER NAME) + find_package(SortLib CONFIG) + if(NOT "${SortLib_VERSION}" STREQUAL "3.1.1") + message(SEND_ERROR "FIND_PACKAGE_SORT_ORDER Name Asc! ${SortLib_VERSION}") + endif() + unset(SortLib_VERSION) +endforeach() set(SortLib_DIR "" CACHE FILEPATH "Wipe out find results for testing." FORCE) set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)