summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmGraphVizWriter.cxx22
-rw-r--r--Source/cmGraphVizWriter.h10
2 files changed, 26 insertions, 6 deletions
diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx
index 94918a5..00befec 100644
--- a/Source/cmGraphVizWriter.cxx
+++ b/Source/cmGraphVizWriter.cxx
@@ -55,9 +55,8 @@ cmGraphVizWriter::cmGraphVizWriter(const std::vector<cmLocalGenerator*>&
,GenerateForSharedLibs(true)
,GenerateForModuleLibs(true)
,LocalGenerators(localGenerators)
+,HaveTargetsAndLibs(false)
{
- int cnt = collectAllTargets();
- collectAllExternalLibs(cnt);
}
@@ -137,6 +136,8 @@ void cmGraphVizWriter::ReadSettings(const char* settingsFileName,
void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
{
+ this->CollectTargetsAndLibs();
+
for(std::map<cmStdString, const cmTarget*>::const_iterator ptrIt =
this->TargetPtrs.begin();
ptrIt != this->TargetPtrs.end();
@@ -177,6 +178,8 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
void cmGraphVizWriter::WriteGlobalFile(const char* fileName)
{
+ this->CollectTargetsAndLibs();
+
cmGeneratedFileStream str(fileName);
if ( !str )
{
@@ -295,7 +298,18 @@ void cmGraphVizWriter::WriteNode(const char* targetName,
}
-int cmGraphVizWriter::collectAllTargets()
+void cmGraphVizWriter::CollectTargetsAndLibs()
+{
+ if (this->HaveTargetsAndLibs == false)
+ {
+ this->HaveTargetsAndLibs = true;
+ int cnt = this->CollectAllTargets();
+ this->CollectAllExternalLibs(cnt);
+ }
+}
+
+
+int cmGraphVizWriter::CollectAllTargets()
{
int cnt = 0;
// First pass get the list of all cmake targets
@@ -327,7 +341,7 @@ int cmGraphVizWriter::collectAllTargets()
}
-int cmGraphVizWriter::collectAllExternalLibs(int cnt)
+int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
{
// Ok, now find all the stuff we link to that is not in cmake
for (std::vector<cmLocalGenerator*>::const_iterator lit =
diff --git a/Source/cmGraphVizWriter.h b/Source/cmGraphVizWriter.h
index c9e5fbd..88842a6 100644
--- a/Source/cmGraphVizWriter.h
+++ b/Source/cmGraphVizWriter.h
@@ -15,6 +15,7 @@
#include "cmLocalGenerator.h"
#include "cmGeneratedFileStream.h"
#include "cmTarget.h"
+#include <cmsys/RegularExpression.hxx>
/** This class implements writing files for graphviz (dot) for graphs
@@ -34,9 +35,11 @@ public:
protected:
- int collectAllTargets();
+ void CollectTargetsAndLibs();
- int collectAllExternalLibs(int cnt);
+ int CollectAllTargets();
+
+ int CollectAllExternalLibs(int cnt);
void WriteHeader(cmGeneratedFileStream& str) const;
@@ -65,6 +68,8 @@ protected:
bool GenerateForSharedLibs;
bool GenerateForModuleLibs;
+ cmsys::RegularExpression TargetIgnoreRegex;
+
std::set<cmStdString> TargetsToIgnore;
const std::vector<cmLocalGenerator*>& LocalGenerators;
@@ -73,6 +78,7 @@ protected:
// maps from the actual target names to node names in dot:
std::map<cmStdString, cmStdString> TargetNamesNodes;
+ bool HaveTargetsAndLibs;
};
#endif