2002-08-31 00:01:48 +04:00
|
|
|
/*=========================================================================
|
|
|
|
|
2002-10-24 02:03:27 +04:00
|
|
|
Program: CMake - Cross-Platform Makefile Generator
|
2002-08-31 00:01:48 +04:00
|
|
|
Module: $RCSfile$
|
|
|
|
Language: C++
|
|
|
|
Date: $Date$
|
|
|
|
Version: $Revision$
|
|
|
|
|
2002-10-24 02:03:27 +04:00
|
|
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
|
|
|
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
2002-08-31 00:01:48 +04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
=========================================================================*/
|
2002-09-10 23:40:41 +04:00
|
|
|
|
2002-08-31 00:01:48 +04:00
|
|
|
#include "cmGlobalUnixMakefileGenerator.h"
|
2005-03-01 20:26:25 +03:00
|
|
|
#include "cmLocalUnixMakefileGenerator2.h"
|
2002-08-31 00:01:48 +04:00
|
|
|
#include "cmMakefile.h"
|
2002-09-06 21:06:23 +04:00
|
|
|
#include "cmake.h"
|
2002-08-31 00:01:48 +04:00
|
|
|
|
2002-12-05 21:44:11 +03:00
|
|
|
cmGlobalUnixMakefileGenerator::cmGlobalUnixMakefileGenerator()
|
|
|
|
{
|
2003-08-22 00:22:23 +04:00
|
|
|
// This type of makefile always requires unix style paths
|
|
|
|
m_ForceUnixPaths = true;
|
2002-12-05 21:44:11 +03:00
|
|
|
m_FindMakeProgramFile = "CMakeUnixFindMake.cmake";
|
|
|
|
}
|
|
|
|
|
2004-08-27 16:41:07 +04:00
|
|
|
void cmGlobalUnixMakefileGenerator::EnableLanguage(std::vector<std::string>const& languages,
|
2002-08-31 00:01:48 +04:00
|
|
|
cmMakefile *mf)
|
|
|
|
{
|
2002-12-06 23:35:22 +03:00
|
|
|
mf->AddDefinition("CMAKE_CFG_INTDIR",".");
|
2004-08-27 16:41:07 +04:00
|
|
|
this->cmGlobalGenerator::EnableLanguage(languages, mf);
|
2004-08-26 22:55:55 +04:00
|
|
|
std::string path;
|
2004-08-27 16:41:07 +04:00
|
|
|
for(std::vector<std::string>::const_iterator l = languages.begin();
|
|
|
|
l != languages.end(); ++l)
|
2002-12-20 19:20:49 +03:00
|
|
|
{
|
2004-08-27 16:41:07 +04:00
|
|
|
const char* lang = l->c_str();
|
|
|
|
std::string langComp = "CMAKE_";
|
|
|
|
langComp += lang;
|
|
|
|
langComp += "_COMPILER";
|
|
|
|
|
|
|
|
if(!mf->GetDefinition(langComp.c_str()))
|
2002-12-20 19:20:49 +03:00
|
|
|
{
|
2004-08-27 16:41:07 +04:00
|
|
|
cmSystemTools::Error(langComp.c_str(), " not set, after EnableLanguage");
|
|
|
|
continue;
|
2002-12-20 19:20:49 +03:00
|
|
|
}
|
2004-08-27 16:41:07 +04:00
|
|
|
const char* cc = mf->GetRequiredDefinition(langComp.c_str());
|
2004-08-26 22:55:55 +04:00
|
|
|
path = cmSystemTools::FindProgram(cc);
|
2002-12-20 19:20:49 +03:00
|
|
|
if(path.size() == 0)
|
|
|
|
{
|
2004-08-27 16:41:07 +04:00
|
|
|
std::string message = "your ";
|
|
|
|
message += lang;
|
|
|
|
message += " compiler: ";
|
2003-01-21 20:50:48 +03:00
|
|
|
if(cc)
|
|
|
|
{
|
|
|
|
message += cc;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
message += "(NULL)";
|
|
|
|
}
|
2004-08-26 22:55:55 +04:00
|
|
|
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.";
|
2004-08-27 16:41:07 +04:00
|
|
|
cmSystemTools::Error(message.c_str());
|
2002-12-20 19:20:49 +03:00
|
|
|
}
|
|
|
|
}
|
2002-08-31 00:01:48 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
///! Create a local generator appropriate to this Global Generator
|
|
|
|
cmLocalGenerator *cmGlobalUnixMakefileGenerator::CreateLocalGenerator()
|
|
|
|
{
|
2005-03-01 20:26:25 +03:00
|
|
|
cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator2;
|
2002-08-31 00:01:48 +04:00
|
|
|
lg->SetGlobalGenerator(this);
|
|
|
|
return lg;
|
|
|
|
}
|
|
|
|
|
2003-07-08 05:52:10 +04:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
void cmGlobalUnixMakefileGenerator::GetDocumentation(cmDocumentationEntry& entry) const
|
|
|
|
{
|
|
|
|
entry.name = this->GetName();
|
|
|
|
entry.brief = "Generates standard UNIX makefiles.";
|
2003-07-11 07:14:11 +04:00
|
|
|
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.";
|
2003-07-08 05:52:10 +04:00
|
|
|
}
|