summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmLocalGenerator.cxx2
-rw-r--r--Source/cmMakefile.cxx5
-rw-r--r--Source/cmState.cxx27
-rw-r--r--Source/cmState.h5
-rw-r--r--Source/cmake.cxx2
5 files changed, 27 insertions, 14 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index eb6b871..a16fc55 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -73,7 +73,7 @@ cmLocalGenerator::~cmLocalGenerator()
bool cmLocalGenerator::IsRootMakefile() const
{
- return !this->StateSnapshot.GetParent().IsValid();
+ return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid();
}
//----------------------------------------------------------------------------
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 80849f5..473b7d2 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1628,7 +1628,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath,
}
cmState::Snapshot newSnapshot = this->GetState()
- ->CreateSnapshot(this->StateSnapshot);
+ ->CreateBuildsystemDirectorySnapshot(this->StateSnapshot);
// create a new local generator and set its parent
cmLocalGenerator *lg2 = this->GetGlobalGenerator()
@@ -4032,7 +4032,8 @@ const char *cmMakefile::GetProperty(const std::string& prop,
output = "";
if (prop == "PARENT_DIRECTORY")
{
- cmState::Snapshot parent = this->StateSnapshot.GetParent();
+ cmState::Snapshot parent =
+ this->StateSnapshot.GetBuildsystemDirectoryParent();
if(parent.IsValid())
{
return parent.GetCurrentSourceDirectory();
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index 58885d3..c6fb299 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -590,7 +590,7 @@ void cmState::Snapshot::ComputeRelativePathTopSource()
snapshots.push_back(snapshot);
while (true)
{
- snapshot = snapshot.GetParent();
+ snapshot = snapshot.GetBuildsystemDirectoryParent();
if (snapshot.IsValid())
{
snapshots.push_back(snapshot);
@@ -622,7 +622,7 @@ void cmState::Snapshot::ComputeRelativePathTopBinary()
snapshots.push_back(snapshot);
while (true)
{
- snapshot = snapshot.GetParent();
+ snapshot = snapshot.GetBuildsystemDirectoryParent();
if (snapshot.IsValid())
{
snapshots.push_back(snapshot);
@@ -659,12 +659,23 @@ void cmState::Snapshot::ComputeRelativePathTopBinary()
}
}
-cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot)
+cmState::Snapshot cmState::CreateBaseSnapshot()
{
- if (!originSnapshot.IsValid())
- {
- originSnapshot.State = this;
- }
+ PositionType pos = 0;
+ this->ParentPositions.push_back(pos);
+ this->Locations.resize(1);
+ this->OutputLocations.resize(1);
+ this->CurrentSourceDirectoryComponents.resize(1);
+ this->CurrentBinaryDirectoryComponents.resize(1);
+ this->RelativePathTopSource.resize(1);
+ this->RelativePathTopBinary.resize(1);
+ return cmState::Snapshot(this, pos);
+}
+
+cmState::Snapshot
+cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot)
+{
+ assert(originSnapshot.IsValid());
PositionType pos = this->ParentPositions.size();
this->ParentPositions.push_back(originSnapshot.Position);
this->Locations.resize(this->Locations.size() + 1);
@@ -764,7 +775,7 @@ bool cmState::Snapshot::IsValid() const
return this->State ? true : false;
}
-cmState::Snapshot cmState::Snapshot::GetParent() const
+cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const
{
Snapshot snapshot;
if (!this->State || this->Position == 0)
diff --git a/Source/cmState.h b/Source/cmState.h
index 77a066f..60b024f 100644
--- a/Source/cmState.h
+++ b/Source/cmState.h
@@ -45,7 +45,7 @@ public:
void SetRelativePathTopBinary(const char* dir);
bool IsValid() const;
- Snapshot GetParent() const;
+ Snapshot GetBuildsystemDirectoryParent() const;
private:
void ComputeRelativePathTopSource();
@@ -57,7 +57,8 @@ public:
cmState::PositionType Position;
};
- Snapshot CreateSnapshot(Snapshot originSnapshot);
+ Snapshot CreateBaseSnapshot();
+ Snapshot CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot);
enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC,
UNINITIALIZED };
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 6cd005e..1096a1c 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -134,7 +134,7 @@ cmake::cmake()
this->Policies = new cmPolicies();
this->State = new cmState(this);
- this->CurrentSnapshot = this->State->CreateSnapshot(cmState::Snapshot());
+ this->CurrentSnapshot = this->State->CreateBaseSnapshot();
#ifdef __APPLE__
struct rlimit rlp;