ENH: no longer used
This commit is contained in:
parent
6b466654dc
commit
3748dff70d
|
@ -1,90 +0,0 @@
|
|||
/*=========================================================================
|
||||
|
||||
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 "cmLocalUnixMakefileGenerator2.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(std::vector<std::string>const& languages,
|
||||
cmMakefile *mf)
|
||||
{
|
||||
mf->AddDefinition("CMAKE_CFG_INTDIR",".");
|
||||
this->cmGlobalGenerator::EnableLanguage(languages, mf);
|
||||
std::string path;
|
||||
for(std::vector<std::string>::const_iterator l = languages.begin();
|
||||
l != languages.end(); ++l)
|
||||
{
|
||||
const char* lang = l->c_str();
|
||||
std::string langComp = "CMAKE_";
|
||||
langComp += lang;
|
||||
langComp += "_COMPILER";
|
||||
|
||||
if(!mf->GetDefinition(langComp.c_str()))
|
||||
{
|
||||
cmSystemTools::Error(langComp.c_str(), " not set, after EnableLanguage");
|
||||
continue;
|
||||
}
|
||||
const char* cc = mf->GetRequiredDefinition(langComp.c_str());
|
||||
path = cmSystemTools::FindProgram(cc);
|
||||
if(path.size() == 0)
|
||||
{
|
||||
std::string message = "your ";
|
||||
message += lang;
|
||||
message += " 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///! Create a local generator appropriate to this Global Generator
|
||||
cmLocalGenerator *cmGlobalUnixMakefileGenerator::CreateLocalGenerator()
|
||||
{
|
||||
cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator2;
|
||||
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.";
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
/*=========================================================================
|
||||
|
||||
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.
|
||||
|
||||
=========================================================================*/
|
||||
#ifndef cmGlobalUnixMakefileGenerator_h
|
||||
#define cmGlobalUnixMakefileGenerator_h
|
||||
|
||||
#include "cmGlobalGenerator.h"
|
||||
|
||||
/** \class cmGlobalUnixMakefileGenerator
|
||||
* \brief Write a Unix makefiles.
|
||||
*
|
||||
* cmGlobalUnixMakefileGenerator manages UNIX build process for a tree
|
||||
*/
|
||||
class cmGlobalUnixMakefileGenerator : public cmGlobalGenerator
|
||||
{
|
||||
public:
|
||||
cmGlobalUnixMakefileGenerator();
|
||||
static cmGlobalGenerator* New() { return new cmGlobalUnixMakefileGenerator; }
|
||||
|
||||
///! Get the name for the generator.
|
||||
virtual const char* GetName() const {
|
||||
return cmGlobalUnixMakefileGenerator::GetActualName();}
|
||||
static const char* GetActualName() {return "Unix Makefiles 2";}
|
||||
|
||||
/** Get the documentation entry for this generator. */
|
||||
virtual void GetDocumentation(cmDocumentationEntry& entry) const;
|
||||
|
||||
///! Create a local generator appropriate to this Global Generator
|
||||
virtual cmLocalGenerator *CreateLocalGenerator();
|
||||
|
||||
/**
|
||||
* Try to determine system infomation such as shared library
|
||||
* extension, pthreads, byte order etc.
|
||||
*/
|
||||
virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -1,290 +0,0 @@
|
|||
/*=========================================================================
|
||||
|
||||
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.
|
||||
|
||||
=========================================================================*/
|
||||
#ifndef cmLocalUnixMakefileGenerator2_h
|
||||
#define cmLocalUnixMakefileGenerator2_h
|
||||
|
||||
#include "cmLocalGenerator.h"
|
||||
|
||||
#if defined(__sgi) && !defined(__GNUC__)
|
||||
# pragma set woff 1375 /* base class destructor not virtual */
|
||||
#endif
|
||||
|
||||
class cmCustomCommand;
|
||||
class cmDependInformation;
|
||||
class cmDepends;
|
||||
class cmMakeDepend;
|
||||
class cmTarget;
|
||||
class cmSourceFile;
|
||||
|
||||
/** \class cmLocalUnixMakefileGenerator2
|
||||
* \brief Write a LocalUnix makefiles.
|
||||
*
|
||||
* cmLocalUnixMakefileGenerator2 produces a LocalUnix makefile from its
|
||||
* member m_Makefile.
|
||||
*/
|
||||
class cmLocalUnixMakefileGenerator2 : public cmLocalGenerator
|
||||
{
|
||||
public:
|
||||
///! Set cache only and recurse to false by default.
|
||||
cmLocalUnixMakefileGenerator2();
|
||||
|
||||
virtual ~cmLocalUnixMakefileGenerator2();
|
||||
|
||||
/** Set the command used when there are no dependencies or rules for
|
||||
a target. This is used to avoid errors on some make
|
||||
implementations. */
|
||||
void SetEmptyCommand(const char* cmd);
|
||||
|
||||
/** Set whether the echo command needs its argument quoted. */
|
||||
void SetEchoNeedsQuote(bool b) { m_EchoNeedsQuote = b; }
|
||||
|
||||
/**
|
||||
* Set to true if the shell being used is the windows shell.
|
||||
* This controls if statements in the makefile and the SHELL variable.
|
||||
* The default is false.
|
||||
*/
|
||||
void SetWindowsShell(bool v) {m_WindowsShell = v;}
|
||||
|
||||
/**
|
||||
* Set the string used to include one makefile into another default
|
||||
* is include.
|
||||
*/
|
||||
void SetIncludeDirective(const char* s) { m_IncludeDirective = s; }
|
||||
|
||||
/**
|
||||
* Set the flag used to keep the make program silent.
|
||||
*/
|
||||
void SetMakeSilentFlag(const char* s) { m_MakeSilentFlag = s; }
|
||||
|
||||
/**
|
||||
* Set max makefile variable size, default is 0 which means unlimited.
|
||||
*/
|
||||
void SetMakefileVariableSize(int s) { m_MakefileVariableSize = s; }
|
||||
|
||||
/**
|
||||
* If ignore lib prefix is true, then do not strip lib from the name
|
||||
* of a library.
|
||||
*/
|
||||
void SetIgnoreLibPrefix(bool s) { m_IgnoreLibPrefix = s; }
|
||||
|
||||
/**
|
||||
* If true, then explicitly pass MAKEFLAGS on the make all target for makes
|
||||
* that do not use environment variables.
|
||||
*
|
||||
*/
|
||||
void SetPassMakeflags(bool s){m_PassMakeflags = s;}
|
||||
|
||||
/**
|
||||
* Generate the makefile for this directory.
|
||||
*/
|
||||
virtual void Generate();
|
||||
|
||||
/** Called from command-line hook to scan dependencies. */
|
||||
virtual bool ScanDependencies(std::vector<std::string> const& args);
|
||||
|
||||
/** Called from command-line hook to check dependencies. */
|
||||
virtual void CheckDependencies(cmMakefile* mf, bool verbose);
|
||||
|
||||
protected:
|
||||
|
||||
void GenerateMakefile();
|
||||
void GenerateCMakefile();
|
||||
void GenerateDirectoryInformationFile();
|
||||
void GenerateTargetRuleFile(const cmTarget& target);
|
||||
void GenerateObjectRuleFile(const cmTarget& target,
|
||||
const cmSourceFile& source,
|
||||
std::vector<std::string>& objects,
|
||||
std::vector<std::string>& provides_requires);
|
||||
void GenerateCustomRuleFile(const cmCustomCommand& cc);
|
||||
void GenerateUtilityRuleFile(const cmTarget& target);
|
||||
bool GenerateDependsMakeFile(const std::string& lang,
|
||||
const char* objFile,
|
||||
std::string& depMakeFile,
|
||||
std::string& depMarkFile);
|
||||
void WriteMakeRule(std::ostream& os,
|
||||
const char* comment,
|
||||
const char* target,
|
||||
const std::vector<std::string>& depends,
|
||||
const std::vector<std::string>& commands);
|
||||
void WriteDivider(std::ostream& os);
|
||||
void WriteDisclaimer(std::ostream& os);
|
||||
void WriteMakeVariables(std::ostream& makefileStream);
|
||||
void WriteSpecialTargetsTop(std::ostream& makefileStream);
|
||||
void WriteSpecialTargetsBottom(std::ostream& makefileStream);
|
||||
void WriteRuleFileIncludes(std::ostream& makefileStream);
|
||||
void WriteAllRules(std::ostream& makefileStream);
|
||||
void WritePassRules(std::ostream& makefileStream, const char* pass);
|
||||
void WriteDriverRules(std::ostream& makefileStream, const char* pass,
|
||||
const char* local1, const char* local2=0);
|
||||
void WriteSubdirRules(std::ostream& makefileStream, const char* pass);
|
||||
void WriteSubdirRule(std::ostream& makefileStream, const char* pass,
|
||||
const char* subdir, std::string& last);
|
||||
void WriteSubdirDriverRule(std::ostream& makefileStream, const char* pass,
|
||||
const char* order, const std::string& last);
|
||||
void WriteLocalRule(std::ostream& ruleFileStream, const char* pass,
|
||||
const char* dependency);
|
||||
void WriteConvenienceRules(std::ostream& ruleFileStream,
|
||||
const cmTarget& target,
|
||||
const char* targetOutPath);
|
||||
void WriteConvenienceRule(std::ostream& ruleFileStream,
|
||||
const char* realTarget,
|
||||
const char* helpTarget);
|
||||
void WriteExecutableRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteStaticLibraryRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteSharedLibraryRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteModuleLibraryRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteLibraryRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
const char* linkRuleVar,
|
||||
const char* extraLinkFlags,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteObjectsVariable(std::ostream& ruleFileStream,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects,
|
||||
const std::vector<std::string>& external_objects,
|
||||
std::string& variableName,
|
||||
std::string& variableNameExternal);
|
||||
void WriteTargetDependsRule(std::ostream& ruleFileStream,
|
||||
const char* ruleFileName,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& objects);
|
||||
void WriteTargetCleanRule(std::ostream& ruleFileStream,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& files);
|
||||
void WriteTargetRequiresRule(std::ostream& ruleFileStream,
|
||||
const cmTarget& target,
|
||||
const std::vector<std::string>& provides_requires);
|
||||
void WriteLocalCleanRule(std::ostream& makefileStream);
|
||||
void WriteCMakeArgument(std::ostream& os, const char* s);
|
||||
std::string GetTargetDirectory(const cmTarget& target);
|
||||
std::string GetSubdirTargetName(const char* pass, const char* subdir);
|
||||
std::string GetObjectFileName(const cmTarget& target,
|
||||
const cmSourceFile& source);
|
||||
const char* GetSourceFileLanguage(const cmSourceFile& source);
|
||||
std::string ConvertToFullPath(const std::string& localPath);
|
||||
std::string ConvertToRelativeOutputPath(const char* p);
|
||||
std::string ConvertToQuotedOutputPath(const char* p);
|
||||
void ConfigureOutputPaths();
|
||||
void FormatOutputPath(std::string& path, const char* name);
|
||||
|
||||
void AppendTargetDepends(std::vector<std::string>& depends,
|
||||
const cmTarget& target);
|
||||
void AppendAnyDepend(std::vector<std::string>& depends, const char* name,
|
||||
bool assume_unknown_is_file=false);
|
||||
void AppendRuleDepend(std::vector<std::string>& depends,
|
||||
const char* ruleFileName);
|
||||
void AppendCustomDepends(std::vector<std::string>& depends,
|
||||
const std::vector<cmCustomCommand>& ccs);
|
||||
void AppendCustomDepend(std::vector<std::string>& depends,
|
||||
const cmCustomCommand& cc);
|
||||
void AppendCustomCommands(std::vector<std::string>& commands,
|
||||
const std::vector<cmCustomCommand>& ccs);
|
||||
void AppendCustomCommand(std::vector<std::string>& commands,
|
||||
const cmCustomCommand& cc);
|
||||
void AppendCleanCommand(std::vector<std::string>& commands,
|
||||
const std::vector<std::string>& files);
|
||||
void AppendEcho(std::vector<std::string>& commands,
|
||||
const char* text);
|
||||
|
||||
//==========================================================================
|
||||
bool SamePath(const char* path1, const char* path2);
|
||||
std::string ConvertToMakeTarget(const char* tgt);
|
||||
std::string& CreateSafeUniqueObjectFileName(const char* sin);
|
||||
std::string CreateMakeVariable(const char* sin, const char* s2in);
|
||||
//==========================================================================
|
||||
|
||||
std::string GetRecursiveMakeCall(const char* tgt);
|
||||
void WriteJumpAndBuildRules(std::ostream& makefileStream);
|
||||
|
||||
static cmDepends* GetDependsChecker(const std::string& lang,
|
||||
const char* dir,
|
||||
const char* objFile,
|
||||
bool verbose);
|
||||
|
||||
private:
|
||||
// Map from target name to build directory containing it for
|
||||
// jump-and-build targets.
|
||||
struct RemoteTarget
|
||||
{
|
||||
std::string m_BuildDirectory;
|
||||
std::string m_FilePath;
|
||||
};
|
||||
std::map<cmStdString, RemoteTarget> m_JumpAndBuild;
|
||||
|
||||
// List the files for which to check dependency integrity. Each
|
||||
// language has its own list because integrity may be checked
|
||||
// differently.
|
||||
struct IntegrityCheckSet: public std::set<cmStdString> {};
|
||||
std::map<cmStdString, IntegrityCheckSet> m_CheckDependFiles;
|
||||
|
||||
// Command used when a rule has no dependencies or commands.
|
||||
std::vector<std::string> m_EmptyCommands;
|
||||
|
||||
//==========================================================================
|
||||
// Configuration settings.
|
||||
int m_MakefileVariableSize;
|
||||
std::map<cmStdString, cmStdString> m_MakeVariableMap;
|
||||
std::map<cmStdString, cmStdString> m_ShortMakeVariableMap;
|
||||
std::map<cmStdString, cmStdString> m_UniqueObjectNamesMap;
|
||||
std::string m_IncludeDirective;
|
||||
std::string m_MakeSilentFlag;
|
||||
std::string m_ExecutableOutputPath;
|
||||
std::string m_LibraryOutputPath;
|
||||
bool m_PassMakeflags;
|
||||
//==========================================================================
|
||||
|
||||
// Flag for whether echo command needs quotes.
|
||||
bool m_EchoNeedsQuote;
|
||||
|
||||
// List of make rule files that need to be included by the makefile.
|
||||
std::vector<std::string> m_IncludeRuleFiles;
|
||||
|
||||
// Set of custom rule files that have been generated.
|
||||
std::set<cmStdString> m_CustomRuleFiles;
|
||||
|
||||
// Set of object file names that will be built in this directory.
|
||||
std::set<cmStdString> m_ObjectFiles;
|
||||
};
|
||||
|
||||
#if defined(__sgi) && !defined(__GNUC__)
|
||||
# pragma reset woff 1375 /* base class destructor not virtual */
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue