
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
17 lines
700 B
CMake
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
|
|
)
|