cmGeneratorTarget: Inline GetSourceFiles from cmTarget.
This commit is contained in:
parent
33f87bb1f5
commit
7b6dc0fe45
|
@ -842,7 +842,40 @@ static void AddInterfaceEntries(
|
|||
void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
|
||||
const std::string& config) const
|
||||
{
|
||||
this->Target->GetSourceFiles(files, config);
|
||||
// Lookup any existing link implementation for this configuration.
|
||||
std::string key = cmSystemTools::UpperCase(config);
|
||||
|
||||
cmTarget::SourceFilesMapType& sfm = this->Target->GetSourceFilesMap();
|
||||
if(!this->Target->GetLinkImplementationLanguageIsContextDependent())
|
||||
{
|
||||
files = sfm.begin()->second;
|
||||
return;
|
||||
}
|
||||
|
||||
cmTarget::SourceFilesMapType::iterator
|
||||
it = sfm.find(key);
|
||||
if(it != sfm.end())
|
||||
{
|
||||
files = it->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<std::string> srcs;
|
||||
this->Target->GetSourceFiles(srcs, config);
|
||||
|
||||
std::set<cmSourceFile*> emitted;
|
||||
|
||||
for(std::vector<std::string>::const_iterator i = srcs.begin();
|
||||
i != srcs.end(); ++i)
|
||||
{
|
||||
cmSourceFile* sf = this->Makefile->GetOrCreateSource(*i);
|
||||
if (emitted.insert(sf).second)
|
||||
{
|
||||
files.push_back(sf);
|
||||
}
|
||||
}
|
||||
sfm[key] = files;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -101,9 +101,7 @@ public:
|
|||
HeadToLinkImplementationMap> LinkImplMapType;
|
||||
LinkImplMapType LinkImplMap;
|
||||
|
||||
typedef std::map<std::string, std::vector<cmSourceFile*> >
|
||||
SourceFilesMapType;
|
||||
SourceFilesMapType SourceFilesMap;
|
||||
cmTarget::SourceFilesMapType SourceFilesMap;
|
||||
|
||||
std::set<cmLinkItem> UtilityItems;
|
||||
bool UtilityItemsDone;
|
||||
|
@ -409,6 +407,11 @@ void cmTarget::Compute()
|
|||
this->Internal->SourceItems, true);
|
||||
}
|
||||
|
||||
cmTarget::SourceFilesMapType& cmTarget::GetSourceFilesMap() const
|
||||
{
|
||||
return this->Internal->SourceFilesMap;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmTarget::AddUtility(const std::string& u, cmMakefile *makefile)
|
||||
{
|
||||
|
@ -735,46 +738,6 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
|
|||
cmDeleteAll(linkInterfaceSourcesEntries);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
|
||||
const std::string& config) const
|
||||
{
|
||||
|
||||
// Lookup any existing link implementation for this configuration.
|
||||
std::string key = cmSystemTools::UpperCase(config);
|
||||
|
||||
if(!this->LinkImplementationLanguageIsContextDependent)
|
||||
{
|
||||
files = this->Internal->SourceFilesMap.begin()->second;
|
||||
return;
|
||||
}
|
||||
|
||||
cmTargetInternals::SourceFilesMapType::iterator
|
||||
it = this->Internal->SourceFilesMap.find(key);
|
||||
if(it != this->Internal->SourceFilesMap.end())
|
||||
{
|
||||
files = it->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<std::string> srcs;
|
||||
this->GetSourceFiles(srcs, config);
|
||||
|
||||
std::set<cmSourceFile*> emitted;
|
||||
|
||||
for(std::vector<std::string>::const_iterator i = srcs.begin();
|
||||
i != srcs.end(); ++i)
|
||||
{
|
||||
cmSourceFile* sf = this->Makefile->GetOrCreateSource(*i);
|
||||
if (emitted.insert(sf).second)
|
||||
{
|
||||
files.push_back(sf);
|
||||
}
|
||||
}
|
||||
this->Internal->SourceFilesMap[key] = files;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
|
||||
{
|
||||
|
|
|
@ -135,11 +135,15 @@ public:
|
|||
|
||||
void Compute();
|
||||
|
||||
/**
|
||||
* Get the list of the source files used by this target
|
||||
*/
|
||||
void GetSourceFiles(std::vector<cmSourceFile*> &files,
|
||||
const std::string& config) const;
|
||||
typedef std::map<std::string, std::vector<cmSourceFile*> >
|
||||
SourceFilesMapType;
|
||||
|
||||
SourceFilesMapType& GetSourceFilesMap() const;
|
||||
|
||||
bool GetLinkImplementationLanguageIsContextDependent() const {
|
||||
return this->LinkImplementationLanguageIsContextDependent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add sources to the target.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue