|
|
@@ -503,57 +503,6 @@ void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
|
|
|
this->Target->GetSourceFiles(files);
|
|
|
}
|
|
|
|
|
|
-//----------------------------------------------------------------------------
|
|
|
-void cmGeneratorTarget::LookupObjectLibraries()
|
|
|
-{
|
|
|
- std::vector<std::string> const& objLibs =
|
|
|
- this->Target->GetObjectLibraries();
|
|
|
- for(std::vector<std::string>::const_iterator oli = objLibs.begin();
|
|
|
- oli != objLibs.end(); ++oli)
|
|
|
- {
|
|
|
- std::string const& objLibName = *oli;
|
|
|
- if(cmTarget* objLib = this->Makefile->FindTargetToUse(objLibName))
|
|
|
- {
|
|
|
- if(objLib->GetType() == cmTarget::OBJECT_LIBRARY)
|
|
|
- {
|
|
|
- if(this->Target->GetType() != cmTarget::EXECUTABLE &&
|
|
|
- this->Target->GetType() != cmTarget::STATIC_LIBRARY &&
|
|
|
- this->Target->GetType() != cmTarget::SHARED_LIBRARY &&
|
|
|
- this->Target->GetType() != cmTarget::MODULE_LIBRARY)
|
|
|
- {
|
|
|
- this->GlobalGenerator->GetCMakeInstance()
|
|
|
- ->IssueMessage(cmake::FATAL_ERROR,
|
|
|
- "Only executables and non-OBJECT libraries may "
|
|
|
- "reference target objects.",
|
|
|
- this->Target->GetBacktrace());
|
|
|
- return;
|
|
|
- }
|
|
|
- this->ObjectLibraries.push_back(objLib);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- cmOStringStream e;
|
|
|
- e << "Objects of target \"" << objLibName
|
|
|
- << "\" referenced but is not an OBJECT library.";
|
|
|
- this->GlobalGenerator->GetCMakeInstance()
|
|
|
- ->IssueMessage(cmake::FATAL_ERROR, e.str(),
|
|
|
- this->Target->GetBacktrace());
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- cmOStringStream e;
|
|
|
- e << "Objects of target \"" << objLibName
|
|
|
- << "\" referenced but no such target exists.";
|
|
|
- this->GlobalGenerator->GetCMakeInstance()
|
|
|
- ->IssueMessage(cmake::FATAL_ERROR, e.str(),
|
|
|
- this->Target->GetBacktrace());
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
//----------------------------------------------------------------------------
|
|
|
std::string cmGeneratorTarget::GetModuleDefinitionFile() const
|
|
|
{
|
|
|
@@ -566,9 +515,26 @@ std::string cmGeneratorTarget::GetModuleDefinitionFile() const
|
|
|
void
|
|
|
cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs) const
|
|
|
{
|
|
|
+ std::vector<cmSourceFile const*> objectFiles;
|
|
|
+ this->GetExternalObjects(objectFiles);
|
|
|
+ std::vector<cmTarget*> objectLibraries;
|
|
|
+ std::set<cmTarget*> emitted;
|
|
|
+ for(std::vector<cmSourceFile const*>::const_iterator
|
|
|
+ it = objectFiles.begin(); it != objectFiles.end(); ++it)
|
|
|
+ {
|
|
|
+ std::string objLib = (*it)->GetObjectLibrary();
|
|
|
+ if (cmTarget* tgt = this->Makefile->FindTargetToUse(objLib))
|
|
|
+ {
|
|
|
+ if (emitted.insert(tgt).second)
|
|
|
+ {
|
|
|
+ objectLibraries.push_back(tgt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
for(std::vector<cmTarget*>::const_iterator
|
|
|
- ti = this->ObjectLibraries.begin();
|
|
|
- ti != this->ObjectLibraries.end(); ++ti)
|
|
|
+ ti = objectLibraries.begin();
|
|
|
+ ti != objectLibraries.end(); ++ti)
|
|
|
{
|
|
|
cmTarget* objLib = *ti;
|
|
|
cmGeneratorTarget* ogt =
|