109 lines
3.4 KiB
C++
109 lines
3.4 KiB
C++
/*=========================================================================
|
|
|
|
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 "cmGlobalUnixMakefileGenerator.h"
|
|
#include "cmLocalUnixMakefileGenerator.h"
|
|
#include "cmMakefile.h"
|
|
#include "cmake.h"
|
|
|
|
cmGlobalUnixMakefileGenerator::cmGlobalUnixMakefileGenerator()
|
|
{
|
|
// This type of makefile always requires unix style paths
|
|
m_ForceUnixPaths = true;
|
|
m_FindMakeProgramFile = "CMakeUnixFindMake.cmake";
|
|
}
|
|
|
|
void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang,
|
|
cmMakefile *mf)
|
|
{
|
|
mf->AddDefinition("CMAKE_CFG_INTDIR",".");
|
|
this->cmGlobalGenerator::EnableLanguage(lang, mf);
|
|
if(!lang)
|
|
{
|
|
lang = "CXX";
|
|
}
|
|
if(lang[0] == 'C')
|
|
{
|
|
if(!mf->GetDefinition("CMAKE_C_COMPILER"))
|
|
{
|
|
cmSystemTools::Error("CMAKE_C_COMPILER not set, after EnableLanguage");
|
|
return;
|
|
}
|
|
const char* cc = mf->GetDefinition("CMAKE_C_COMPILER");
|
|
std::string path = cmSystemTools::FindProgram(cc);
|
|
if(path.size() == 0)
|
|
{
|
|
std::string message = "your C compiler: ";
|
|
if(cc)
|
|
{
|
|
message += cc;
|
|
}
|
|
else
|
|
{
|
|
message += "(NULL)";
|
|
}
|
|
message += " was not found in your path. "
|
|
"For CMake to correctly use try compile commands, the compiler must "
|
|
"be in your path. Please add the compiler to your PATH environment,"
|
|
" and re-run CMake.";
|
|
cmSystemTools::Error(message.c_str());
|
|
}
|
|
if(strcmp(lang, "CXX") == 0)
|
|
{
|
|
const char* cxx = mf->GetDefinition("CMAKE_CXX_COMPILER");
|
|
path = cmSystemTools::FindProgram(cxx);
|
|
if(path.size() == 0)
|
|
{
|
|
std::string message = "your C++ compiler: ";
|
|
if(cxx)
|
|
{
|
|
message += cxx;
|
|
}
|
|
else
|
|
{
|
|
message += "(NULL)";
|
|
}
|
|
|
|
message += " was not found in your path. "
|
|
"For CMake to correctly use try compile commands, the compiler must "
|
|
"be in your path. Please add the compiler to your PATH environment,"
|
|
" and re-run CMake.";
|
|
cmSystemTools::Error(message.c_str());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
///! Create a local generator appropriate to this Global Generator
|
|
cmLocalGenerator *cmGlobalUnixMakefileGenerator::CreateLocalGenerator()
|
|
{
|
|
cmLocalGenerator *lg = new cmLocalUnixMakefileGenerator;
|
|
lg->SetGlobalGenerator(this);
|
|
return lg;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void cmGlobalUnixMakefileGenerator::GetDocumentation(cmDocumentationEntry& entry) const
|
|
{
|
|
entry.name = this->GetName();
|
|
entry.brief = "Generates standard UNIX makefiles.";
|
|
entry.full =
|
|
"A hierarchy of UNIX makefiles is generated into the build tree. Any "
|
|
"standard UNIX-style make program can build the project through the "
|
|
"default make target. A \"make install\" target is also provided.";
|
|
}
|