cmTarget: Refactor GetLinkImplementationClosure internals
Store the 'Done' flag directly in each map entry instead of using a separate map.
This commit is contained in:
parent
9d72df4505
commit
89095514a7
|
@ -164,6 +164,13 @@ public:
|
||||||
typedef std::map<std::string, cmTarget::LinkClosure> LinkClosureMapType;
|
typedef std::map<std::string, cmTarget::LinkClosure> LinkClosureMapType;
|
||||||
LinkClosureMapType LinkClosureMap;
|
LinkClosureMapType LinkClosureMap;
|
||||||
|
|
||||||
|
struct LinkImplClosure: public std::vector<cmTarget const*>
|
||||||
|
{
|
||||||
|
LinkImplClosure(): Done(false) {}
|
||||||
|
bool Done;
|
||||||
|
};
|
||||||
|
std::map<std::string, LinkImplClosure> LinkImplClosureMap;
|
||||||
|
|
||||||
typedef std::map<std::string, std::vector<cmSourceFile*> >
|
typedef std::map<std::string, std::vector<cmSourceFile*> >
|
||||||
SourceFilesMapType;
|
SourceFilesMapType;
|
||||||
SourceFilesMapType SourceFilesMap;
|
SourceFilesMapType SourceFilesMap;
|
||||||
|
@ -203,15 +210,12 @@ public:
|
||||||
CachedLinkInterfaceSourcesEntries;
|
CachedLinkInterfaceSourcesEntries;
|
||||||
std::map<std::string, std::vector<TargetPropertyEntry*> >
|
std::map<std::string, std::vector<TargetPropertyEntry*> >
|
||||||
CachedLinkInterfaceCompileFeaturesEntries;
|
CachedLinkInterfaceCompileFeaturesEntries;
|
||||||
std::map<std::string, std::vector<cmTarget const*> >
|
|
||||||
CachedLinkImplementationClosure;
|
|
||||||
|
|
||||||
std::map<std::string, bool> CacheLinkInterfaceIncludeDirectoriesDone;
|
std::map<std::string, bool> CacheLinkInterfaceIncludeDirectoriesDone;
|
||||||
std::map<std::string, bool> CacheLinkInterfaceCompileDefinitionsDone;
|
std::map<std::string, bool> CacheLinkInterfaceCompileDefinitionsDone;
|
||||||
std::map<std::string, bool> CacheLinkInterfaceCompileOptionsDone;
|
std::map<std::string, bool> CacheLinkInterfaceCompileOptionsDone;
|
||||||
std::map<std::string, bool> CacheLinkInterfaceSourcesDone;
|
std::map<std::string, bool> CacheLinkInterfaceSourcesDone;
|
||||||
std::map<std::string, bool> CacheLinkInterfaceCompileFeaturesDone;
|
std::map<std::string, bool> CacheLinkInterfaceCompileFeaturesDone;
|
||||||
std::map<std::string, bool> CacheLinkImplementationClosureDone;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
cmLinkImplItem cmTargetInternals::TargetPropertyEntry::NoLinkImplItem;
|
cmLinkImplItem cmTargetInternals::TargetPropertyEntry::NoLinkImplItem;
|
||||||
|
@ -6034,11 +6038,11 @@ void processILibs(const std::string& config,
|
||||||
std::vector<cmTarget const*> const&
|
std::vector<cmTarget const*> const&
|
||||||
cmTarget::GetLinkImplementationClosure(const std::string& config) const
|
cmTarget::GetLinkImplementationClosure(const std::string& config) const
|
||||||
{
|
{
|
||||||
std::vector<cmTarget const*>& tgts =
|
cmTargetInternals::LinkImplClosure& tgts =
|
||||||
this->Internal->CachedLinkImplementationClosure[config];
|
this->Internal->LinkImplClosureMap[config];
|
||||||
if(!this->Internal->CacheLinkImplementationClosureDone[config])
|
if(!tgts.Done)
|
||||||
{
|
{
|
||||||
this->Internal->CacheLinkImplementationClosureDone[config] = true;
|
tgts.Done = true;
|
||||||
std::set<cmTarget const*> emitted;
|
std::set<cmTarget const*> emitted;
|
||||||
|
|
||||||
cmTarget::LinkImplementationLibraries const* impl
|
cmTarget::LinkImplementationLibraries const* impl
|
||||||
|
|
Loading…
Reference in New Issue