cmGeneratorTarget: Move GetObjectLibrariesCMP0026 from cmTarget.
This commit is contained in:
parent
82a6eaf4d0
commit
60bd9f9c92
|
@ -5200,6 +5200,46 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles(
|
|||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmGeneratorTarget::GetObjectLibrariesCMP0026(
|
||||
std::vector<cmGeneratorTarget*>& objlibs) const
|
||||
{
|
||||
// At configure-time, this method can be called as part of getting the
|
||||
// LOCATION property or to export() a file to be include()d. However
|
||||
// there is no cmGeneratorTarget at configure-time, so search the SOURCES
|
||||
// for TARGET_OBJECTS instead for backwards compatibility with OLD
|
||||
// behavior of CMP0024 and CMP0026 only.
|
||||
cmStringRange rng = this->Target->GetSourceEntries();
|
||||
for(std::vector<std::string>::const_iterator
|
||||
i = rng.begin(); i != rng.end(); ++i)
|
||||
{
|
||||
std::string const& entry = *i;
|
||||
|
||||
std::vector<std::string> files;
|
||||
cmSystemTools::ExpandListArgument(entry, files);
|
||||
for (std::vector<std::string>::const_iterator
|
||||
li = files.begin(); li != files.end(); ++li)
|
||||
{
|
||||
if(cmHasLiteralPrefix(*li, "$<TARGET_OBJECTS:") &&
|
||||
(*li)[li->size() - 1] == '>')
|
||||
{
|
||||
std::string objLibName = li->substr(17, li->size()-18);
|
||||
|
||||
if (cmGeneratorExpression::Find(objLibName) != std::string::npos)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
cmGeneratorTarget *objLib =
|
||||
this->LocalGenerator->FindGeneratorTargetToUse(objLibName);
|
||||
if(objLib)
|
||||
{
|
||||
objlibs.push_back(objLib);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmGeneratorTarget::GetLanguages(std::set<std::string>& languages,
|
||||
const std::string& config) const
|
||||
|
@ -5220,14 +5260,13 @@ void cmGeneratorTarget::GetLanguages(std::set<std::string>& languages,
|
|||
std::vector<cmSourceFile const*> externalObjects;
|
||||
if (!this->GlobalGenerator->GetConfigureDoneCMP0026())
|
||||
{
|
||||
std::vector<cmTarget*> objectTargets;
|
||||
this->Target->GetObjectLibrariesCMP0026(objectTargets);
|
||||
std::vector<cmGeneratorTarget*> objectTargets;
|
||||
this->GetObjectLibrariesCMP0026(objectTargets);
|
||||
objectLibraries.reserve(objectTargets.size());
|
||||
for (std::vector<cmTarget*>::const_iterator it = objectTargets.begin();
|
||||
it != objectTargets.end(); ++it)
|
||||
for (std::vector<cmGeneratorTarget*>::const_iterator it =
|
||||
objectTargets.begin(); it != objectTargets.end(); ++it)
|
||||
{
|
||||
objectLibraries.push_back(this->GlobalGenerator
|
||||
->GetGeneratorTarget(*it));
|
||||
objectLibraries.push_back(*it);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -226,6 +226,9 @@ public:
|
|||
void GetLanguages(std::set<std::string>& languages,
|
||||
std::string const& config) const;
|
||||
|
||||
void
|
||||
GetObjectLibrariesCMP0026(std::vector<cmGeneratorTarget*>& objlibs) const;
|
||||
|
||||
bool GetConfigCommonSourceFiles(std::vector<cmSourceFile*>& files) const;
|
||||
|
||||
bool HaveBuildTreeRPATH(const std::string& config) const;
|
||||
|
|
|
@ -2203,45 +2203,6 @@ const char* cmTarget::GetExportMacro() const
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
cmTarget::GetObjectLibrariesCMP0026(std::vector<cmTarget*>& objlibs) const
|
||||
{
|
||||
// At configure-time, this method can be called as part of getting the
|
||||
// LOCATION property or to export() a file to be include()d. However
|
||||
// there is no cmGeneratorTarget at configure-time, so search the SOURCES
|
||||
// for TARGET_OBJECTS instead for backwards compatibility with OLD
|
||||
// behavior of CMP0024 and CMP0026 only.
|
||||
for(std::vector<std::string>::const_iterator
|
||||
i = this->Internal->SourceEntries.begin();
|
||||
i != this->Internal->SourceEntries.end(); ++i)
|
||||
{
|
||||
std::string const& entry = *i;
|
||||
|
||||
std::vector<std::string> files;
|
||||
cmSystemTools::ExpandListArgument(entry, files);
|
||||
for (std::vector<std::string>::const_iterator
|
||||
li = files.begin(); li != files.end(); ++li)
|
||||
{
|
||||
if(cmHasLiteralPrefix(*li, "$<TARGET_OBJECTS:") &&
|
||||
(*li)[li->size() - 1] == '>')
|
||||
{
|
||||
std::string objLibName = li->substr(17, li->size()-18);
|
||||
|
||||
if (cmGeneratorExpression::Find(objLibName) != std::string::npos)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
cmTarget *objLib = this->Makefile->FindTargetToUse(objLibName);
|
||||
if(objLib)
|
||||
{
|
||||
objlibs.push_back(objLib);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmTarget::ImportInfo const*
|
||||
cmTarget::GetImportInfo(const std::string& config) const
|
||||
|
|
|
@ -213,8 +213,6 @@ public:
|
|||
|
||||
bool IsImported() const {return this->IsImportedTarget;}
|
||||
|
||||
void GetObjectLibrariesCMP0026(std::vector<cmTarget*>& objlibs) const;
|
||||
|
||||
/** Strip off leading and trailing whitespace from an item named in
|
||||
the link dependencies of this target. */
|
||||
std::string CheckCMP0004(std::string const& item) const;
|
||||
|
|
Loading…
Reference in New Issue