Xcode: Refactor loop over all sources

Switch from `GetConfigCommonSourceFiles` to `GetAllConfigSources`.
This will allow us to drop object library files from the former.
This commit is contained in:
Brad King
2017-04-12 14:33:48 -04:00
parent 97cc29c766
commit e44a8d2c32
+12 -33
View File
@@ -651,11 +651,6 @@ std::string GetGroupMapKeyFromPath(cmGeneratorTarget* target,
return key;
}
std::string GetGroupMapKey(cmGeneratorTarget* target, cmSourceFile* sf)
{
return GetGroupMapKeyFromPath(target, sf->GetFullPath());
}
cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath(
const std::string& fullpath, cmGeneratorTarget* target,
const std::string& lang, cmSourceFile* sf)
@@ -2788,42 +2783,26 @@ bool cmGlobalXCodeGenerator::CreateGroups(
gtgt->AddSource(plist);
}
std::vector<cmSourceFile*> classes;
if (!gtgt->GetConfigCommonSourceFiles(classes)) {
return false;
}
std::vector<cmGeneratorTarget::AllConfigSource> const& sources =
gtgt->GetAllConfigSources();
// Put cmSourceFile instances in proper groups:
for (std::vector<cmSourceFile*>::const_iterator s = classes.begin();
s != classes.end(); s++) {
cmSourceFile* sf = *s;
for (std::vector<cmGeneratorTarget::AllConfigSource>::const_iterator si =
sources.begin();
si != sources.end(); ++si) {
cmSourceFile const* sf = si->Source;
if (this->XcodeVersion >= 50 && !sf->GetObjectLibrary().empty()) {
// Object library files go on the link line instead.
continue;
}
// Add the file to the list of sources.
std::string const& source = sf->GetFullPath();
cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup);
std::string key = GetGroupMapKey(gtgt, sf);
std::string key = GetGroupMapKeyFromPath(gtgt, source);
this->GroupMap[key] = pbxgroup;
}
if (this->XcodeVersion < 50) {
// Put OBJECT_LIBRARY objects in proper groups:
std::vector<cmSourceFile const*> objs;
gtgt->GetExternalObjects(objs, "");
for (std::vector<cmSourceFile const*>::const_iterator oi =
objs.begin();
oi != objs.end(); ++oi) {
if ((*oi)->GetObjectLibrary().empty()) {
continue;
}
std::string const& source = (*oi)->GetFullPath();
cmSourceGroup* sourceGroup =
mf->FindSourceGroup(source.c_str(), sourceGroups);
cmXCodeObject* pbxgroup =
this->CreateOrGetPBXGroup(gtgt, sourceGroup);
std::string key = GetGroupMapKeyFromPath(gtgt, source);
this->GroupMap[key] = pbxgroup;
}
}
}
}
return true;