cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget.
This commit is contained in:
parent
22590805bf
commit
dd11f72ced
@ -2054,10 +2054,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
|
bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
|
||||||
cmTarget const& target) const
|
cmGeneratorTarget* target) const
|
||||||
{
|
{
|
||||||
if(target.GetType() == cmTarget::INTERFACE_LIBRARY
|
if(target->GetType() == cmTarget::INTERFACE_LIBRARY
|
||||||
|| target.GetPropertyAsBool("EXCLUDE_FROM_ALL"))
|
|| target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL"))
|
||||||
{
|
{
|
||||||
// This target is excluded from its directory.
|
// This target is excluded from its directory.
|
||||||
return true;
|
return true;
|
||||||
@ -2066,7 +2066,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
|
|||||||
{
|
{
|
||||||
// This target is included in its directory. Check whether the
|
// This target is included in its directory. Check whether the
|
||||||
// directory is excluded.
|
// directory is excluded.
|
||||||
return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator());
|
return this->IsExcluded(root, target->GetLocalGenerator());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2127,15 +2127,16 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap()
|
|||||||
{
|
{
|
||||||
cmTarget const& target = t->second;
|
cmTarget const& target = t->second;
|
||||||
|
|
||||||
|
cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
|
||||||
|
|
||||||
// Consider the directory containing the target and all its
|
// Consider the directory containing the target and all its
|
||||||
// parents until something excludes the target.
|
// parents until something excludes the target.
|
||||||
for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target);
|
for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt);
|
||||||
clg = clg->GetParent())
|
clg = clg->GetParent())
|
||||||
{
|
{
|
||||||
// This local generator includes the target.
|
// This local generator includes the target.
|
||||||
std::set<cmGeneratorTarget const*>& targetSet =
|
std::set<cmGeneratorTarget const*>& targetSet =
|
||||||
this->LocalGeneratorToTargetMap[clg];
|
this->LocalGeneratorToTargetMap[clg];
|
||||||
cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
|
|
||||||
targetSet.insert(gt);
|
targetSet.insert(gt);
|
||||||
|
|
||||||
// Add dependencies of the included target. An excluded
|
// Add dependencies of the included target. An excluded
|
||||||
|
@ -391,7 +391,7 @@ protected:
|
|||||||
void FillProjectMap();
|
void FillProjectMap();
|
||||||
void CheckLocalGenerators();
|
void CheckLocalGenerators();
|
||||||
bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const;
|
bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const;
|
||||||
bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const;
|
bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const;
|
||||||
void FillLocalGeneratorToTargetMap();
|
void FillLocalGeneratorToTargetMap();
|
||||||
void CreateDefaultGlobalTargets(cmTargets* targets);
|
void CreateDefaultGlobalTargets(cmTargets* targets);
|
||||||
cmTarget CreateGlobalTarget(const std::string& name, const char* message,
|
cmTarget CreateGlobalTarget(const std::string& name, const char* message,
|
||||||
|
@ -289,7 +289,7 @@ public:
|
|||||||
const std::vector<cmLocalGenerator*>& GetLocalGenerators() const {
|
const std::vector<cmLocalGenerator*>& GetLocalGenerators() const {
|
||||||
return LocalGenerators; }
|
return LocalGenerators; }
|
||||||
|
|
||||||
bool IsExcluded(cmLocalGenerator* root, cmTarget& target) {
|
bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) {
|
||||||
return cmGlobalGenerator::IsExcluded(root, target); }
|
return cmGlobalGenerator::IsExcluded(root, target); }
|
||||||
|
|
||||||
int GetRuleCmdLength(const std::string& name) {
|
int GetRuleCmdLength(const std::string& name) {
|
||||||
|
@ -821,7 +821,7 @@ cmGlobalUnixMakefileGenerator3
|
|||||||
localName, depends, commands, true);
|
localName, depends, commands, true);
|
||||||
|
|
||||||
// add the all/all dependency
|
// add the all/all dependency
|
||||||
if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target))
|
if(!this->IsExcluded(this->LocalGenerators[0], gtarget))
|
||||||
{
|
{
|
||||||
depends.clear();
|
depends.clear();
|
||||||
depends.push_back(localName);
|
depends.push_back(localName);
|
||||||
@ -889,7 +889,7 @@ cmGlobalUnixMakefileGenerator3
|
|||||||
"Pre-install relink rule for target.",
|
"Pre-install relink rule for target.",
|
||||||
localName, depends, commands, true);
|
localName, depends, commands, true);
|
||||||
|
|
||||||
if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target))
|
if(!this->IsExcluded(this->LocalGenerators[0], gtarget))
|
||||||
{
|
{
|
||||||
depends.clear();
|
depends.clear();
|
||||||
depends.push_back(localName);
|
depends.push_back(localName);
|
||||||
|
@ -111,17 +111,19 @@ bool cmGlobalVisualStudioGenerator::Compute()
|
|||||||
for(std::vector<cmLocalGenerator*>::iterator i = gen.begin();
|
for(std::vector<cmLocalGenerator*>::iterator i = gen.begin();
|
||||||
i != gen.end(); ++i)
|
i != gen.end(); ++i)
|
||||||
{
|
{
|
||||||
cmTargets& targets = (*i)->GetMakefile()->GetTargets();
|
cmGeneratorTargetsType targets =
|
||||||
for(cmTargets::iterator t = targets.begin();
|
(*i)->GetMakefile()->GetGeneratorTargets();
|
||||||
|
for(cmGeneratorTargetsType::iterator t = targets.begin();
|
||||||
t != targets.end(); ++t)
|
t != targets.end(); ++t)
|
||||||
{
|
{
|
||||||
if (t->second.GetType() == cmTarget::GLOBAL_TARGET)
|
if (t->second->GetType() == cmTarget::GLOBAL_TARGET
|
||||||
|
|| t->first->IsImported())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(!this->IsExcluded(gen[0], t->second))
|
if(!this->IsExcluded(gen[0], t->second))
|
||||||
{
|
{
|
||||||
allBuild->AddUtility(t->second.GetName());
|
allBuild->AddUtility(t->second->GetName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ void cmLocalNinjaGenerator::Generate()
|
|||||||
// Add the target to "all" if required.
|
// Add the target to "all" if required.
|
||||||
if (!this->GetGlobalNinjaGenerator()->IsExcluded(
|
if (!this->GetGlobalNinjaGenerator()->IsExcluded(
|
||||||
this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0],
|
this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0],
|
||||||
*t->second->Target))
|
t->second))
|
||||||
this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target);
|
this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target);
|
||||||
delete tg;
|
delete tg;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user