From 7f0a21a51eb483c523a2c8880ce4e0466251ec74 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 18 Jan 2017 10:06:23 -0500 Subject: cmSystemTools: use the actual case for root detection On Windows, calling a binary installed with the default `bin` binary directory will fail to be detected when called as `BIN\cmake.exe` due to the string compare. Get the actual case of the path before checking that the path ends with `CMAKE_BIN_DIR`. Fixes #16574. --- Source/cmSystemTools.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 3d8fdf5..e693beb 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1979,7 +1979,8 @@ void cmSystemTools::FindCMakeResources(const char* argv0) // Install tree has // - "/cmake" // - "" - if (cmHasSuffix(exe_dir, CMAKE_BIN_DIR)) { + const std::string actual_case = cmSystemTools::GetActualCaseForPath(exe_dir); + if (cmHasSuffix(actual_case, CMAKE_BIN_DIR)) { std::string const prefix = exe_dir.substr(0, exe_dir.size() - strlen(CMAKE_BIN_DIR)); cmSystemToolsCMakeRoot = prefix + CMAKE_DATA_DIR; -- cgit v0.12