diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2009-11-05 20:00:15 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2009-11-05 20:00:15 (GMT) |
commit | dd09d880656c71421acfd73776eac92c3f3ef77a (patch) | |
tree | 3465702ff785e584151c8f760d64b4aabe65a2a2 /Source/cmGlobalJOMMakefileGenerator.cxx | |
parent | a01badcc7a8d4813d2eb84923c4e03447745657e (diff) | |
download | CMake-dd09d880656c71421acfd73776eac92c3f3ef77a.zip CMake-dd09d880656c71421acfd73776eac92c3f3ef77a.tar.gz CMake-dd09d880656c71421acfd73776eac92c3f3ef77a.tar.bz2 |
Add JOM support and clean up some of the tar -E stuff
Diffstat (limited to 'Source/cmGlobalJOMMakefileGenerator.cxx')
-rw-r--r-- | Source/cmGlobalJOMMakefileGenerator.cxx | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Source/cmGlobalJOMMakefileGenerator.cxx b/Source/cmGlobalJOMMakefileGenerator.cxx new file mode 100644 index 0000000..411e28b --- /dev/null +++ b/Source/cmGlobalJOMMakefileGenerator.cxx @@ -0,0 +1,69 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmGlobalJOMMakefileGenerator.h" +#include "cmLocalUnixMakefileGenerator3.h" +#include "cmMakefile.h" + +cmGlobalJOMMakefileGenerator::cmGlobalJOMMakefileGenerator() +{ + this->FindMakeProgramFile = "CMakeJOMFindMake.cmake"; + this->ForceUnixPaths = false; + this->ToolSupportsColor = true; + this->UseLinkScript = false; +} + +void cmGlobalJOMMakefileGenerator +::EnableLanguage(std::vector<std::string>const& l, + cmMakefile *mf, + bool optional) +{ + // pick a default + mf->AddDefinition("CMAKE_GENERATOR_CC", "cl"); + mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl"); + if(!(cmSystemTools::GetEnv("INCLUDE") && + cmSystemTools::GetEnv("LIB")) + ) + { + std::string message = "To use the JOM generator, cmake must be run " + "from a shell that can use the compiler cl from the command line. " + "This environment does not contain INCLUDE, LIB, or LIBPATH, and " + "these must be set for the cl compiler to work. "; + mf->IssueMessage(cmake::WARNING, + message); + } + + this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); +} + +///! Create a local generator appropriate to this Global Generator +cmLocalGenerator *cmGlobalJOMMakefileGenerator::CreateLocalGenerator() +{ + cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + lg->SetDefineWindowsNULL(true); + lg->SetWindowsShell(true); + lg->SetMakeSilentFlag("/nologo"); + lg->SetGlobalGenerator(this); + lg->SetIgnoreLibPrefix(true); + lg->SetPassMakeflags(true); + lg->SetNMake(true); + lg->SetUnixCD(false); + return lg; +} + +//---------------------------------------------------------------------------- +void cmGlobalJOMMakefileGenerator +::GetDocumentation(cmDocumentationEntry& entry) const +{ + entry.Name = this->GetName(); + entry.Brief = "Generates JOM makefiles."; + entry.Full = ""; +} |