ENH: force a global generate if the cache version does not match the running cmake

This commit is contained in:
Bill Hoffman 2002-11-13 14:31:44 -05:00
parent 4a9e790717
commit 7b54b22ccd
2 changed files with 23 additions and 3 deletions

View File

@ -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;

View File

@ -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