summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-02-16 02:26:47 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-02-16 02:26:47 (GMT)
commit5042581f4384cbeb19b769e8443ff4da7d322790 (patch)
tree6029afb540fb8c1cf0e2ac370dbac18586d7f369
parent5288d61ede70fbe0944b1eff22eff11ae4f10a1a (diff)
downloadCMake-5042581f4384cbeb19b769e8443ff4da7d322790.zip
CMake-5042581f4384cbeb19b769e8443ff4da7d322790.tar.gz
CMake-5042581f4384cbeb19b769e8443ff4da7d322790.tar.bz2
ENH: better algorithm for looking for make and gcc on msys and mingw
-rw-r--r--Modules/CMakeMSYSFindMake.cmake6
-rw-r--r--Modules/CMakeMinGWFindMake.cmake6
-rw-r--r--Source/cmGlobalMSYSMakefileGenerator.cxx21
-rw-r--r--Source/cmGlobalMinGWMakefileGenerator.cxx21
4 files changed, 27 insertions, 27 deletions
diff --git a/Modules/CMakeMSYSFindMake.cmake b/Modules/CMakeMSYSFindMake.cmake
index 83bd111..5a9a342 100644
--- a/Modules/CMakeMSYSFindMake.cmake
+++ b/Modules/CMakeMSYSFindMake.cmake
@@ -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)
diff --git a/Modules/CMakeMinGWFindMake.cmake b/Modules/CMakeMinGWFindMake.cmake
index 42d1624..2ad0298 100644
--- a/Modules/CMakeMinGWFindMake.cmake
+++ b/Modules/CMakeMinGWFindMake.cmake
@@ -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)
diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx
index 5c106d6..fdae0b9 100644
--- a/Source/cmGlobalMSYSMakefileGenerator.cxx
+++ b/Source/cmGlobalMSYSMakefileGenerator.cxx
@@ -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";
+ if(tgcc.size())
+ {
+ gcc = tgcc;
+ }
+ std::string tgxx = cmSystemTools::FindProgram("g++", locations);
std::string gxx = "g++.exe";
- std::string slash = "/";
- for(std::vector<std::string>::iterator i = locations.begin();
- i != locations.end(); ++i)
+ if(tgxx.size())
{
- std::string tgcc = *i + slash + gcc;
- std::string tgxx = *i + slash + gxx;
- if(cmSystemTools::FileExists(tgcc.c_str()))
- {
- gcc = tgcc;
- gxx = tgxx;
- break;
- }
+ gxx = tgxx;
}
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx
index 1472458..8af608b 100644
--- a/Source/cmGlobalMinGWMakefileGenerator.cxx
+++ b/Source/cmGlobalMinGWMakefileGenerator.cxx
@@ -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";
+ if(tgcc.size())
+ {
+ gcc = tgcc;
+ }
+ std::string tgxx = cmSystemTools::FindProgram("g++", locations);
std::string gxx = "g++.exe";
- std::string slash = "/";
- for(std::vector<std::string>::iterator i = locations.begin();
- i != locations.end(); ++i)
+ if(tgxx.size())
{
- std::string tgcc = *i + slash + gcc;
- std::string tgxx = *i + slash + gxx;
- if(cmSystemTools::FileExists(tgcc.c_str()))
- {
- gcc = tgcc;
- gxx = tgxx;
- break;
- }
+ gxx = tgxx;
}
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());