cmState: Record the end position of each directory.
At generate time, variables and policies are determined from the end state of the cmMakefile.
This commit is contained in:
parent
65a5e0c671
commit
52dbe654de
|
@ -34,6 +34,8 @@ struct cmState::SnapshotDataType
|
||||||
|
|
||||||
struct cmState::BuildsystemDirectoryStateType
|
struct cmState::BuildsystemDirectoryStateType
|
||||||
{
|
{
|
||||||
|
cmState::PositionType DirectoryEnd;
|
||||||
|
|
||||||
std::string Location;
|
std::string Location;
|
||||||
std::string OutputLocation;
|
std::string OutputLocation;
|
||||||
|
|
||||||
|
@ -239,6 +241,9 @@ cmState::Snapshot cmState::Reset()
|
||||||
this->GlobalProperties.clear();
|
this->GlobalProperties.clear();
|
||||||
this->PropertyDefinitions.clear();
|
this->PropertyDefinitions.clear();
|
||||||
|
|
||||||
|
PositionType pos = this->SnapshotData.Truncate();
|
||||||
|
this->ExecutionListFiles.Truncate();
|
||||||
|
|
||||||
{
|
{
|
||||||
cmLinkedTree<BuildsystemDirectoryStateType>::iterator it =
|
cmLinkedTree<BuildsystemDirectoryStateType>::iterator it =
|
||||||
this->BuildsystemDirectory.Truncate();
|
this->BuildsystemDirectory.Truncate();
|
||||||
|
@ -248,9 +253,8 @@ cmState::Snapshot cmState::Reset()
|
||||||
it->CompileDefinitionsBacktraces.clear();
|
it->CompileDefinitionsBacktraces.clear();
|
||||||
it->CompileOptions.clear();
|
it->CompileOptions.clear();
|
||||||
it->CompileOptionsBacktraces.clear();
|
it->CompileOptionsBacktraces.clear();
|
||||||
|
it->DirectoryEnd = pos;
|
||||||
}
|
}
|
||||||
PositionType pos = this->SnapshotData.Truncate();
|
|
||||||
this->ExecutionListFiles.Truncate();
|
|
||||||
|
|
||||||
this->DefineProperty
|
this->DefineProperty
|
||||||
("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY,
|
("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY,
|
||||||
|
@ -721,6 +725,7 @@ cmState::Snapshot cmState::CreateBaseSnapshot()
|
||||||
pos->IncludeDirectoryPosition = 0;
|
pos->IncludeDirectoryPosition = 0;
|
||||||
pos->CompileDefinitionsPosition = 0;
|
pos->CompileDefinitionsPosition = 0;
|
||||||
pos->CompileOptionsPosition = 0;
|
pos->CompileOptionsPosition = 0;
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -741,6 +746,7 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot,
|
||||||
pos->ExecutionListFile =
|
pos->ExecutionListFile =
|
||||||
this->ExecutionListFiles.Extend(
|
this->ExecutionListFiles.Extend(
|
||||||
originSnapshot.Position->ExecutionListFile);
|
originSnapshot.Position->ExecutionListFile);
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -757,6 +763,7 @@ cmState::CreateFunctionCallSnapshot(cmState::Snapshot originSnapshot,
|
||||||
pos->SnapshotType = FunctionCallType;
|
pos->SnapshotType = FunctionCallType;
|
||||||
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
||||||
originSnapshot.Position->ExecutionListFile, fileName);
|
originSnapshot.Position->ExecutionListFile, fileName);
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -774,6 +781,7 @@ cmState::CreateMacroCallSnapshot(cmState::Snapshot originSnapshot,
|
||||||
pos->SnapshotType = MacroCallType;
|
pos->SnapshotType = MacroCallType;
|
||||||
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
||||||
originSnapshot.Position->ExecutionListFile, fileName);
|
originSnapshot.Position->ExecutionListFile, fileName);
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -790,6 +798,7 @@ cmState::CreateCallStackSnapshot(cmState::Snapshot originSnapshot,
|
||||||
pos->SnapshotType = CallStackType;
|
pos->SnapshotType = CallStackType;
|
||||||
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
||||||
originSnapshot.Position->ExecutionListFile, fileName);
|
originSnapshot.Position->ExecutionListFile, fileName);
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -806,6 +815,7 @@ cmState::CreateInlineListFileSnapshot(cmState::Snapshot originSnapshot,
|
||||||
pos->SnapshotType = InlineListFileType;
|
pos->SnapshotType = InlineListFileType;
|
||||||
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
pos->ExecutionListFile = this->ExecutionListFiles.Extend(
|
||||||
originSnapshot.Position->ExecutionListFile, fileName);
|
originSnapshot.Position->ExecutionListFile, fileName);
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -815,6 +825,7 @@ cmState::CreatePolicyScopeSnapshot(cmState::Snapshot originSnapshot)
|
||||||
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
||||||
*originSnapshot.Position);
|
*originSnapshot.Position);
|
||||||
pos->SnapshotType = PolicyScopeType;
|
pos->SnapshotType = PolicyScopeType;
|
||||||
|
pos->BuildSystemDirectory->DirectoryEnd = pos;
|
||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,6 +840,7 @@ cmState::Snapshot cmState::Pop(cmState::Snapshot originSnapshot)
|
||||||
prevPos->BuildSystemDirectory->CompileDefinitions.size();
|
prevPos->BuildSystemDirectory->CompileDefinitions.size();
|
||||||
prevPos->CompileOptionsPosition =
|
prevPos->CompileOptionsPosition =
|
||||||
prevPos->BuildSystemDirectory->CompileOptions.size();
|
prevPos->BuildSystemDirectory->CompileOptions.size();
|
||||||
|
prevPos->BuildSystemDirectory->DirectoryEnd = prevPos;
|
||||||
|
|
||||||
return Snapshot(this, prevPos);
|
return Snapshot(this, prevPos);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue