CMake/Tests/RunCMake/find_package/FindRootPathAndPrefixPathAreEqual.cmake
Alexandru Croitor 91ec6eee58 find_package: Don't reroot prefix that is equal to a root path
When both CMAKE_FIND_ROOT_PATH and CMAKE_PREFIX_PATH are set to
/opt/my_device_sysroot, cmFindCommon::RerootPaths would only look
for packages in /opt/my_device_sysroot/opt/my_device_sysroot
but would not try to look in /opt/my_device_sysroot.

Make sure to not reroot the prefix path in such a case.

Fixes: #21937
2021-10-20 18:50:41 +02:00

17 lines
700 B
CMake

set(root "${CMAKE_CURRENT_SOURCE_DIR}/FindRootPathAndPrefixPathAreEqual")
set(CMAKE_FIND_ROOT_PATH "${root}")
set(CMAKE_PREFIX_PATH "${root}")
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "ONLY")
find_package(Foo
REQUIRED
CONFIG
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
# Important because CMAKE_SYSTEM_PREFIX_PATH might contain "/" as a prefix
# And when "/" is rerooted onto the root above, the package is found even if
# CMAKE_PREFIX_PATH is empty. We want to ensure that we hit
# the CMAKE_FIND_ROOT_PATH == CMAKE_PREFIX_PATH code path.
NO_CMAKE_SYSTEM_PATH
)