Handle Mac OSX source flags for individual files lazily.

The actual list of files will become config dependent in a follow-up
commit.
This commit is contained in:
Stephen Kelly 2014-02-14 12:24:13 +01:00
parent 64d398416a
commit f9d5b1fd0f
1 changed files with 17 additions and 26 deletions

View File

@ -1009,6 +1009,23 @@ cmGeneratorTarget::GetTargetSourceFileFlags(const cmSourceFile* sf) const
{
flags = si->second;
}
else
{
// Handle the MACOSX_PACKAGE_LOCATION property on source files that
// were not listed in one of the other lists.
if(const char* location = sf->GetProperty("MACOSX_PACKAGE_LOCATION"))
{
flags.MacFolder = location;
if(strcmp(location, "Resources") == 0)
{
flags.Type = cmGeneratorTarget::SourceFileTypeResource;
}
else
{
flags.Type = cmGeneratorTarget::SourceFileTypeMacContent;
}
}
}
return flags;
}
@ -1072,30 +1089,4 @@ void cmGeneratorTarget::ConstructSourceFileFlags() const
}
}
}
// Handle the MACOSX_PACKAGE_LOCATION property on source files that
// were not listed in one of the other lists.
std::vector<cmSourceFile*> sources;
this->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
cmSourceFile* sf = *si;
if(const char* location = sf->GetProperty("MACOSX_PACKAGE_LOCATION"))
{
SourceFileFlags& flags = this->SourceFlagsMap[sf];
if(flags.Type == cmGeneratorTarget::SourceFileTypeNormal)
{
flags.MacFolder = location;
if(strcmp(location, "Resources") == 0)
{
flags.Type = cmGeneratorTarget::SourceFileTypeResource;
}
else
{
flags.Type = cmGeneratorTarget::SourceFileTypeMacContent;
}
}
}
}
}