ENH: better algorithm for looking for make and gcc on msys and mingw
This commit is contained in:
parent
5288d61ede
commit
5042581f43
|
@ -1,2 +1,6 @@
|
|||
FIND_PROGRAM(CMAKE_MAKE_PROGRAM make PATHS c:/msys/1.0/bin /msys/1.0/bin)
|
||||
FIND_PROGRAM(CMAKE_MAKE_PROGRAM make
|
||||
PATHS
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MSYS-1.0_is1;Inno Setup: App Path]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin"
|
||||
c:/msys/1.0/bin /msys/1.0/bin)
|
||||
MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM)
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
FIND_PROGRAM(CMAKE_MAKE_PROGRAM mingw32-make.exe PATHS c:/MinGW/bin /MinGW/bin)
|
||||
FIND_PROGRAM(CMAKE_MAKE_PROGRAM mingw32-make.exe PATHS
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin"
|
||||
c:/MinGW/bin /MinGW/bin)
|
||||
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)
|
||||
|
||||
MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM CMAKE_SH)
|
||||
|
|
|
@ -32,24 +32,21 @@ void cmGlobalMSYSMakefileGenerator::EnableLanguage(std::vector<std::string>const
|
|||
std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||
std::vector<std::string> locations;
|
||||
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
||||
locations.push_back("c:/mingw/bin");
|
||||
locations.push_back("/mingw/bin");
|
||||
locations.push_back("/msys/1.0/bin");
|
||||
locations.push_back("c:/mingw/bin");
|
||||
locations.push_back("C:/msys/1.0/bin");
|
||||
std::string tgcc = cmSystemTools::FindProgram("gcc", locations);
|
||||
std::string gcc = "gcc.exe";
|
||||
std::string gxx = "g++.exe";
|
||||
std::string slash = "/";
|
||||
for(std::vector<std::string>::iterator i = locations.begin();
|
||||
i != locations.end(); ++i)
|
||||
if(tgcc.size())
|
||||
{
|
||||
std::string tgcc = *i + slash + gcc;
|
||||
std::string tgxx = *i + slash + gxx;
|
||||
if(cmSystemTools::FileExists(tgcc.c_str()))
|
||||
{
|
||||
gcc = tgcc;
|
||||
gxx = tgxx;
|
||||
break;
|
||||
}
|
||||
gcc = tgcc;
|
||||
}
|
||||
std::string tgxx = cmSystemTools::FindProgram("g++", locations);
|
||||
std::string gxx = "g++.exe";
|
||||
if(tgxx.size())
|
||||
{
|
||||
gxx = tgxx;
|
||||
}
|
||||
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
|
||||
|
|
|
@ -32,22 +32,19 @@ void cmGlobalMinGWMakefileGenerator::EnableLanguage(std::vector<std::string>cons
|
|||
std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||
std::vector<std::string> locations;
|
||||
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
||||
locations.push_back("c:/mingw/bin");
|
||||
locations.push_back("/mingw/bin");
|
||||
locations.push_back("c:/mingw/bin");
|
||||
std::string tgcc = cmSystemTools::FindProgram("gcc", locations);
|
||||
std::string gcc = "gcc.exe";
|
||||
std::string gxx = "g++.exe";
|
||||
std::string slash = "/";
|
||||
for(std::vector<std::string>::iterator i = locations.begin();
|
||||
i != locations.end(); ++i)
|
||||
if(tgcc.size())
|
||||
{
|
||||
std::string tgcc = *i + slash + gcc;
|
||||
std::string tgxx = *i + slash + gxx;
|
||||
if(cmSystemTools::FileExists(tgcc.c_str()))
|
||||
{
|
||||
gcc = tgcc;
|
||||
gxx = tgxx;
|
||||
break;
|
||||
}
|
||||
gcc = tgcc;
|
||||
}
|
||||
std::string tgxx = cmSystemTools::FindProgram("g++", locations);
|
||||
std::string gxx = "g++.exe";
|
||||
if(tgxx.size())
|
||||
{
|
||||
gxx = tgxx;
|
||||
}
|
||||
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
|
||||
|
|
Loading…
Reference in New Issue