diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2002-11-13 19:31:44 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2002-11-13 19:31:44 (GMT) |
commit | 7b54b22ccd6a681cf50218d4beec325a5a8ddf4e (patch) | |
tree | 6dd9b376e10e5db27ed7a2001d2374bb04ed3a6b | |
parent | 4a9e7907173aae4b1b9ea598e351102932d551af (diff) | |
download | CMake-7b54b22ccd6a681cf50218d4beec325a5a8ddf4e.zip CMake-7b54b22ccd6a681cf50218d4beec325a5a8ddf4e.tar.gz CMake-7b54b22ccd6a681cf50218d4beec325a5a8ddf4e.tar.bz2 |
ENH: force a global generate if the cache version does not match the running cmake
-rw-r--r-- | Source/cmCacheManager.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator.cxx | 22 |
2 files changed, 23 insertions, 3 deletions
diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index ad80383..81762a1 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -279,6 +279,10 @@ bool cmCacheManager::SaveCache(const char* path) "Major version of cmake used to create the " "current loaded cache", cmCacheManager::INTERNAL); + this->AddCacheEntry("CMAKE_CACHE_RELEASE_VERSION", cmMakefile::GetReleaseVersion(), + "Major version of cmake used to create the " + "current loaded cache", cmCacheManager::INTERNAL); + // Let us store the current working directory so that if somebody // Copies it, he will not be surprised std::string currentcwd = path; diff --git a/Source/cmGlobalUnixMakefileGenerator.cxx b/Source/cmGlobalUnixMakefileGenerator.cxx index cccbaef..4fc0f60 100644 --- a/Source/cmGlobalUnixMakefileGenerator.cxx +++ b/Source/cmGlobalUnixMakefileGenerator.cxx @@ -23,6 +23,22 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, cmMakefile *mf) { + bool isLocal = m_CMakeInstance->GetLocal(); + const char* majv = mf->GetDefinition("CMAKE_CACHE_MAJOR_VERSION"); + const char* minv = mf->GetDefinition("CMAKE_CACHE_MINOR_VERSION"); + const char* relv = mf->GetDefinition("CMAKE_CACHE_RELEASE_VERSION"); + bool cacheSameCMake = false; + if(majv && atoi(majv) == cmMakefile::GetMajorVersion() + && minv && atoi(minv) == cmMakefile::GetMinorVersion() + && relv && (strcmp(relv, cmMakefile::GetReleaseVersion()) == 0)) + { + cacheSameCMake = true; + } + if(!cacheSameCMake) + { + isLocal = false; + } + // if no lang specified use CXX if(!lang ) { @@ -39,7 +55,7 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, bool needCXXBackwards = false; // check for a C compiler and configure it - if(!m_CMakeInstance->GetLocal() && + if(!isLocal && !this->GetLanguageEnabled("C") && lang[0] == 'C') { @@ -63,7 +79,7 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, } // check for a CXX compiler and configure it - if(!m_CMakeInstance->GetLocal() && + if(!isLocal && !this->GetLanguageEnabled("CXX") && strcmp(lang, "CXX") == 0) { @@ -101,7 +117,7 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, mf->ReadListFile(0,fpath.c_str()); } - if(!m_CMakeInstance->GetLocal()) + if(!isLocal) { // At this point we should have enough info for a try compile // which is used in the backward stuff |