diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2005-12-22 21:42:36 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2005-12-22 21:42:36 (GMT) |
commit | f6588b7919a0da4e0d5bb89b7f527e3fe2687bc3 (patch) | |
tree | 4e64e8bb66e869ac393a25d758dda54d55838615 /Source/cmGlobalMSYSMakefileGenerator.cxx | |
parent | 001bbb0d99aa8a02c5d211f5e55570ecc17e1fb0 (diff) | |
download | CMake-f6588b7919a0da4e0d5bb89b7f527e3fe2687bc3.zip CMake-f6588b7919a0da4e0d5bb89b7f527e3fe2687bc3.tar.gz CMake-f6588b7919a0da4e0d5bb89b7f527e3fe2687bc3.tar.bz2 |
ENH: fix borland make clean targets before build, add new generators for msys and mingw
Diffstat (limited to 'Source/cmGlobalMSYSMakefileGenerator.cxx')
-rw-r--r-- | Source/cmGlobalMSYSMakefileGenerator.cxx | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx new file mode 100644 index 0000000..5c106d6 --- /dev/null +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -0,0 +1,82 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmGlobalMSYSMakefileGenerator.h" +#include "cmLocalUnixMakefileGenerator3.h" +#include "cmMakefile.h" +#include "cmake.h" + +cmGlobalMSYSMakefileGenerator::cmGlobalMSYSMakefileGenerator() +{ + m_FindMakeProgramFile = "CMakeMSYSFindMake.cmake"; + m_ForceUnixPaths = true; +} + +void cmGlobalMSYSMakefileGenerator::EnableLanguage(std::vector<std::string>const& l, + cmMakefile *mf) +{ + this->FindMakeProgram(mf); + 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:/msys/1.0/bin"); + std::string gcc = "gcc.exe"; + std::string gxx = "g++.exe"; + std::string slash = "/"; + for(std::vector<std::string>::iterator i = locations.begin(); + i != locations.end(); ++i) + { + std::string tgcc = *i + slash + gcc; + std::string tgxx = *i + slash + gxx; + if(cmSystemTools::FileExists(tgcc.c_str())) + { + gcc = tgcc; + gxx = tgxx; + break; + } + } + mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str()); + mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str()); + this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf); + if(!mf->IsSet("CMAKE_AR") && !m_CMakeInstance->GetIsInTryCompile()) + { + cmSystemTools::Error("CMAKE_AR was not found, please set to archive program. ", + mf->GetDefinition("CMAKE_AR")); + } +} + +///! Create a local generator appropriate to this Global Generator +cmLocalGenerator *cmGlobalMSYSMakefileGenerator::CreateLocalGenerator() +{ + cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + lg->SetWindowsShell(false); + lg->SetGlobalGenerator(this); + lg->SetIgnoreLibPrefix(true); + lg->SetPassMakeflags(false); + lg->SetUnixCD(true); + return lg; +} + +//---------------------------------------------------------------------------- +void cmGlobalMSYSMakefileGenerator::GetDocumentation(cmDocumentationEntry& entry) const +{ + entry.name = this->GetName(); + entry.brief = "Generates MSYS makefiles."; + entry.full = "The makefiles use /bin/sh as the shell. They require msys to be installed on the machine."; +} |