summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-01-09 18:54:23 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-01-09 18:54:23 (GMT)
commite56530f6121a96c0434cba673d530366907df980 (patch)
tree6f4848474b9fd414736d3e73bf805c4e60876619 /Source
parent089ae7122b3ba030ca55b5a85be54b334c16f4b2 (diff)
parent531e40b95e80fbf5547b0a8d71196e819bb3aa3d (diff)
downloadCMake-e56530f6121a96c0434cba673d530366907df980.zip
CMake-e56530f6121a96c0434cba673d530366907df980.tar.gz
CMake-e56530f6121a96c0434cba673d530366907df980.tar.bz2
Merge topic 'minor-cleanups'
531e40b cmTarget: Make GetSourceFiles populate an out-vector parameter. 38de54c cmGeneratorTarget: Add methods to access source file groups. f579fe0 Help: Fix link to MAP_IMPORTED_CONFIG_<CONFIG> 590d238 cmTarget: Handle NO_SYSTEM_FROM_IMPORTED.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmExtraCodeBlocksGenerator.cxx3
-rw-r--r--Source/cmExtraEclipseCDT4Generator.cxx3
-rw-r--r--Source/cmExtraSublimeTextGenerator.cxx3
-rw-r--r--Source/cmFLTKWrapUICommand.cxx4
-rw-r--r--Source/cmGeneratorTarget.cxx100
-rw-r--r--Source/cmGeneratorTarget.h47
-rw-r--r--Source/cmGlobalGenerator.cxx3
-rw-r--r--Source/cmGlobalKdevelopGenerator.cxx3
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx8
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.cxx8
-rw-r--r--Source/cmGlobalVisualStudioGenerator.cxx14
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx20
-rw-r--r--Source/cmLocalGenerator.cxx6
-rw-r--r--Source/cmLocalVisualStudio6Generator.cxx7
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx7
-rw-r--r--Source/cmMakefileTargetGenerator.cxx32
-rw-r--r--Source/cmNinjaTargetGenerator.cxx34
-rw-r--r--Source/cmNinjaUtilityTargetGenerator.cxx4
-rw-r--r--Source/cmQtAutoGenerators.cxx12
-rw-r--r--Source/cmTarget.cxx7
-rw-r--r--Source/cmTarget.h2
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx58
22 files changed, 271 insertions, 114 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx
index fce1284..a066153 100644
--- a/Source/cmExtraCodeBlocksGenerator.cxx
+++ b/Source/cmExtraCodeBlocksGenerator.cxx
@@ -398,7 +398,8 @@ void cmExtraCodeBlocksGenerator
case cmTarget::OBJECT_LIBRARY:
case cmTarget::UTILITY: // can have sources since 2.6.3
{
- const std::vector<cmSourceFile*>&sources=ti->second.GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ ti->second.GetSourceFiles(sources);
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
si!=sources.end(); si++)
{
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index c93187e..3e9b786 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -559,7 +559,8 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
// get the files from the source lists then add them to the groups
cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
- std::vector<cmSourceFile*>const & files = tgt->GetSourceFiles();
+ std::vector<cmSourceFile*> files;
+ tgt->GetSourceFiles(files);
for(std::vector<cmSourceFile*>::const_iterator sfIt = files.begin();
sfIt != files.end();
sfIt++)
diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx
index 9cbdd7c..52411e8 100644
--- a/Source/cmExtraSublimeTextGenerator.cxx
+++ b/Source/cmExtraSublimeTextGenerator.cxx
@@ -237,7 +237,8 @@ void cmExtraSublimeTextGenerator::
{
cmGeneratorTarget *gtgt = this->GlobalGenerator
->GetGeneratorTarget(target);
- std::vector<cmSourceFile*> const& sourceFiles = target->GetSourceFiles();
+ std::vector<cmSourceFile*> sourceFiles;
+ target->GetSourceFiles(sourceFiles);
std::vector<cmSourceFile*>::const_iterator sourceFilesEnd =
sourceFiles.end();
for (std::vector<cmSourceFile*>::const_iterator iter =
diff --git a/Source/cmFLTKWrapUICommand.cxx b/Source/cmFLTKWrapUICommand.cxx
index b08c335..4ce1ea5 100644
--- a/Source/cmFLTKWrapUICommand.cxx
+++ b/Source/cmFLTKWrapUICommand.cxx
@@ -132,8 +132,8 @@ void cmFLTKWrapUICommand::FinalPass()
cmSystemTools::Message(msg.c_str(),"Warning");
return;
}
- std::vector<cmSourceFile*> const& srcs =
- target->GetSourceFiles();
+ std::vector<cmSourceFile*> srcs;
+ target->GetSourceFiles(srcs);
bool found = false;
for (unsigned int i = 0; i < srcs.size(); ++i)
{
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 6894cfc..5cd1f42 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -65,7 +65,8 @@ cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf) const
static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
const char *config, cmTarget *headTarget,
cmGeneratorExpressionDAGChecker *dagChecker,
- std::vector<std::string>& result)
+ std::vector<std::string>& result,
+ bool excludeImported)
{
cmTarget* depTgt = mf->FindTargetToUse(name.c_str());
@@ -85,7 +86,7 @@ static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
config, false, headTarget,
depTgt, dagChecker), result);
}
- if (!depTgt->IsImported())
+ if (!depTgt->IsImported() || excludeImported)
{
return;
}
@@ -102,6 +103,84 @@ static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
}
//----------------------------------------------------------------------------
+void
+cmGeneratorTarget::GetObjectSources(std::vector<cmSourceFile*> &objs) const
+{
+ objs = this->ObjectSources;
+}
+
+//----------------------------------------------------------------------------
+const std::string& cmGeneratorTarget::GetObjectName(cmSourceFile const* file)
+{
+ return this->Objects[file];
+}
+
+void cmGeneratorTarget::AddObject(cmSourceFile *sf, std::string const&name)
+{
+ this->Objects[sf] = name;
+}
+
+//----------------------------------------------------------------------------
+void cmGeneratorTarget::AddExplicitObjectName(cmSourceFile* sf)
+{
+ this->ExplicitObjectName.insert(sf);
+}
+
+//----------------------------------------------------------------------------
+bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const
+{
+ std::set<cmSourceFile const*>::const_iterator it
+ = this->ExplicitObjectName.find(file);
+ return it != this->ExplicitObjectName.end();
+}
+
+//----------------------------------------------------------------------------
+void cmGeneratorTarget::GetResxSources(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->ResxSources;
+}
+
+//----------------------------------------------------------------------------
+void cmGeneratorTarget::GetIDLSources(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->IDLSources;
+}
+
+//----------------------------------------------------------------------------
+void
+cmGeneratorTarget::GetHeaderSources(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->HeaderSources;
+}
+
+//----------------------------------------------------------------------------
+void cmGeneratorTarget::GetExtraSources(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->ExtraSources;
+}
+
+//----------------------------------------------------------------------------
+void
+cmGeneratorTarget::GetCustomCommands(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->CustomCommands;
+}
+
+//----------------------------------------------------------------------------
+void
+cmGeneratorTarget::GetExpectedResxHeaders(std::set<std::string>& srcs) const
+{
+ srcs = this->ExpectedResxHeaders;
+}
+
+//----------------------------------------------------------------------------
+void
+cmGeneratorTarget::GetExternalObjects(std::vector<cmSourceFile*>& srcs) const
+{
+ srcs = this->ExternalObjects;
+}
+
+//----------------------------------------------------------------------------
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
const char *config) const
{
@@ -130,6 +209,9 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
this->GetName(),
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
+ bool excludeImported
+ = this->Target->GetPropertyAsBool("NO_SYSTEM_FROM_IMPORTED");
+
std::vector<std::string> result;
for (std::set<cmStdString>::const_iterator
it = this->Target->GetSystemIncludeDirectories().begin();
@@ -156,7 +238,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
}
handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
- &dagChecker, result);
+ &dagChecker, result, excludeImported);
std::vector<std::string> deps;
tgt->GetTransitivePropertyLinkLibraries(config, this->Target, deps);
@@ -167,7 +249,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
if (uniqueDeps.insert(*di).second)
{
handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
- &dagChecker, result);
+ &dagChecker, result, excludeImported);
}
}
}
@@ -202,9 +284,9 @@ bool cmGeneratorTarget::GetPropertyAsBool(const char *prop) const
}
//----------------------------------------------------------------------------
-std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles() const
+void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
{
- return this->Target->GetSourceFiles();
+ this->Target->GetSourceFiles(files);
}
//----------------------------------------------------------------------------
@@ -216,7 +298,8 @@ void cmGeneratorTarget::ClassifySources()
bool isObjLib = targetType == cmTarget::OBJECT_LIBRARY;
std::vector<cmSourceFile*> badObjLib;
- std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ this->Target->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
@@ -414,7 +497,8 @@ cmTargetTraceDependencies
this->CurrentEntry = 0;
// Queue all the source files already specified for the target.
- std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ this->Target->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 8b760f1..17a223a 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -30,36 +30,35 @@ public:
const char *GetName() const;
const char *GetProperty(const char *prop) const;
bool GetPropertyAsBool(const char *prop) const;
- std::vector<cmSourceFile*> const& GetSourceFiles() const;
+ void GetSourceFiles(std::vector<cmSourceFile*>& files) const;
+
+ void GetObjectSources(std::vector<cmSourceFile*> &) const;
+ const std::string& GetObjectName(cmSourceFile const* file);
+
+ void AddObject(cmSourceFile *sf, std::string const&name);
+ bool HasExplicitObjectName(cmSourceFile const* file) const;
+ void AddExplicitObjectName(cmSourceFile* sf);
+
+ void GetResxSources(std::vector<cmSourceFile*>&) const;
+ void GetIDLSources(std::vector<cmSourceFile*>&) const;
+ void GetExternalObjects(std::vector<cmSourceFile*>&) const;
+ void GetHeaderSources(std::vector<cmSourceFile*>&) const;
+ void GetExtraSources(std::vector<cmSourceFile*>&) const;
+ void GetCustomCommands(std::vector<cmSourceFile*>&) const;
+ void GetExpectedResxHeaders(std::set<std::string>&) const;
cmTarget* Target;
cmMakefile* Makefile;
cmLocalGenerator* LocalGenerator;
cmGlobalGenerator* GlobalGenerator;
- /** Sources classified by purpose. */
- std::vector<cmSourceFile*> CustomCommands;
- std::vector<cmSourceFile*> ExtraSources;
- std::vector<cmSourceFile*> HeaderSources;
- std::vector<cmSourceFile*> ObjectSources;
- std::vector<cmSourceFile*> ExternalObjects;
- std::vector<cmSourceFile*> IDLSources;
- std::vector<cmSourceFile*> ResxSources;
-
std::string ModuleDefinitionFile;
- std::map<cmSourceFile const*, std::string> Objects;
- std::set<cmSourceFile const*> ExplicitObjectName;
-
- std::set<std::string> ExpectedResxHeaders;
-
/** Full path with trailing slash to the top-level directory
holding object files for this target. Includes the build
time config name placeholder if needed for the generator. */
std::string ObjectDirectory;
- std::vector<cmTarget*> ObjectLibraries;
-
void UseObjectLibraries(std::vector<std::string>& objs) const;
void GetAppleArchs(const char* config,
@@ -89,11 +88,23 @@ public:
/** Get sources that must be built before the given source. */
std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile* sf) const;
+private:
+ friend class cmTargetTraceDependencies;
struct SourceEntry { std::vector<cmSourceFile*> Depends; };
typedef std::map<cmSourceFile*, SourceEntry> SourceEntriesType;
SourceEntriesType SourceEntries;
-private:
+ std::vector<cmSourceFile*> CustomCommands;
+ std::vector<cmSourceFile*> ExtraSources;
+ std::vector<cmSourceFile*> HeaderSources;
+ std::vector<cmSourceFile*> ExternalObjects;
+ std::vector<cmSourceFile*> IDLSources;
+ std::vector<cmSourceFile*> ResxSources;
+ std::map<cmSourceFile const*, std::string> Objects;
+ std::set<cmSourceFile const*> ExplicitObjectName;
+ std::set<std::string> ExpectedResxHeaders;
+ std::vector<cmSourceFile*> ObjectSources;
+ std::vector<cmTarget*> ObjectLibraries;
mutable std::map<std::string, std::vector<std::string> > SystemIncludesCache;
cmGeneratorTarget(cmGeneratorTarget const&);
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1c4488f..f883fbe 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -2900,7 +2900,8 @@ void cmGlobalGenerator::WriteSummary(cmTarget* target)
// List the source files with any per-source labels.
fout << "# Source files and their labels\n";
- std::vector<cmSourceFile*> const& sources = target->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ target->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
diff --git a/Source/cmGlobalKdevelopGenerator.cxx b/Source/cmGlobalKdevelopGenerator.cxx
index 61ff45b..ed0e15b 100644
--- a/Source/cmGlobalKdevelopGenerator.cxx
+++ b/Source/cmGlobalKdevelopGenerator.cxx
@@ -138,7 +138,8 @@ bool cmGlobalKdevelopGenerator
for (cmTargets::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
- const std::vector<cmSourceFile*>& sources=ti->second.GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ ti->second.GetSourceFiles(sources);
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
si!=sources.end(); si++)
{
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 4b92058..ec91b0f 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -644,15 +644,17 @@ void cmGlobalNinjaGenerator::ComputeTargetObjects(cmGeneratorTarget* gt) const
dir_max += "/";
gt->ObjectDirectory = dir_max;
+ std::vector<cmSourceFile*> objectSources;
+ gt->GetObjectSources(objectSources);
// Compute the name of each object file.
for(std::vector<cmSourceFile*>::iterator
- si = gt->ObjectSources.begin();
- si != gt->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
cmSourceFile* sf = *si;
std::string objectName = gt->LocalGenerator
->GetObjectFileNameWithoutTarget(*sf, dir_max);
- gt->Objects[sf] = objectName;
+ gt->AddObject(sf, objectName);
}
}
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx
index 622a7c5..0b37a07 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -120,17 +120,19 @@ cmGlobalUnixMakefileGenerator3
dir_max += "/";
gt->ObjectDirectory = dir_max;
+ std::vector<cmSourceFile*> objectSources;
+ gt->GetObjectSources(objectSources);
// Compute the name of each object file.
for(std::vector<cmSourceFile*>::iterator
- si = gt->ObjectSources.begin();
- si != gt->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
cmSourceFile* sf = *si;
bool hasSourceExtension = true;
std::string objectName = gt->LocalGenerator
->GetObjectFileNameWithoutTarget(*sf, dir_max,
&hasSourceExtension);
- gt->Objects[sf] = objectName;
+ gt->AddObject(sf, objectName);
lg->AddLocalObjectFile(target, sf, objectName, hasSourceExtension);
}
}
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx
index 93a597c..42492e6 100644
--- a/Source/cmGlobalVisualStudioGenerator.cxx
+++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -129,9 +129,11 @@ cmGlobalVisualStudioGenerator
// Count the number of object files with each name. Note that
// windows file names are not case sensitive.
std::map<cmStdString, int> counts;
+ std::vector<cmSourceFile*> objectSources;
+ gt->GetObjectSources(objectSources);
for(std::vector<cmSourceFile*>::const_iterator
- si = gt->ObjectSources.begin();
- si != gt->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
cmSourceFile* sf = *si;
std::string objectNameLower = cmSystemTools::LowerCase(
@@ -143,8 +145,8 @@ cmGlobalVisualStudioGenerator
// For all source files producing duplicate names we need unique
// object name computation.
for(std::vector<cmSourceFile*>::const_iterator
- si = gt->ObjectSources.begin();
- si != gt->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
cmSourceFile* sf = *si;
std::string objectName =
@@ -152,10 +154,10 @@ cmGlobalVisualStudioGenerator
objectName += ".obj";
if(counts[cmSystemTools::LowerCase(objectName)] > 1)
{
- gt->ExplicitObjectName.insert(sf);
+ gt->AddExplicitObjectName(sf);
objectName = lg->GetObjectFileNameWithoutTarget(*sf, dir_max);
}
- gt->Objects[sf] = objectName;
+ gt->AddObject(sf, objectName);
}
std::string dir = gt->Makefile->GetCurrentOutputDirectory();
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index eef49db..f7a42fc 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -991,7 +991,8 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
}
// organize the sources
- std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ cmtarget.GetSourceFiles(classes);
std::sort(classes.begin(), classes.end(), cmSourceFilePathCompare());
std::vector<cmXCodeObject*> externalObjFiles;
@@ -1360,7 +1361,8 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases,
postbuild.push_back(command);
}
- std::vector<cmSourceFile*>const &classes = cmtarget.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ cmtarget.GetSourceFiles(classes);
// add all the sources
std::vector<cmCustomCommand> commands;
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
@@ -2442,7 +2444,8 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
// Add source files without build rules for editing convenience.
if(cmtarget.GetType() == cmTarget::UTILITY)
{
- std::vector<cmSourceFile*> const& sources = cmtarget.GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ cmtarget.GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
i != sources.end(); ++i)
{
@@ -2945,7 +2948,8 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
cmtarget.AddSourceFile(sf);
}
- std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ cmtarget.GetSourceFiles(classes);
// Put cmSourceFile instances in proper groups:
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
@@ -3925,9 +3929,11 @@ cmGlobalXCodeGenerator
// to avoid exact duplicate file names. Note that Mac file names are not
// typically case sensitive, hence the LowerCase.
std::map<cmStdString, int> counts;
+ std::vector<cmSourceFile*> objectSources;
+ gt->GetObjectSources(objectSources);
for(std::vector<cmSourceFile*>::const_iterator
- si = gt->ObjectSources.begin();
- si != gt->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
cmSourceFile* sf = *si;
std::string objectName =
@@ -3941,7 +3947,7 @@ cmGlobalXCodeGenerator
// TODO: emit warning about duplicate name?
}
- gt->Objects[sf] = objectName;
+ gt->AddObject(sf, objectName);
}
const char* configName = this->GetCMakeCFGIntDir();
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 455f542..3effe38 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -657,7 +657,8 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang,
cmStdString objs;
std::vector<std::string> objVector;
// Add all the sources outputs to the depends of the target
- std::vector<cmSourceFile*> const& classes = target.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ target.GetSourceFiles(classes);
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
i != classes.end(); ++i)
{
@@ -1631,7 +1632,8 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs,
if(this->Makefile->IsOn("WIN32") &&
!(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")))
{
- const std::vector<cmSourceFile*>& sources = target->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ target->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator i = sources.begin();
i != sources.end(); ++i)
{
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx
index 8eeb89a..fb12521 100644
--- a/Source/cmLocalVisualStudio6Generator.cxx
+++ b/Source/cmLocalVisualStudio6Generator.cxx
@@ -314,7 +314,8 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups();
// get the classes from the source lists then add them to the groups
- std::vector<cmSourceFile*> const & classes = target.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ target.GetSourceFiles(classes);
// now all of the source files have been properly assigned to the target
// now stick them into source groups using the reg expressions
@@ -401,9 +402,9 @@ void cmLocalVisualStudio6Generator
std::string compileFlags;
std::vector<std::string> depends;
std::string objectNameDir;
- if(gt->ExplicitObjectName.find(*sf) != gt->ExplicitObjectName.end())
+ if(gt->HasExplicitObjectName(*sf))
{
- objectNameDir = cmSystemTools::GetFilenamePath(gt->Objects[*sf]);
+ objectNameDir = cmSystemTools::GetFilenamePath(gt->GetObjectName(*sf));
}
// Add per-source file flags.
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index b645f8f..57a4880 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -1381,7 +1381,8 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
// get the classes from the source lists then add them to the groups
this->ModuleDefinitionFile = "";
- std::vector<cmSourceFile*>const & classes = target.GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ target.GetSourceFiles(classes);
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
i != classes.end(); i++)
{
@@ -1468,9 +1469,9 @@ cmLocalVisualStudio7GeneratorFCInfo
cmGeneratorTarget* gt =
lg->GetGlobalGenerator()->GetGeneratorTarget(&target);
std::string objectName;
- if(gt->ExplicitObjectName.find(&sf) != gt->ExplicitObjectName.end())
+ if(gt->HasExplicitObjectName(&sf))
{
- objectName = gt->Objects[&sf];
+ objectName = gt->GetObjectName(&sf);
}
// Compute per-source, per-config information.
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index f82b808..7f90078 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -151,9 +151,11 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
// First generate the object rule files. Save a list of all object
// files for this target.
+ std::vector<cmSourceFile*> customCommands;
+ this->GeneratorTarget->GetCustomCommands(customCommands);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->CustomCommands.begin();
- si != this->GeneratorTarget->CustomCommands.end(); ++si)
+ si = customCommands.begin();
+ si != customCommands.end(); ++si)
{
cmCustomCommand const* cc = (*si)->GetCustomCommand();
this->GenerateCustomRuleFile(*cc);
@@ -170,21 +172,28 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
}
}
}
+ std::vector<cmSourceFile*> headerSources;
+ this->GeneratorTarget->GetHeaderSources(headerSources);
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
- this->GeneratorTarget->HeaderSources,
+ headerSources,
this->MacOSXContentGenerator);
+ std::vector<cmSourceFile*> extraSources;
+ this->GeneratorTarget->GetExtraSources(extraSources);
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
- this->GeneratorTarget->ExtraSources,
+ extraSources,
this->MacOSXContentGenerator);
+ std::vector<cmSourceFile*> externalObjects;
+ this->GeneratorTarget->GetExternalObjects(externalObjects);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ExternalObjects.begin();
- si != this->GeneratorTarget->ExternalObjects.end(); ++si)
+ si = externalObjects.begin();
+ si != externalObjects.end(); ++si)
{
this->ExternalObjects.push_back((*si)->GetFullPath());
}
+ std::vector<cmSourceFile*> objectSources;
+ this->GeneratorTarget->GetObjectSources(objectSources);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ObjectSources.begin();
- si != this->GeneratorTarget->ObjectSources.end(); ++si)
+ si = objectSources.begin(); si != objectSources.end(); ++si)
{
// Generate this object file's rule file.
this->WriteObjectRuleFiles(**si);
@@ -421,7 +430,8 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(cmSourceFile& source)
}
// Get the full path name of the object file.
- std::string const& objectName = this->GeneratorTarget->Objects[&source];
+ std::string const& objectName = this->GeneratorTarget
+ ->GetObjectName(&source);
std::string obj = this->LocalGenerator->GetTargetDirectory(*this->Target);
obj += "/";
obj += objectName;
@@ -1142,8 +1152,8 @@ cmMakefileTargetGenerator
::DriveCustomCommands(std::vector<std::string>& depends)
{
// Depend on all custom command outputs.
- const std::vector<cmSourceFile*>& sources =
- this->Target->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ this->Target->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
source != sources.end(); ++source)
{
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index c8b03e1..82f8d1b 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -276,7 +276,8 @@ cmNinjaTargetGenerator
std::string path = this->LocalGenerator->GetHomeRelativeOutputPath();
if(!path.empty())
path += "/";
- std::string const& objectName = this->GeneratorTarget->Objects[source];
+ std::string const& objectName = this->GeneratorTarget
+ ->GetObjectName(source);
path += this->LocalGenerator->GetTargetDirectory(*this->Target);
path += "/";
path += objectName;
@@ -458,28 +459,37 @@ cmNinjaTargetGenerator
<< this->GetTargetName()
<< "\n\n";
+ std::vector<cmSourceFile*> customCommands;
+ this->GeneratorTarget->GetCustomCommands(customCommands);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->CustomCommands.begin();
- si != this->GeneratorTarget->CustomCommands.end(); ++si)
+ si = customCommands.begin();
+ si != customCommands.end(); ++si)
{
cmCustomCommand const* cc = (*si)->GetCustomCommand();
this->GetLocalGenerator()->AddCustomCommandTarget(cc, this->GetTarget());
}
+ std::vector<cmSourceFile*> headerSources;
+ this->GeneratorTarget->GetHeaderSources(headerSources);
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
- this->GeneratorTarget->HeaderSources,
+ headerSources,
this->MacOSXContentGenerator);
+ std::vector<cmSourceFile*> extraSources;
+ this->GeneratorTarget->GetExtraSources(extraSources);
this->OSXBundleGenerator->GenerateMacOSXContentStatements(
- this->GeneratorTarget->ExtraSources,
+ extraSources,
this->MacOSXContentGenerator);
+ std::vector<cmSourceFile*> externalObjects;
+ this->GeneratorTarget->GetExternalObjects(externalObjects);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ExternalObjects.begin();
- si != this->GeneratorTarget->ExternalObjects.end(); ++si)
+ si = externalObjects.begin();
+ si != externalObjects.end(); ++si)
{
this->Objects.push_back(this->GetSourceFilePath(*si));
}
+ std::vector<cmSourceFile*> objectSources;
+ this->GeneratorTarget->GetObjectSources(objectSources);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ObjectSources.begin();
- si != this->GeneratorTarget->ObjectSources.end(); ++si)
+ si = objectSources.begin(); si != objectSources.end(); ++si)
{
this->WriteObjectBuildStatement(*si);
}
@@ -539,9 +549,11 @@ cmNinjaTargetGenerator
}
// Add order-only dependencies on custom command outputs.
+ std::vector<cmSourceFile*> customCommands;
+ this->GeneratorTarget->GetCustomCommands(customCommands);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->CustomCommands.begin();
- si != this->GeneratorTarget->CustomCommands.end(); ++si)
+ si = customCommands.begin();
+ si != customCommands.end(); ++si)
{
cmCustomCommand const* cc = (*si)->GetCustomCommand();
const std::vector<std::string>& ccoutputs = cc->GetOutputs();
diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx
index 8556565..1a7b445 100644
--- a/Source/cmNinjaUtilityTargetGenerator.cxx
+++ b/Source/cmNinjaUtilityTargetGenerator.cxx
@@ -42,8 +42,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
}
}
- const std::vector<cmSourceFile*>& sources =
- this->GetTarget()->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ this->GetTarget()->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
source != sources.end(); ++source)
{
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index bd7e75a..da22ab5 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -451,7 +451,8 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target,
const char* sepFiles = "";
const char* sepHeaders = "";
- const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+ std::vector<cmSourceFile*> srcFiles;
+ target->GetSourceFiles(srcFiles);
std::string skip_moc;
const char *sep = "";
@@ -643,7 +644,8 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,
const char *qtUic = makefile->GetSafeDefinition("QT_UIC_EXECUTABLE");
makefile->AddDefinition("_qt_uic_executable", qtUic);
- const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+ std::vector<cmSourceFile*> srcFiles;
+ target->GetSourceFiles(srcFiles);
std::string skip_uic;
const char *sep = "";
@@ -809,7 +811,8 @@ void cmQtAutoGenerators::InitializeAutoRccTarget(cmTarget* target)
{
cmMakefile *makefile = target->GetMakefile();
- const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+ std::vector<cmSourceFile*> srcFiles;
+ target->GetSourceFiles(srcFiles);
std::vector<cmSourceFile*> newFiles;
@@ -855,7 +858,8 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
const char* sepRccFiles = "";
cmMakefile *makefile = target->GetMakefile();
- const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+ std::vector<cmSourceFile*> srcFiles;
+ target->GetSourceFiles(srcFiles);
std::string rccFileFiles;
std::string rccFileOptions;
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index a8468ef..4828d20 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -530,9 +530,9 @@ bool cmTarget::FindSourceFiles()
}
//----------------------------------------------------------------------------
-std::vector<cmSourceFile*> const& cmTarget::GetSourceFiles() const
+void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
{
- return this->SourceFiles;
+ files = this->SourceFiles;
}
//----------------------------------------------------------------------------
@@ -673,7 +673,8 @@ void cmTarget::ConstructSourceFileFlags() const
// Handle the MACOSX_PACKAGE_LOCATION property on source files that
// were not listed in one of the other lists.
- std::vector<cmSourceFile*> const& sources = this->GetSourceFiles();
+ std::vector<cmSourceFile*> sources;
+ this->GetSourceFiles(sources);
for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 4916648..26d391f 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -132,7 +132,7 @@ public:
/**
* Get the list of the source files used by this target
*/
- std::vector<cmSourceFile*> const& GetSourceFiles() const;
+ void GetSourceFiles(std::vector<cmSourceFile*> &files) const;
void AddSourceFile(cmSourceFile* sf);
std::vector<std::string> const& GetObjectLibraries() const
{
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 0434506..eee7c14 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -376,8 +376,8 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReferences()
void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup()
{
- std::vector<cmSourceFile*> const& resxObjs =
- this->GeneratorTarget->ResxSources;
+ std::vector<cmSourceFile*> resxObjs;
+ this->GeneratorTarget->GetResxSources(resxObjs);
if(!resxObjs.empty())
{
this->WriteString("<ItemGroup>\n", 1);
@@ -550,9 +550,11 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
void cmVisualStudio10TargetGenerator::WriteCustomCommands()
{
this->SourcesVisited.clear();
+ std::vector<cmSourceFile*> customCommands;
+ this->GeneratorTarget->GetCustomCommands(customCommands);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->CustomCommands.begin();
- si != this->GeneratorTarget->CustomCommands.end(); ++si)
+ si = customCommands.begin();
+ si != customCommands.end(); ++si)
{
this->WriteCustomCommand(*si);
}
@@ -697,7 +699,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
// collect up group information
std::vector<cmSourceGroup> sourceGroups =
this->Makefile->GetSourceGroups();
- std::vector<cmSourceFile*> classes = this->Target->GetSourceFiles();
+ std::vector<cmSourceFile*> classes;
+ this->Target->GetSourceFiles(classes);
std::set<cmSourceGroup*> groupsUsed;
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
@@ -740,8 +743,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups);
}
- std::vector<cmSourceFile*> const& resxObjs =
- this->GeneratorTarget->ResxSources;
+ std::vector<cmSourceFile*> resxObjs;
+ this->GeneratorTarget->GetResxSources(resxObjs);
if(!resxObjs.empty())
{
this->WriteString("<ItemGroup>\n", 1);
@@ -813,7 +816,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
this->WriteString("</Filter>\n", 2);
}
- if(!this->GeneratorTarget->ResxSources.empty())
+ if(!resxObjs.empty())
{
this->WriteString("<Filter Include=\"Resource Files\">\n", 2);
std::string guidName = "SG_Filter_Resource Files";
@@ -996,12 +999,18 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
}
this->WriteString("<ItemGroup>\n", 1);
- this->WriteSources("ClInclude", this->GeneratorTarget->HeaderSources);
- this->WriteSources("Midl", this->GeneratorTarget->IDLSources);
+ std::vector<cmSourceFile*> headerSources;
+ this->GeneratorTarget->GetHeaderSources(headerSources);
+ this->WriteSources("ClInclude", headerSources);
+ std::vector<cmSourceFile*> idlSources;
+ this->GeneratorTarget->GetIDLSources(idlSources);
+ this->WriteSources("Midl", idlSources);
+ std::vector<cmSourceFile*> objectSources;
+ this->GeneratorTarget->GetObjectSources(objectSources);
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ObjectSources.begin();
- si != this->GeneratorTarget->ObjectSources.end(); ++si)
+ si = objectSources.begin();
+ si != objectSources.end(); ++si)
{
const char* lang = (*si)->GetLanguage();
const char* tool = NULL;
@@ -1038,19 +1047,21 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
}
}
+ std::vector<cmSourceFile*> externalObjects;
+ this->GeneratorTarget->GetExternalObjects(externalObjects);
if(this->LocalGenerator->GetVersion() > cmLocalVisualStudioGenerator::VS10)
{
// For VS >= 11 we use LinkObjects to avoid linking custom command
// outputs. Use Object for all external objects, generated or not.
- this->WriteSources("Object", this->GeneratorTarget->ExternalObjects);
+ this->WriteSources("Object", externalObjects);
}
else
{
// If an object file is generated in this target, then vs10 will use
// it in the build, and we have to list it as None instead of Object.
for(std::vector<cmSourceFile*>::const_iterator
- si = this->GeneratorTarget->ExternalObjects.begin();
- si != this->GeneratorTarget->ExternalObjects.end(); ++si)
+ si = externalObjects.begin();
+ si != externalObjects.end(); ++si)
{
std::vector<cmSourceFile*> const* d =
this->GeneratorTarget->GetSourceDepends(*si);
@@ -1058,7 +1069,9 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
}
}
- this->WriteSources("None", this->GeneratorTarget->ExtraSources);
+ std::vector<cmSourceFile*> extraSources;
+ this->GeneratorTarget->GetExtraSources(extraSources);
+ this->WriteSources("None", extraSources);
// Add object library contents as external objects.
std::vector<std::string> objs;
@@ -1081,10 +1094,9 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
cmSourceFile& sf = *source;
std::string objectName;
- if(this->GeneratorTarget->ExplicitObjectName.find(&sf)
- != this->GeneratorTarget->ExplicitObjectName.end())
+ if(this->GeneratorTarget->HasExplicitObjectName(&sf))
{
- objectName = this->GeneratorTarget->Objects[&sf];
+ objectName = this->GeneratorTarget->GetObjectName(&sf);
}
std::string flags;
std::string defines;
@@ -1884,8 +1896,10 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
bool cmVisualStudio10TargetGenerator::
IsResxHeader(const std::string& headerFile)
{
- std::set<std::string>::iterator it =
- this->GeneratorTarget->ExpectedResxHeaders.find(headerFile);
+ std::set<std::string> expectedResxHeaders;
+ this->GeneratorTarget->GetExpectedResxHeaders(expectedResxHeaders);
- return it != this->GeneratorTarget->ExpectedResxHeaders.end();
+ std::set<std::string>::const_iterator it =
+ expectedResxHeaders.find(headerFile);
+ return it != expectedResxHeaders.end();
}