mirror of
https://github.com/reactos/CMake.git
synced 2024-12-11 13:24:58 +00:00
96afb12087
This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.
86 lines
2.9 KiB
C++
86 lines
2.9 KiB
C++
/*============================================================================
|
|
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 "cmGlobalMinGWMakefileGenerator.h"
|
|
#include "cmLocalUnixMakefileGenerator3.h"
|
|
#include "cmMakefile.h"
|
|
|
|
cmGlobalMinGWMakefileGenerator::cmGlobalMinGWMakefileGenerator()
|
|
{
|
|
this->FindMakeProgramFile = "CMakeMinGWFindMake.cmake";
|
|
this->ForceUnixPaths = true;
|
|
this->ToolSupportsColor = true;
|
|
this->UseLinkScript = true;
|
|
}
|
|
|
|
void cmGlobalMinGWMakefileGenerator
|
|
::EnableLanguage(std::vector<std::string>const& l,
|
|
cmMakefile *mf,
|
|
bool optional)
|
|
{
|
|
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("/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";
|
|
if(tgxx.size())
|
|
{
|
|
gxx = tgxx;
|
|
}
|
|
mf->AddDefinition("CMAKE_GENERATOR_CC", gcc.c_str());
|
|
mf->AddDefinition("CMAKE_GENERATOR_CXX", gxx.c_str());
|
|
this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional);
|
|
}
|
|
|
|
///! Create a local generator appropriate to this Global Generator
|
|
cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator()
|
|
{
|
|
cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
|
|
lg->SetWindowsShell(true);
|
|
lg->SetGlobalGenerator(this);
|
|
lg->SetIgnoreLibPrefix(true);
|
|
lg->SetPassMakeflags(false);
|
|
lg->SetUnixCD(true);
|
|
lg->SetMinGWMake(true);
|
|
|
|
// mingw32-make has trouble running code like
|
|
//
|
|
// @echo message with spaces
|
|
//
|
|
// If quotes are added
|
|
//
|
|
// @echo "message with spaces"
|
|
//
|
|
// it runs but the quotes are displayed. Instead just use cmake to
|
|
// echo.
|
|
lg->SetNativeEchoCommand("@$(CMAKE_COMMAND) -E echo ", false);
|
|
return lg;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void cmGlobalMinGWMakefileGenerator
|
|
::GetDocumentation(cmDocumentationEntry& entry) const
|
|
{
|
|
entry.Name = this->GetName();
|
|
entry.Brief = "Generates a make file for use with mingw32-make.";
|
|
entry.Full = "The makefiles generated use cmd.exe as the shell. "
|
|
"They do not require msys or a unix shell.";
|
|
}
|