diff options
author | Brad King <brad.king@kitware.com> | 2015-05-07 15:43:02 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-05-07 15:43:02 (GMT) |
commit | 957c2aac7fb4833b333cf3362cb8c6918a8e8a82 (patch) | |
tree | 489da733983181351252853d58a32546898a94c6 /Source/cmGlobalMinGWMakefileGenerator.cxx | |
parent | b3ae0609db88d8f82f7fb4f18ddb73f3456a67d2 (diff) | |
download | CMake-957c2aac7fb4833b333cf3362cb8c6918a8e8a82.zip CMake-957c2aac7fb4833b333cf3362cb8c6918a8e8a82.tar.gz CMake-957c2aac7fb4833b333cf3362cb8c6918a8e8a82.tar.bz2 |
RC: Simplify selection of resource compiler based on C/C++ toolchain
Revert the refactoring by commit v2.8.11~105^2~1 (Ninja: use MinGW
generator code in EnableLanguage, 2013-03-09) and move the MinGW-
specific logic back to the "MinGW Makefiles" generator. Instead teach
the platform information modules for GNU and MSVC on Windows to set the
preferred RC compiler just before enabling the RC language. This way
we choose the RC compiler based on the C/C++ toolchain that is actually
enabled.
Diffstat (limited to 'Source/cmGlobalMinGWMakefileGenerator.cxx')
-rw-r--r-- | Source/cmGlobalMinGWMakefileGenerator.cxx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index c9389aa..b128870 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -26,7 +26,33 @@ void cmGlobalMinGWMakefileGenerator cmMakefile *mf, bool optional) { - this->EnableMinGWLanguage(mf); + this->FindMakeProgram(mf); + std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + std::vector<std::string> locations; + 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.c_str()); + mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str()); + mf->AddDefinition("CMAKE_GENERATOR_RC", rc.c_str()); this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); } |