From 3b60232ebcde69789a6c26f5c523ad107a7099c5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 7 Jul 2015 14:12:38 -0400 Subject: cmake: Preserve cached CMAKE_GENERATOR when an error occurs (#15640) Since commit v2.4.0~4158 (When the initially configured generator is invalid, allow the user to change the generator without deleting the cache by hand, 2003-05-13) we remove CMAKE_GENERATOR from the cache if an error occurs and CMAKE_MAKE_PROGRAM is not cached. This worked at the time because all generators initialized the CMAKE_MAKE_PROGRAM cache entry. Since commit v3.0.0-rc1~260^2~4 (VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators, 2013-11-15) and commit v3.2.0-rc1~39^2 (Xcode: Switch to internal CMAKE_MAKE_PROGRAM lookup by generator, 2015-01-28) the VS and Xcode generators no longer store CMAKE_MAKE_PROGRAM in the cache. Therefore any error during generation would wipe out CMAKE_GENERATOR from the cache and cause the next configuration to choose a default generator. Simply drop the behavior introduced by the original commit and always preserve CMAKE_GENERATOR. Since the time that behavior was introduced a lot more state is now saved in CMakeCache.txt and CMakeFiles/ during the initial configuration so it is not safe to change generators without starting fresh anyway. --- Source/cmake.cxx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 0570399..7bf3832 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1439,19 +1439,6 @@ int cmake::ActualConfigure() } } - if(cmSystemTools::GetFatalErrorOccured()) - { - const char* makeProgram = - this->State->GetInitializedCacheValue("CMAKE_MAKE_PROGRAM"); - if (!makeProgram || cmSystemTools::IsOff(makeProgram)) - { - // We must have a bad generator selection. Wipe the cache entry so the - // user can select another. - this->State->RemoveCacheEntry("CMAKE_GENERATOR"); - this->State->RemoveCacheEntry("CMAKE_EXTRA_GENERATOR"); - } - } - cmMakefile* mf=this->GlobalGenerator->GetLocalGenerators()[0]->GetMakefile(); if (mf->IsOn("CTEST_USE_LAUNCHERS") && !this->State->GetGlobalProperty("RULE_LAUNCH_COMPILE")) -- cgit v0.12