cmSystemTools: Fix GetRealPath implementation on Windows
In commit 823e1df54c (cmSystemTools: Implement GetRealPath on Windows,
2024-11-04, v4.0.0-rc1~521^2~1) we implemented the POSIX behavior that
resolves symlinks followed by '..' components. However, Windows just
removes them lexically. Also, we were not handling all junction types.
Instead, use `GetFinalPathNameByHandleW` via `uv_fs_realpath`.
Note that we previously attempted this in commit 640709e7db
(cmSystemTools: Implement GetRealPath on Windows, 2017-10-02,
v3.11.0-rc1~445^2~1) but reverted it in commit 83630d4918
(cmSystemTools: Revert GetRealPath implementation on Windows,
2018-05-29, v3.11.3~3^2) due to resolving `subst` drives. This time,
add code to re-`subst`itute the drive in the resolved path.
Fixes: #26750
Issue: #17206
1 file changed