summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Help/release/dev/mingw-compiler-PATH.rst7
-rw-r--r--Modules/CMakeDetermineCompiler.cmake7
-rw-r--r--Source/cmGlobalMSYSMakefileGenerator.cxx12
-rw-r--r--Source/cmGlobalMinGWMakefileGenerator.cxx12
4 files changed, 10 insertions, 28 deletions
diff --git a/Help/release/dev/mingw-compiler-PATH.rst b/Help/release/dev/mingw-compiler-PATH.rst
new file mode 100644
index 0000000000..7452da0e74
--- /dev/null
+++ b/Help/release/dev/mingw-compiler-PATH.rst
@@ -0,0 +1,7 @@
+mingw-compiler-PATH
+-------------------
+
+* The :generator:`MSYS Makefiles` and :generator:`MinGW Makefiles`
+ generators, when a compiler is not explicitly specified, now select
+ the first compiler (of any name) found in directories listed by the
+ ``PATH`` environment variable.
diff --git a/Modules/CMakeDetermineCompiler.cmake b/Modules/CMakeDetermineCompiler.cmake
index ec2a86515f..3156ca9044 100644
--- a/Modules/CMakeDetermineCompiler.cmake
+++ b/Modules/CMakeDetermineCompiler.cmake
@@ -53,10 +53,9 @@ macro(_cmake_find_compiler lang)
NO_DEFAULT_PATH
DOC "${lang} compiler")
endif()
- if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja")
- # On Windows command-line builds, the Makefile generators each imply
- # a preferred compiler tool. The Ninja generator does not imply a
- # compiler tool, so use the compiler that occurs first in PATH.
+ if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja|MSYS Makefiles|MinGW Makefiles")
+ # On Windows command-line builds, some generators imply a preferred compiler tool.
+ # These generators do not, so use the compiler that occurs first in PATH.
find_program(CMAKE_${lang}_COMPILER
NAMES ${CMAKE_${lang}_COMPILER_LIST}
NAMES_PER_DIR
diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx
index c8520b835c..cb631102a8 100644
--- a/Source/cmGlobalMSYSMakefileGenerator.cxx
+++ b/Source/cmGlobalMSYSMakefileGenerator.cxx
@@ -51,24 +51,12 @@ void cmGlobalMSYSMakefileGenerator::EnableLanguage(
locations.push_back(makeloc);
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.empty()) {
- gcc = tgcc;
- }
- std::string tgxx = cmSystemTools::FindProgram("g++", locations);
- std::string gxx = "g++.exe";
- if (!tgxx.empty()) {
- gxx = tgxx;
- }
std::string trc = cmSystemTools::FindProgram("windres", locations);
std::string rc = "windres.exe";
if (!trc.empty()) {
rc = trc;
}
mf->AddDefinition("MSYS", "1");
- mf->AddDefinition("CMAKE_GENERATOR_CC", gcc);
- mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx);
mf->AddDefinition("CMAKE_GENERATOR_RC", rc);
this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional);
diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx
index 54d048dedf..781912f144 100644
--- a/Source/cmGlobalMinGWMakefileGenerator.cxx
+++ b/Source/cmGlobalMinGWMakefileGenerator.cxx
@@ -29,23 +29,11 @@ void cmGlobalMinGWMakefileGenerator::EnableLanguage(
locations.push_back(cmSystemTools::GetProgramPath(makeProgram));
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.empty()) {
- gcc = tgcc;
- }
- std::string tgxx = cmSystemTools::FindProgram("g++", locations);
- std::string gxx = "g++.exe";
- if (!tgxx.empty()) {
- gxx = tgxx;
- }
std::string trc = cmSystemTools::FindProgram("windres", locations);
std::string rc = "windres.exe";
if (!trc.empty()) {
rc = trc;
}
- mf->AddDefinition("CMAKE_GENERATOR_CC", gcc);
- mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx);
mf->AddDefinition("CMAKE_GENERATOR_RC", rc);
this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional);
}