summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalUnixMakefileGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2002-11-13 19:31:44 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2002-11-13 19:31:44 (GMT)
commit7b54b22ccd6a681cf50218d4beec325a5a8ddf4e (patch)
tree6dd9b376e10e5db27ed7a2001d2374bb04ed3a6b /Source/cmGlobalUnixMakefileGenerator.cxx
parent4a9e7907173aae4b1b9ea598e351102932d551af (diff)
downloadCMake-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
Diffstat (limited to 'Source/cmGlobalUnixMakefileGenerator.cxx')
-rw-r--r--Source/cmGlobalUnixMakefileGenerator.cxx22
1 files changed, 19 insertions, 3 deletions
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