cmLocalGenerator: Add IsRootMakefile API

This commit is contained in:
Stephen Kelly 2015-10-23 01:17:32 +02:00
parent 4c6374bcc5
commit 00b8c0a8d4
5 changed files with 14 additions and 7 deletions

View File

@ -523,7 +523,7 @@ cmGlobalUnixMakefileGenerator3
cmLocalUnixMakefileGenerator3* lg)
{
// Only subdirectories need these rules.
if(lg->GetMakefile()->IsRootMakefile())
if(lg->IsRootMakefile())
{
return;
}
@ -1084,7 +1084,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
static_cast<cmLocalUnixMakefileGenerator3 *>(this->LocalGenerators[i]);
// for the passed in makefile or if this is the top Makefile wripte out
// the targets
if (lg2 == lg || lg->GetMakefile()->IsRootMakefile())
if (lg2 == lg || lg->IsRootMakefile())
{
// for each target Generate the rule files for each target.
std::vector<cmGeneratorTarget*> targets = lg2->GetGeneratorTargets();

View File

@ -490,6 +490,11 @@ void cmLocalGenerator::ComputeTargetManifest()
}
}
bool cmLocalGenerator::IsRootMakefile() const
{
return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid();
}
cmState* cmLocalGenerator::GetState() const
{
return this->GlobalGenerator->GetCMakeInstance()->GetState();

View File

@ -67,6 +67,8 @@ public:
*/
void ComputeTargetManifest();
bool IsRootMakefile() const;
///! Get the makefile for this generator
cmMakefile *GetMakefile() {
return this->Makefile; }

View File

@ -56,7 +56,7 @@ void cmLocalNinjaGenerator::Generate()
#endif
// We do that only once for the top CMakeLists.txt file.
if(this->Makefile->IsRootMakefile())
if(this->IsRootMakefile())
{
this->WriteBuildFileTop();
@ -277,7 +277,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os)
<< "# Write statements declared in CMakeLists.txt:" << std::endl
<< "# "
<< this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl;
if(this->Makefile->IsRootMakefile())
if(this->IsRootMakefile())
os << "# Which is the root file." << std::endl;
cmGlobalNinjaGenerator::WriteDivider(os);
os << std::endl;

View File

@ -254,7 +254,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
return;
}
// always write the top makefile
if (!this->GetMakefile()->IsRootMakefile())
if (!this->IsRootMakefile())
{
ruleFileStream.SetCopyIfDifferent(true);
}
@ -265,7 +265,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
// only write local targets unless at the top Keep track of targets already
// listed.
std::set<std::string> emittedTargets;
if (!this->GetMakefile()->IsRootMakefile())
if (!this->IsRootMakefile())
{
// write our targets, and while doing it collect up the object
// file rules
@ -880,7 +880,7 @@ void cmLocalUnixMakefileGenerator3
std::vector<std::string> no_depends;
std::vector<std::string> commands;
commands.push_back(runRule);
if(!this->GetMakefile()->IsRootMakefile())
if(!this->IsRootMakefile())
{
this->CreateCDCommand(commands,
this->GetBinaryDirectory(),