summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-03-17 16:49:38 (GMT)
committerStephen Kelly <steveire@gmail.com>2014-03-31 21:18:43 (GMT)
commitd38423ecc4105d8339b7461130b964f3c69e8847 (patch)
treed50ed49f334a7fc5518b4e64576c83a04ef1c951 /Source
parentb1cbba68ce44bf8d78a6e41ff465461f0abf83a9 (diff)
downloadCMake-d38423ecc4105d8339b7461130b964f3c69e8847.zip
CMake-d38423ecc4105d8339b7461130b964f3c69e8847.tar.gz
CMake-d38423ecc4105d8339b7461130b964f3c69e8847.tar.bz2
cmTarget: Add a method to obtain list of filenames for sources.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGeneratorTarget.cxx24
-rw-r--r--Source/cmTarget.cxx14
-rw-r--r--Source/cmTarget.h1
3 files changed, 27 insertions, 12 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index b35e859..834f9fd 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -600,12 +600,12 @@ private:
cmGlobalGenerator const* GlobalGenerator;
typedef cmGeneratorTarget::SourceEntry SourceEntry;
SourceEntry* CurrentEntry;
- std::queue<cmSourceFile*> SourceQueue;
- std::set<cmSourceFile*> SourcesQueued;
+ std::queue<std::string> SourceQueue;
+ std::set<std::string> SourcesQueued;
typedef std::map<std::string, cmSourceFile*> NameMapType;
NameMapType NameMap;
- void QueueSource(cmSourceFile* sf);
+ void QueueSource(std::string const& name);
void FollowName(std::string const& name);
void FollowNames(std::vector<std::string> const& names);
bool IsUtility(std::string const& dep);
@@ -628,11 +628,11 @@ cmTargetTraceDependencies
this->CurrentEntry = 0;
// Queue all the source files already specified for the target.
- std::vector<cmSourceFile*> sources;
if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY)
{
+ std::vector<std::string> sources;
this->Target->GetSourceFiles(sources);
- for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
+ for(std::vector<std::string>::const_iterator si = sources.begin();
si != sources.end(); ++si)
{
this->QueueSource(*si);
@@ -652,7 +652,8 @@ void cmTargetTraceDependencies::Trace()
while(!this->SourceQueue.empty())
{
// Get the next source from the queue.
- cmSourceFile* sf = this->SourceQueue.front();
+ std::string src = this->SourceQueue.front();
+ cmSourceFile* sf = this->Makefile->GetSource(src);
this->SourceQueue.pop();
this->CurrentEntry = &this->GeneratorTarget->SourceEntries[sf];
@@ -680,14 +681,14 @@ void cmTargetTraceDependencies::Trace()
}
//----------------------------------------------------------------------------
-void cmTargetTraceDependencies::QueueSource(cmSourceFile* sf)
+void cmTargetTraceDependencies::QueueSource(std::string const& name)
{
- if(this->SourcesQueued.insert(sf).second)
+ if(this->SourcesQueued.insert(name).second)
{
- this->SourceQueue.push(sf);
+ this->SourceQueue.push(name);
// Make sure this file is in the target.
- this->Target->AddSourceFile(sf);
+ this->Target->AddSource(name);
}
}
@@ -709,8 +710,7 @@ void cmTargetTraceDependencies::FollowName(std::string const& name)
{
this->CurrentEntry->Depends.push_back(sf);
}
-
- this->QueueSource(sf);
+ this->QueueSource(sf->GetFullPath());
}
}
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 835aaad..0866d10 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -542,6 +542,20 @@ bool cmTarget::IsBundleOnApple() const
}
//----------------------------------------------------------------------------
+void cmTarget::GetSourceFiles(std::vector<std::string> &files) const
+{
+ assert(this->GetType() != INTERFACE_LIBRARY);
+ std::vector<cmSourceFile*> sourceFiles;
+ this->GetSourceFiles(sourceFiles);
+ for(std::vector<cmSourceFile*>::const_iterator
+ si = sourceFiles.begin();
+ si != sourceFiles.end(); ++si)
+ {
+ files.push_back((*si)->GetFullPath());
+ }
+}
+
+//----------------------------------------------------------------------------
void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files) const
{
assert(this->GetType() != INTERFACE_LIBRARY);
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index e385443..8df9bd8 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -135,6 +135,7 @@ public:
/**
* Get the list of the source files used by this target
*/
+ void GetSourceFiles(std::vector<std::string> &files) const;
void GetSourceFiles(std::vector<cmSourceFile*> &files) const;
void AddSourceFile(cmSourceFile* sf);
std::vector<std::string> const& GetObjectLibraries() const