From 2e451961b68e460153600dc5967c21676cb20234 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 24 Feb 2005 10:32:58 -0500 Subject: BUG: Only use the existing CMake(lang)Compiler.cmake file from the build tree if it was generated by the same version of CMake. --- Source/cmGlobalGenerator.cxx | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index f194e08..296a008 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -207,23 +207,33 @@ void cmGlobalGenerator::EnableLanguage(std::vectorconst& languages, "broken CMakeLists.txt file or a problematic release of " "CMake"); } - // try and load the configured file first - std::string loadedLang = "CMAKE_"; - loadedLang += lang; - loadedLang += "_COMPILER_LOADED"; - if(!mf->GetDefinition(loadedLang.c_str())) + + // If the existing build tree was already configured with this + // version of CMake then try to load the configured file first + // to avoid duplicate compiler tests. + unsigned int cacheMajor = mf->GetCacheMajorVersion(); + unsigned int cacheMinor = mf->GetCacheMinorVersion(); + unsigned int selfMajor = cmMakefile::GetMajorVersion(); + unsigned int selfMinor = cmMakefile::GetMinorVersion(); + if(selfMajor == cacheMajor && selfMinor == cacheMinor) { - fpath = rootBin; - fpath += "/CMake"; - fpath += lang; - fpath += "Compiler.cmake"; - if(cmSystemTools::FileExists(fpath.c_str())) + std::string loadedLang = "CMAKE_"; + loadedLang += lang; + loadedLang += "_COMPILER_LOADED"; + if(!mf->GetDefinition(loadedLang.c_str())) { - if(!mf->ReadListFile(0,fpath.c_str())) + fpath = rootBin; + fpath += "/CMake"; + fpath += lang; + fpath += "Compiler.cmake"; + if(cmSystemTools::FileExists(fpath.c_str())) { - cmSystemTools::Error("Could not find cmake module file:", fpath.c_str()); + if(!mf->ReadListFile(0,fpath.c_str())) + { + cmSystemTools::Error("Could not find cmake module file:", fpath.c_str()); + } + this->SetLanguageEnabled(lang, mf); } - this->SetLanguageEnabled(lang, mf); } } -- cgit v0.12