From 5042581f4384cbeb19b769e8443ff4da7d322790 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 15 Feb 2006 21:26:47 -0500 Subject: ENH: better algorithm for looking for make and gcc on msys and mingw --- Modules/CMakeMSYSFindMake.cmake | 6 +++++- Modules/CMakeMinGWFindMake.cmake | 6 ++++-- Source/cmGlobalMSYSMakefileGenerator.cxx | 21 +++++++++------------ Source/cmGlobalMinGWMakefileGenerator.cxx | 21 +++++++++------------ 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::vectorconst std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::vector 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::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::vectorcons std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::vector 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::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()); -- cgit v0.12