Skip to content

Windows: Fix inconsistent behavior on changes to case of path to cmake

Brad King requested to merge brad.king/cmake:fix-CMP0017-path-case into master

In commit 540f0253 we brought in upstream KWSys commit utils/kwsys@86a24794. This caused our path processing to convert drive letters to upper-case and exposed an existing bug in our implementation of CMP0017.

Policy CMP0017 is responsible for ensuring that modules included from a builtin module only load other builtin modules and cannot be overridden by a file in CMAKE_MODULE_PATH. If there is a case difference in the drive letter (or other path components) then the path to the including module may not match our builtin module directory in a simple string comparison. This means builtin modules may not be recognized as such, and they may not reliably include their builtin dependencies. For example, if a project provides a Platform/Windows module in CMAKE_MODULE_PATH it can break inclusion of our builtin Platform/Windows module, leading to strange behavior.

Fix this by comparing the path to the including module to our builtin module directory using a function that is aware of case-insensitivity of paths on Windows.

Fixes: #16648 (closed), #16622 (closed)

Merge request reports