diff --git a/Modules/CMakeMinGWFindMake.cmake b/Modules/CMakeMinGWFindMake.cmake index 1973d0f9e..42d162492 100644 --- a/Modules/CMakeMinGWFindMake.cmake +++ b/Modules/CMakeMinGWFindMake.cmake @@ -1,2 +1,8 @@ FIND_PROGRAM(CMAKE_MAKE_PROGRAM mingw32-make.exe PATHS c:/MinGW/bin /MinGW/bin) -MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) +FIND_PROGRAM(CMAKE_SH sh.exe ) +MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM CMAKE_SH) +IF(CMAKE_SH) + MESSAGE(FATAL_ERROR "sh.exe was found in your PATH, here:\n${CMAKE_SH}\nFor MinGW make to work correctly sh.exe must NOT be in your path.\nRun cmake from a shell that does not have sh.exe in your PATH.\nIf you want to use a UNIX shell, then use MSYS Makefiles.\n") + SET(CMAKE_MAKE_PROGRAM NOTFOUND) +ENDIF(CMAKE_SH) + diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 831375077..6033565d4 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1376,7 +1376,8 @@ int cmake::Configure() // user can select another. m_CacheManager->RemoveCacheEntry("CMAKE_GENERATOR"); } - if ( !m_ScriptMode ) + // only save the cache if there were no fatal errors + if ( !m_ScriptMode && !cmSystemTools::GetFatalErrorOccured() ) { this->m_CacheManager->SaveCache(this->GetHomeOutputDirectory()); }