Pārlūkot izejas kodu

ENH: do not allow mingw makefiles to generate if sh.exe is in the path, also do not write CMakeCache.txt if there is a fatal error.

Bill Hoffman 20 gadi atpakaļ
vecāks
revīzija
14cbc9571a
2 mainītis faili ar 9 papildinājumiem un 2 dzēšanām
  1. 7 1
      Modules/CMakeMinGWFindMake.cmake
  2. 2 1
      Source/cmake.cxx

+ 7 - 1
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)
+

+ 2 - 1
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());
     }