From 1afacebee9c42a0dccaf554db9cb048204913d38 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Apr 2017 14:56:37 -0400 Subject: Xcode: Do not add Object Libraries source group on Xcode >= 5 The group is always empty because on Xcode 5 and above we list object library files directly on the link line and do not list sources for them. --- Source/cmGlobalXCodeGenerator.cxx | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index d07cc3d..b7ff7f3 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2799,17 +2799,20 @@ bool cmGlobalXCodeGenerator::CreateGroups( this->GroupMap[key] = pbxgroup; } - // Put OBJECT_LIBRARY objects in proper groups: - std::vector objs; - gtgt->UseObjectLibraries(objs, ""); - for (std::vector::const_iterator oi = objs.begin(); - oi != objs.end(); ++oi) { - std::string const& source = *oi; - cmSourceGroup* sourceGroup = - mf->FindSourceGroup(source.c_str(), sourceGroups); - cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup); - std::string key = GetGroupMapKeyFromPath(gtgt, source); - this->GroupMap[key] = pbxgroup; + if (this->XcodeVersion < 50) { + // Put OBJECT_LIBRARY objects in proper groups: + std::vector objs; + gtgt->UseObjectLibraries(objs, ""); + for (std::vector::const_iterator oi = objs.begin(); + oi != objs.end(); ++oi) { + std::string const& source = *oi; + cmSourceGroup* sourceGroup = + mf->FindSourceGroup(source.c_str(), sourceGroups); + cmXCodeObject* pbxgroup = + this->CreateOrGetPBXGroup(gtgt, sourceGroup); + std::string key = GetGroupMapKeyFromPath(gtgt, source); + this->GroupMap[key] = pbxgroup; + } } } } -- cgit v0.12 From 63fbf587509c63395c024026b7bf264dbae446a1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Apr 2017 15:11:57 -0400 Subject: Xcode: Inline relevant parts of UseObjectLibraries --- Source/cmGlobalXCodeGenerator.cxx | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index b7ff7f3..9d1f771 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -1051,11 +1051,14 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets( // Add object library contents as external objects. (Equivalent to // the externalObjFiles above, except each one is not a cmSourceFile // within the target.) - std::vector objs; - gtgt->UseObjectLibraries(objs, ""); - for (std::vector::const_iterator oi = objs.begin(); + std::vector objs; + gtgt->GetExternalObjects(objs, ""); + for (std::vector::const_iterator oi = objs.begin(); oi != objs.end(); ++oi) { - std::string obj = *oi; + if ((*oi)->GetObjectLibrary().empty()) { + continue; + } + std::string const& obj = (*oi)->GetFullPath(); cmXCodeObject* xsf = this->CreateXCodeSourceFileFromPath(obj, gtgt, "", 0); externalObjFiles.push_back(xsf); @@ -2669,13 +2672,16 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target) // Add object library contents as link flags. std::string linkObjs; const char* sep = ""; - std::vector objs; - gt->UseObjectLibraries(objs, ""); - for (std::vector::const_iterator oi = objs.begin(); + std::vector objs; + gt->GetExternalObjects(objs, ""); + for (std::vector::const_iterator oi = objs.begin(); oi != objs.end(); ++oi) { + if ((*oi)->GetObjectLibrary().empty()) { + continue; + } linkObjs += sep; sep = " "; - linkObjs += this->XCodeEscapePath(*oi); + linkObjs += this->XCodeEscapePath((*oi)->GetFullPath()); } this->AppendBuildSettingAttribute( target, this->GetTargetLinkFlagsVar(gt), linkObjs.c_str(), configName); @@ -2801,11 +2807,15 @@ bool cmGlobalXCodeGenerator::CreateGroups( if (this->XcodeVersion < 50) { // Put OBJECT_LIBRARY objects in proper groups: - std::vector objs; - gtgt->UseObjectLibraries(objs, ""); - for (std::vector::const_iterator oi = objs.begin(); + std::vector objs; + gtgt->GetExternalObjects(objs, ""); + for (std::vector::const_iterator oi = + objs.begin(); oi != objs.end(); ++oi) { - std::string const& source = *oi; + if ((*oi)->GetObjectLibrary().empty()) { + continue; + } + std::string const& source = (*oi)->GetFullPath(); cmSourceGroup* sourceGroup = mf->FindSourceGroup(source.c_str(), sourceGroups); cmXCodeObject* pbxgroup = -- cgit v0.12 From 229abfc8f945421c9ad491dff674e41d283ca80f Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Apr 2017 15:37:06 -0400 Subject: cmGeneratorTarget: Drop unused UseObjectLibraries method --- Source/cmGeneratorTarget.cxx | 35 ----------------------------------- Source/cmGeneratorTarget.h | 3 --- 2 files changed, 38 deletions(-) diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 74d863d..cbaedb1 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -1937,41 +1937,6 @@ bool cmGeneratorTarget::IsDLLPlatform() const return this->DLLPlatform; } -void cmGeneratorTarget::UseObjectLibraries(std::vector& objs, - const std::string& config) const -{ - std::vector objectFiles; - this->GetExternalObjects(objectFiles, config); - std::vector objectLibraries; - for (std::vector::const_iterator it = - objectFiles.begin(); - it != objectFiles.end(); ++it) { - std::string objLib = (*it)->GetObjectLibrary(); - if (cmGeneratorTarget* tgt = - this->LocalGenerator->FindGeneratorTargetToUse(objLib)) { - objectLibraries.push_back(tgt); - } - } - - std::vector::const_iterator end = - cmRemoveDuplicates(objectLibraries); - - for (std::vector::const_iterator ti = - objectLibraries.begin(); - ti != end; ++ti) { - cmGeneratorTarget* ogt = *ti; - std::vector objectSources; - ogt->GetObjectSources(objectSources, config); - for (std::vector::const_iterator si = - objectSources.begin(); - si != objectSources.end(); ++si) { - std::string obj = ogt->ObjectDirectory; - obj += ogt->Objects[*si]; - objs.push_back(obj); - } - } -} - void cmGeneratorTarget::GetAutoUicOptions(std::vector& result, const std::string& config) const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 3b9819d..38ece2c 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -347,9 +347,6 @@ public: time config name placeholder if needed for the generator. */ std::string ObjectDirectory; - void UseObjectLibraries(std::vector& objs, - const std::string& config) const; - void GetAppleArchs(const std::string& config, std::vector& archVec) const; -- cgit v0.12