Refactor system include annotation propagation
Since commit v3.0.0-rc1~174^2~1 (cmTarget: Fix system include annotation propagation, 2014-01-01) the cmGeneratorTarget::IsSystemIncludeDirectory method needs to collect all targets that might provide INTERFACE_(|SYSTEM)_INCLUDE_DIRECTORIES for the current target. We now have cmTarget::GetLinkImplementationClosure to provide this, so use it.
This commit is contained in:
parent
535fd6ce6d
commit
fb3518dc81
|
@ -445,13 +445,6 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
||||||
|
|
||||||
if (iter == this->SystemIncludesCache.end())
|
if (iter == this->SystemIncludesCache.end())
|
||||||
{
|
{
|
||||||
cmTarget::LinkImplementation const* impl
|
|
||||||
= this->Target->GetLinkImplementation(config);
|
|
||||||
if(!impl)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmGeneratorExpressionDAGChecker dagChecker(
|
cmGeneratorExpressionDAGChecker dagChecker(
|
||||||
this->GetName(),
|
this->GetName(),
|
||||||
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
|
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
|
||||||
|
@ -471,35 +464,15 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
||||||
&dagChecker), result);
|
&dagChecker), result);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<cmTarget const*> uniqueDeps;
|
std::vector<cmTarget const*> const& deps =
|
||||||
for(std::vector<cmLinkImplItem>::const_iterator
|
this->Target->GetLinkImplementationClosure(config);
|
||||||
li = impl->Libraries.begin(); li != impl->Libraries.end(); ++li)
|
for(std::vector<cmTarget const*>::const_iterator
|
||||||
|
li = deps.begin(), le = deps.end(); li != le; ++li)
|
||||||
{
|
{
|
||||||
cmTarget const* tgt = li->Target;
|
handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
|
||||||
if (!tgt)
|
&dagChecker, result, excludeImported);
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uniqueDeps.insert(tgt).second)
|
|
||||||
{
|
|
||||||
handleSystemIncludesDep(this->Makefile, tgt, config, this->Target,
|
|
||||||
&dagChecker, result, excludeImported);
|
|
||||||
|
|
||||||
std::vector<cmTarget const*> deps;
|
|
||||||
tgt->GetTransitivePropertyTargets(config, this->Target, deps);
|
|
||||||
|
|
||||||
for(std::vector<cmTarget const*>::const_iterator di = deps.begin();
|
|
||||||
di != deps.end(); ++di)
|
|
||||||
{
|
|
||||||
if (uniqueDeps.insert(*di).second)
|
|
||||||
{
|
|
||||||
handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
|
|
||||||
&dagChecker, result, excludeImported);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<std::string> unique;
|
std::set<std::string> unique;
|
||||||
for(std::vector<std::string>::iterator li = result.begin();
|
for(std::vector<std::string>::iterator li = result.begin();
|
||||||
li != result.end(); ++li)
|
li != result.end(); ++li)
|
||||||
|
|
Loading…
Reference in New Issue