Windows: Fix inconsistent behavior on changes to case of path to cmake
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)