cmState: Add Type for policy scope.
This commit is contained in:
parent
af0de01c6b
commit
348354333a
|
@ -189,6 +189,9 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator)
|
||||||
this->cmAtVarRegex.compile("(@[A-Za-z_0-9/.+-]+@)");
|
this->cmAtVarRegex.compile("(@[A-Za-z_0-9/.+-]+@)");
|
||||||
this->cmNamedCurly.compile("^[A-Za-z0-9/_.+-]+{");
|
this->cmNamedCurly.compile("^[A-Za-z0-9/_.+-]+{");
|
||||||
|
|
||||||
|
this->StateSnapshot = this->StateSnapshot.GetState()
|
||||||
|
->CreatePolicyScopeSnapshot(this->StateSnapshot);
|
||||||
|
|
||||||
// Protect the directory-level policies.
|
// Protect the directory-level policies.
|
||||||
this->PushPolicyBarrier();
|
this->PushPolicyBarrier();
|
||||||
|
|
||||||
|
@ -1705,6 +1708,8 @@ public:
|
||||||
this->Makefile->StateSnapshot.GetDirectory().GetCurrentSource();
|
this->Makefile->StateSnapshot.GetDirectory().GetCurrentSource();
|
||||||
currentStart += "/CMakeLists.txt";
|
currentStart += "/CMakeLists.txt";
|
||||||
this->Makefile->StateSnapshot.SetListFile(currentStart);
|
this->Makefile->StateSnapshot.SetListFile(currentStart);
|
||||||
|
this->Makefile->StateSnapshot = this->Makefile->StateSnapshot.GetState()
|
||||||
|
->CreatePolicyScopeSnapshot(this->Makefile->StateSnapshot);
|
||||||
this->Makefile->PushPolicyBarrier();
|
this->Makefile->PushPolicyBarrier();
|
||||||
this->Makefile->PushFunctionBlockerBarrier();
|
this->Makefile->PushFunctionBlockerBarrier();
|
||||||
|
|
||||||
|
@ -1722,6 +1727,8 @@ public:
|
||||||
{
|
{
|
||||||
this->Makefile->PopFunctionBlockerBarrier(this->ReportError);
|
this->Makefile->PopFunctionBlockerBarrier(this->ReportError);
|
||||||
this->Makefile->PopPolicyBarrier(this->ReportError);
|
this->Makefile->PopPolicyBarrier(this->ReportError);
|
||||||
|
this->Makefile->StateSnapshot = this->Makefile->StateSnapshot.GetState()
|
||||||
|
->Pop(this->Makefile->StateSnapshot);
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
this->GG->GetFileLockPool().PopFileScope();
|
this->GG->GetFileLockPool().PopFileScope();
|
||||||
#endif
|
#endif
|
||||||
|
@ -4841,6 +4848,8 @@ cmMakefile::PolicyPushPop::PolicyPushPop(cmMakefile* m, bool weak,
|
||||||
cmPolicies::PolicyMap const& pm):
|
cmPolicies::PolicyMap const& pm):
|
||||||
Makefile(m), ReportError(true)
|
Makefile(m), ReportError(true)
|
||||||
{
|
{
|
||||||
|
this->Makefile->StateSnapshot = this->Makefile->StateSnapshot.GetState()
|
||||||
|
->CreatePolicyScopeSnapshot(this->Makefile->StateSnapshot);
|
||||||
this->Makefile->PushPolicyBarrier();
|
this->Makefile->PushPolicyBarrier();
|
||||||
this->Makefile->PushPolicy(weak, pm);
|
this->Makefile->PushPolicy(weak, pm);
|
||||||
}
|
}
|
||||||
|
@ -4850,6 +4859,8 @@ cmMakefile::PolicyPushPop::~PolicyPushPop()
|
||||||
{
|
{
|
||||||
this->Makefile->PopPolicy();
|
this->Makefile->PopPolicy();
|
||||||
this->Makefile->PopPolicyBarrier(this->ReportError);
|
this->Makefile->PopPolicyBarrier(this->ReportError);
|
||||||
|
this->Makefile->StateSnapshot = this->Makefile->StateSnapshot.GetState()
|
||||||
|
->Pop(this->Makefile->StateSnapshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -809,6 +809,15 @@ cmState::CreateInlineListFileSnapshot(cmState::Snapshot originSnapshot,
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmState::Snapshot
|
||||||
|
cmState::CreatePolicyScopeSnapshot(cmState::Snapshot originSnapshot)
|
||||||
|
{
|
||||||
|
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
||||||
|
*originSnapshot.Position);
|
||||||
|
pos->SnapshotType = PolicyScopeType;
|
||||||
|
return cmState::Snapshot(this, pos);
|
||||||
|
}
|
||||||
|
|
||||||
cmState::Snapshot cmState::Pop(cmState::Snapshot originSnapshot)
|
cmState::Snapshot cmState::Pop(cmState::Snapshot originSnapshot)
|
||||||
{
|
{
|
||||||
PositionType pos = originSnapshot.Position;
|
PositionType pos = originSnapshot.Position;
|
||||||
|
@ -959,13 +968,22 @@ cmState::Snapshot cmState::Snapshot::GetCallStackParent() const
|
||||||
assert(this->Position != this->State->SnapshotData.Root());
|
assert(this->Position != this->State->SnapshotData.Root());
|
||||||
|
|
||||||
Snapshot snapshot;
|
Snapshot snapshot;
|
||||||
if (this->Position->SnapshotType == cmState::BuildsystemDirectoryType)
|
PositionType parentPos = this->Position;
|
||||||
|
while(parentPos->SnapshotType == cmState::PolicyScopeType)
|
||||||
|
{
|
||||||
|
++parentPos;
|
||||||
|
}
|
||||||
|
if (parentPos->SnapshotType == cmState::BuildsystemDirectoryType)
|
||||||
{
|
{
|
||||||
return snapshot;
|
return snapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
PositionType parentPos = this->Position;
|
|
||||||
++parentPos;
|
++parentPos;
|
||||||
|
while(parentPos->SnapshotType == cmState::PolicyScopeType)
|
||||||
|
{
|
||||||
|
++parentPos;
|
||||||
|
}
|
||||||
|
|
||||||
if (parentPos == this->State->SnapshotData.Root())
|
if (parentPos == this->State->SnapshotData.Root())
|
||||||
{
|
{
|
||||||
return snapshot;
|
return snapshot;
|
||||||
|
|
|
@ -37,7 +37,8 @@ public:
|
||||||
FunctionCallType,
|
FunctionCallType,
|
||||||
MacroCallType,
|
MacroCallType,
|
||||||
CallStackType,
|
CallStackType,
|
||||||
InlineListFileType
|
InlineListFileType,
|
||||||
|
PolicyScopeType
|
||||||
};
|
};
|
||||||
|
|
||||||
class Directory;
|
class Directory;
|
||||||
|
@ -148,6 +149,7 @@ public:
|
||||||
const std::string& entryPointCommand,
|
const std::string& entryPointCommand,
|
||||||
long entryPointLine,
|
long entryPointLine,
|
||||||
std::string const& fileName);
|
std::string const& fileName);
|
||||||
|
Snapshot CreatePolicyScopeSnapshot(Snapshot originSnapshot);
|
||||||
Snapshot Pop(Snapshot originSnapshot);
|
Snapshot Pop(Snapshot originSnapshot);
|
||||||
|
|
||||||
enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC,
|
enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC,
|
||||||
|
|
Loading…
Reference in New Issue