diff options
author | Brad King <brad.king@kitware.com> | 2016-11-18 14:10:29 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-11-18 14:10:29 (GMT) |
commit | 2469cb5aae79f2ab409744f0ab1ef54d6fac7c2a (patch) | |
tree | 0dac86308264b2edc9f02ba126a533e64e4dc01e /Source | |
parent | 6e72c8d491afb85cb6cbdea88c4bcbea8e293494 (diff) | |
parent | 25b6e7b710d7739cca44ed19bf45a190e72a6b82 (diff) | |
download | CMake-2469cb5aae79f2ab409744f0ab1ef54d6fac7c2a.zip CMake-2469cb5aae79f2ab409744f0ab1ef54d6fac7c2a.tar.gz CMake-2469cb5aae79f2ab409744f0ab1ef54d6fac7c2a.tar.bz2 |
Merge topic 'tolerate-removed-cache'
25b6e7b7 Tolerate removed/replaced CMakeCache.txt with old CMakeFiles/
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa447ff..2808051 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -50,6 +50,9 @@ #include <cm_jsoncpp_writer.h> #endif +const std::string kCMAKE_PLATFORM_INFO_INITIALIZED = + "CMAKE_PLATFORM_INFO_INITIALIZED"; + class cmInstalledFile; bool cmTarget::StrictTargetComparison::operator()(cmTarget const* t1, @@ -428,6 +431,23 @@ void cmGlobalGenerator::EnableLanguage( // set the dir for parent files so they can be used by modules mf->AddDefinition("CMAKE_PLATFORM_INFO_DIR", rootBin.c_str()); + if (!this->CMakeInstance->GetIsInTryCompile()) { + // Keep a mark in the cache to indicate that we've initialized the + // platform information directory. If the platform information + // directory exists but the mark is missing then CMakeCache.txt + // has been removed or replaced without also removing the CMakeFiles/ + // directory. In this case remove the platform information directory + // so that it will be re-initialized and the relevant information + // restored in the cache. + if (cmSystemTools::FileIsDirectory(rootBin) && + !mf->IsOn(kCMAKE_PLATFORM_INFO_INITIALIZED)) { + cmSystemTools::RemoveADirectory(rootBin); + } + this->GetCMakeInstance()->AddCacheEntry( + kCMAKE_PLATFORM_INFO_INITIALIZED, "1", + "Platform information initialized", cmStateEnums::INTERNAL); + } + // find and make sure CMAKE_MAKE_PROGRAM is defined if (!this->FindMakeProgram(mf)) { return; |