diff options
author | Brad King <brad.king@kitware.com> | 2017-03-23 12:42:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-03-23 12:42:51 (GMT) |
commit | 324d7f5a507bdfc9e46665573c42b82c4d51d9a9 (patch) | |
tree | 480e0988521e1b5046cc64f754b210bf58bf2011 | |
parent | 51ef9bb1eb9468376b6ab2014f4519d57b90c682 (diff) | |
parent | 8285ad511a92416f0e99fcda27de98435316173b (diff) | |
download | CMake-324d7f5a507bdfc9e46665573c42b82c4d51d9a9.zip CMake-324d7f5a507bdfc9e46665573c42b82c4d51d9a9.tar.gz CMake-324d7f5a507bdfc9e46665573c42b82c4d51d9a9.tar.bz2 |
Merge branch 'server-mode-fix-home-dir-check' into release
-rw-r--r-- | Source/cmServerProtocol.cxx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index 334a05a..a5c1a23 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -255,6 +255,27 @@ static void setErrorMessage(std::string* errorMessage, const std::string& text) } } +static bool testHomeDirectory(cmState* state, std::string& value, + std::string* errorMessage) +{ + const std::string cachedValue = + std::string(state->GetCacheEntryValue("CMAKE_HOME_DIRECTORY")); + const std::string suffix = "/CMakeLists.txt"; + const std::string cachedValueCML = cachedValue + suffix; + const std::string valueCML = value + suffix; + if (!cmSystemTools::SameFile(valueCML, cachedValueCML)) { + setErrorMessage(errorMessage, + std::string("\"CMAKE_HOME_DIRECTORY\" is set but " + "incompatible with configured " + "source directory value.")); + return false; + } + if (value.empty()) { + value = cachedValue; + } + return true; +} + static bool testValue(cmState* state, const std::string& key, std::string& value, const std::string& keyDescription, std::string* errorMessage) @@ -314,8 +335,7 @@ bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request, } // check sourcedir: - if (!testValue(state, "CMAKE_HOME_DIRECTORY", sourceDirectory, - "source directory", errorMessage)) { + if (!testHomeDirectory(state, sourceDirectory, errorMessage)) { return false; } |