cmGlobalGenerator: Move LG to target map to subclass.
This is the only user.
This commit is contained in:
parent
f5d2b7a694
commit
b9eb3cd140
|
@ -2117,50 +2117,6 @@ void cmGlobalGenerator::FillProjectMap()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Build a map that contains a the set of targets used by each local
|
||||
// generator directory level.
|
||||
void cmGlobalGenerator::FillLocalGeneratorToTargetMap()
|
||||
{
|
||||
this->LocalGeneratorToTargetMap.clear();
|
||||
// Loop over all targets in all local generators.
|
||||
for(std::vector<cmLocalGenerator*>::const_iterator
|
||||
lgi = this->LocalGenerators.begin();
|
||||
lgi != this->LocalGenerators.end(); ++lgi)
|
||||
{
|
||||
cmLocalGenerator* lg = *lgi;
|
||||
cmMakefile* mf = lg->GetMakefile();
|
||||
cmTargets const& targets = mf->GetTargets();
|
||||
for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t)
|
||||
{
|
||||
cmTarget const& target = t->second;
|
||||
|
||||
cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
|
||||
|
||||
// Consider the directory containing the target and all its
|
||||
// parents until something excludes the target.
|
||||
for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt);
|
||||
clg = clg->GetParent())
|
||||
{
|
||||
// This local generator includes the target.
|
||||
std::set<cmGeneratorTarget const*>& targetSet =
|
||||
this->LocalGeneratorToTargetMap[clg];
|
||||
targetSet.insert(gt);
|
||||
|
||||
// Add dependencies of the included target. An excluded
|
||||
// target may still be included if it is a dependency of a
|
||||
// non-excluded target.
|
||||
TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt);
|
||||
for(TargetDependSet::const_iterator ti = tgtdeps.begin();
|
||||
ti != tgtdeps.end(); ++ti)
|
||||
{
|
||||
targetSet.insert(*ti);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cmMakefile*
|
||||
cmGlobalGenerator::FindMakefile(const std::string& start_dir) const
|
||||
{
|
||||
|
|
|
@ -398,7 +398,7 @@ protected:
|
|||
void CheckLocalGenerators();
|
||||
bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const;
|
||||
bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const;
|
||||
void FillLocalGeneratorToTargetMap();
|
||||
virtual void FillLocalGeneratorToTargetMap() {}
|
||||
void CreateDefaultGlobalTargets(cmTargets* targets);
|
||||
cmTarget CreateGlobalTarget(const std::string& name, const char* message,
|
||||
const cmCustomCommandLines* commandLines,
|
||||
|
@ -413,8 +413,6 @@ protected:
|
|||
cmMakefile* CurrentMakefile;
|
||||
// map from project name to vector of local generators in that project
|
||||
std::map<std::string, std::vector<cmLocalGenerator*> > ProjectMap;
|
||||
std::map<cmLocalGenerator*, std::set<cmGeneratorTarget const*> >
|
||||
LocalGeneratorToTargetMap;
|
||||
|
||||
// Set of named installation components requested by the project.
|
||||
std::set<std::string> InstallComponents;
|
||||
|
|
|
@ -917,6 +917,49 @@ cmGlobalUnixMakefileGenerator3
|
|||
}
|
||||
}
|
||||
|
||||
// Build a map that contains a the set of targets used by each local
|
||||
// generator directory level.
|
||||
void cmGlobalUnixMakefileGenerator3::FillLocalGeneratorToTargetMap()
|
||||
{
|
||||
this->LocalGeneratorToTargetMap.clear();
|
||||
// Loop over all targets in all local generators.
|
||||
for(std::vector<cmLocalGenerator*>::const_iterator
|
||||
lgi = this->LocalGenerators.begin();
|
||||
lgi != this->LocalGenerators.end(); ++lgi)
|
||||
{
|
||||
cmLocalGenerator* lg = *lgi;
|
||||
cmMakefile* mf = lg->GetMakefile();
|
||||
cmTargets const& targets = mf->GetTargets();
|
||||
for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t)
|
||||
{
|
||||
cmTarget const& target = t->second;
|
||||
|
||||
cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
|
||||
|
||||
// Consider the directory containing the target and all its
|
||||
// parents until something excludes the target.
|
||||
for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt);
|
||||
clg = clg->GetParent())
|
||||
{
|
||||
// This local generator includes the target.
|
||||
std::set<cmGeneratorTarget const*>& targetSet =
|
||||
this->LocalGeneratorToTargetMap[clg];
|
||||
targetSet.insert(gt);
|
||||
|
||||
// Add dependencies of the included target. An excluded
|
||||
// target may still be included if it is a dependency of a
|
||||
// non-excluded target.
|
||||
TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt);
|
||||
for(TargetDependSet::const_iterator ti = tgtdeps.begin();
|
||||
ti != tgtdeps.end(); ++ti)
|
||||
{
|
||||
targetSet.insert(*ti);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
size_t
|
||||
cmGlobalUnixMakefileGenerator3
|
||||
|
|
|
@ -206,6 +206,10 @@ protected:
|
|||
private:
|
||||
virtual const char* GetBuildIgnoreErrorsFlag() const { return "-i"; }
|
||||
virtual std::string GetEditCacheCommand() const;
|
||||
|
||||
std::map<cmLocalGenerator*, std::set<cmGeneratorTarget const*> >
|
||||
LocalGeneratorToTargetMap;
|
||||
virtual void FillLocalGeneratorToTargetMap();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue