Merge topic 'rm-cmLocalGenerator-Children'

867b5be8 cmLocalGenerator: Remove unused Children member.
6c832219 cmLocalGenerator: Implement child traversal in terms of cmState.
3fcf3837 Makefiles: Remove valueless cast.
223f4a66 cmLocalGenerator: Simplify condition.
ae026f54 cmState: Store Children states in parent state.
This commit is contained in:
Brad King 2015-08-27 10:04:07 -04:00 committed by CMake Topic Stage
commit 6904b6efdc
5 changed files with 34 additions and 32 deletions

View File

@ -495,12 +495,12 @@ cmGlobalUnixMakefileGenerator3
// The directory-level rule should depend on the directory-level // The directory-level rule should depend on the directory-level
// rules of the subdirectories. // rules of the subdirectories.
for(std::vector<cmLocalGenerator*>::iterator sdi = std::vector<cmState::Snapshot> children
lg->GetChildren().begin(); sdi != lg->GetChildren().end(); ++sdi) = lg->GetMakefile()->GetStateSnapshot().GetChildren();
for(std::vector<cmState::Snapshot>::const_iterator
ci = children.begin(); ci != children.end(); ++ci)
{ {
cmLocalUnixMakefileGenerator3* slg = std::string subdir = ci->GetDirectory().GetCurrentBinary();
static_cast<cmLocalUnixMakefileGenerator3*>(*sdi);
std::string subdir = slg->GetMakefile()->GetCurrentBinaryDirectory();
subdir += "/"; subdir += "/";
subdir += pass; subdir += pass;
depends.push_back(subdir); depends.push_back(subdir);

View File

@ -50,10 +50,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg,
assert(snapshot.IsValid()); assert(snapshot.IsValid());
this->GlobalGenerator = gg; this->GlobalGenerator = gg;
this->Parent = parent; this->Parent = parent;
if (parent)
{
parent->AddChild(this);
}
this->Makefile = new cmMakefile(this); this->Makefile = new cmMakefile(this);
@ -199,18 +195,16 @@ void cmLocalGenerator::GenerateTestFiles()
(*gi)->Compute(this); (*gi)->Compute(this);
(*gi)->Generate(fout, config, configurationTypes); (*gi)->Generate(fout, config, configurationTypes);
} }
if (!this->Children.empty()) size_t i;
std::vector<cmState::Snapshot> children
= this->Makefile->GetStateSnapshot().GetChildren();
for(i = 0; i < children.size(); ++i)
{ {
size_t i; // TODO: Use add_subdirectory instead?
for(i = 0; i < this->Children.size(); ++i) fout << "subdirs(";
{ std::string outP = children[i].GetDirectory().GetCurrentBinary();
// TODO: Use add_subdirectory instead? fout << this->Convert(outP,START_OUTPUT);
fout << "subdirs("; fout << ")" << std::endl;
std::string outP =
this->Children[i]->GetMakefile()->GetCurrentBinaryDirectory();
fout << this->Convert(outP,START_OUTPUT);
fout << ")" << std::endl;
}
} }
} }
@ -416,16 +410,18 @@ void cmLocalGenerator::GenerateInstallRules()
this->GenerateTargetInstallRules(fout, config, configurationTypes); this->GenerateTargetInstallRules(fout, config, configurationTypes);
// Include install scripts from subdirectories. // Include install scripts from subdirectories.
if(!this->Children.empty()) std::vector<cmState::Snapshot> children
= this->Makefile->GetStateSnapshot().GetChildren();
if(!children.empty())
{ {
fout << "if(NOT CMAKE_INSTALL_LOCAL_ONLY)\n"; fout << "if(NOT CMAKE_INSTALL_LOCAL_ONLY)\n";
fout << " # Include the install script for each subdirectory.\n"; fout << " # Include the install script for each subdirectory.\n";
for(std::vector<cmLocalGenerator*>::const_iterator for(std::vector<cmState::Snapshot>::const_iterator
ci = this->Children.begin(); ci != this->Children.end(); ++ci) ci = children.begin(); ci != children.end(); ++ci)
{ {
if(!(*ci)->GetMakefile()->GetPropertyAsBool("EXCLUDE_FROM_ALL")) if(!ci->GetDirectory().GetPropertyAsBool("EXCLUDE_FROM_ALL"))
{ {
std::string odir = (*ci)->GetMakefile()->GetCurrentBinaryDirectory(); std::string odir = ci->GetDirectory().GetCurrentBinary();
cmSystemTools::ConvertToUnixSlashes(odir); cmSystemTools::ConvertToUnixSlashes(odir);
fout << " include(\"" << odir fout << " include(\"" << odir
<< "/cmake_install.cmake\")" << std::endl; << "/cmake_install.cmake\")" << std::endl;

View File

@ -89,11 +89,6 @@ public:
///! set/get the parent generator ///! set/get the parent generator
cmLocalGenerator* GetParent() const {return this->Parent;} cmLocalGenerator* GetParent() const {return this->Parent;}
///! set/get the children
void AddChild(cmLocalGenerator* g) { this->Children.push_back(g); }
std::vector<cmLocalGenerator*>& GetChildren() { return this->Children; }
void AddArchitectureFlags(std::string& flags, void AddArchitectureFlags(std::string& flags,
cmGeneratorTarget const* target, cmGeneratorTarget const* target,
const std::string&lang, const std::string& config); const std::string&lang, const std::string& config);
@ -349,7 +344,6 @@ protected:
cmState::Snapshot StateSnapshot; cmState::Snapshot StateSnapshot;
cmGlobalGenerator *GlobalGenerator; cmGlobalGenerator *GlobalGenerator;
cmLocalGenerator* Parent; cmLocalGenerator* Parent;
std::vector<cmLocalGenerator*> Children;
std::map<std::string, std::string> UniqueObjectNamesMap; std::map<std::string, std::string> UniqueObjectNamesMap;
std::string::size_type ObjectPathMax; std::string::size_type ObjectPathMax;
std::set<std::string> ObjectMaxPathViolations; std::set<std::string> ObjectMaxPathViolations;

View File

@ -76,6 +76,8 @@ struct cmState::BuildsystemDirectoryStateType
std::vector<cmListFileBacktrace> CompileOptionsBacktraces; std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
cmPropertyMap Properties; cmPropertyMap Properties;
std::vector<cmState::Snapshot> Children;
}; };
cmState::cmState(cmake* cm) cmState::cmState(cmake* cm)
@ -274,6 +276,7 @@ cmState::Snapshot cmState::Reset()
it->CompileOptionsBacktraces.clear(); it->CompileOptionsBacktraces.clear();
it->DirectoryEnd = pos; it->DirectoryEnd = pos;
it->Properties.clear(); it->Properties.clear();
it->Children.clear();
} }
this->PolicyStack.Clear(); this->PolicyStack.Clear();
@ -800,7 +803,9 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot,
pos->Parent = origin; pos->Parent = origin;
pos->Root = origin; pos->Root = origin;
pos->Vars = this->VarTree.Extend(origin); pos->Vars = this->VarTree.Extend(origin);
return cmState::Snapshot(this, pos); cmState::Snapshot snapshot = cmState::Snapshot(this, pos);
originSnapshot.Position->BuildSystemDirectory->Children.push_back(snapshot);
return snapshot;
} }
cmState::Snapshot cmState::Snapshot
@ -938,6 +943,11 @@ cmState::Snapshot::Snapshot(cmState* state)
{ {
} }
std::vector<cmState::Snapshot> cmState::Snapshot::GetChildren()
{
return this->Position->BuildSystemDirectory->Children;
}
cmState::Snapshot::Snapshot(cmState* state, PositionType position) cmState::Snapshot::Snapshot(cmState* state, PositionType position)
: State(state), : State(state),
Position(position) Position(position)

View File

@ -65,6 +65,8 @@ public:
void SetListFile(std::string const& listfile); void SetListFile(std::string const& listfile);
std::string GetExecutionListFile() const; std::string GetExecutionListFile() const;
std::vector<Snapshot> GetChildren();
std::string GetEntryPointCommand() const; std::string GetEntryPointCommand() const;
long GetEntryPointLine() const; long GetEntryPointLine() const;