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)
|
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 )
|
FIND_PROGRAM(CMAKE_SH sh.exe )
|
||||||
MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM CMAKE_SH)
|
|
||||||
IF(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")
|
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)
|
SET(CMAKE_MAKE_PROGRAM NOTFOUND)
|
||||||
ENDIF(CMAKE_SH)
|
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::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||||
std::vector<std::string> locations;
|
std::vector<std::string> locations;
|
||||||
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
||||||
locations.push_back("c:/mingw/bin");
|
|
||||||
locations.push_back("/mingw/bin");
|
locations.push_back("/mingw/bin");
|
||||||
locations.push_back("/msys/1.0/bin");
|
locations.push_back("/msys/1.0/bin");
|
||||||
|
locations.push_back("c:/mingw/bin");
|
||||||
locations.push_back("C:/msys/1.0/bin");
|
locations.push_back("C:/msys/1.0/bin");
|
||||||
|
std::string tgcc = cmSystemTools::FindProgram("gcc", locations);
|
||||||
std::string gcc = "gcc.exe";
|
std::string gcc = "gcc.exe";
|
||||||
std::string gxx = "g++.exe";
|
if(tgcc.size())
|
||||||
std::string slash = "/";
|
|
||||||
for(std::vector<std::string>::iterator i = locations.begin();
|
|
||||||
i != locations.end(); ++i)
|
|
||||||
{
|
{
|
||||||
std::string tgcc = *i + slash + gcc;
|
gcc = tgcc;
|
||||||
std::string tgxx = *i + slash + gxx;
|
}
|
||||||
if(cmSystemTools::FileExists(tgcc.c_str()))
|
std::string tgxx = cmSystemTools::FindProgram("g++", locations);
|
||||||
{
|
std::string gxx = "g++.exe";
|
||||||
gcc = tgcc;
|
if(tgxx.size())
|
||||||
gxx = tgxx;
|
{
|
||||||
break;
|
gxx = tgxx;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.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::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||||
std::vector<std::string> locations;
|
std::vector<std::string> locations;
|
||||||
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
||||||
locations.push_back("c:/mingw/bin");
|
|
||||||
locations.push_back("/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 gcc = "gcc.exe";
|
||||||
std::string gxx = "g++.exe";
|
if(tgcc.size())
|
||||||
std::string slash = "/";
|
|
||||||
for(std::vector<std::string>::iterator i = locations.begin();
|
|
||||||
i != locations.end(); ++i)
|
|
||||||
{
|
{
|
||||||
std::string tgcc = *i + slash + gcc;
|
gcc = tgcc;
|
||||||
std::string tgxx = *i + slash + gxx;
|
}
|
||||||
if(cmSystemTools::FileExists(tgcc.c_str()))
|
std::string tgxx = cmSystemTools::FindProgram("g++", locations);
|
||||||
{
|
std::string gxx = "g++.exe";
|
||||||
gcc = tgcc;
|
if(tgxx.size())
|
||||||
gxx = tgxx;
|
{
|
||||||
break;
|
gxx = tgxx;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
|
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
|
||||||
|
|
Loading…
Reference in New Issue