summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefile.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-07-18 10:28:49 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-07-25 12:53:05 (GMT)
commit6ed9c7e024d66d89ab303ba0d299fa4ee099f91b (patch)
tree4f4cd9ebcf0d88f47e88fe9fc1ae6a26a6096d8a /Source/cmMakefile.cxx
parent8f0a5d84e3fa894c687089d5f6dd6463c47968d8 (diff)
downloadCMake-6ed9c7e024d66d89ab303ba0d299fa4ee099f91b.zip
CMake-6ed9c7e024d66d89ab303ba0d299fa4ee099f91b.tar.gz
CMake-6ed9c7e024d66d89ab303ba0d299fa4ee099f91b.tar.bz2
cmState: Host buildsystem properties for directories.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r--Source/cmMakefile.cxx170
1 files changed, 36 insertions, 134 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 9575aff..c54f972 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -273,68 +273,36 @@ void cmMakefile::IssueMessage(cmake::MessageType t,
}
}
-template<typename Range, typename T>
-typename Range::const_iterator find_backwards(Range const& range, T t)
-{
- typename Range::const_reverse_iterator rend =
- std::find(range.rbegin(), range.rend(), t);
- return rend.base();
-}
-
-static const std::string cmPropertySentinal = std::string();
-
cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->IncludeDirectoriesEntries, cmPropertySentinal);
- return cmMakeRange(it, this->IncludeDirectoriesEntries.end());
+ return this->StateSnapshot.GetDirectory().GetIncludeDirectoriesEntries();
}
cmBacktraceRange cmMakefile::GetIncludeDirectoriesBacktraces() const
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->IncludeDirectoriesEntries, cmPropertySentinal);
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- this->IncludeDirectoriesEntryBacktraces.begin()
- + std::distance(this->IncludeDirectoriesEntries.begin(), it);
- return cmMakeRange(
- btIt, this->IncludeDirectoriesEntryBacktraces.end());
+ return this->StateSnapshot.GetDirectory()
+ .GetIncludeDirectoriesEntryBacktraces();
}
cmStringRange cmMakefile::GetCompileOptionsEntries() const
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileOptionsEntries, cmPropertySentinal);
- return cmMakeRange(it, this->CompileOptionsEntries.end());
+ return this->StateSnapshot.GetDirectory().GetCompileOptionsEntries();
}
cmBacktraceRange cmMakefile::GetCompileOptionsBacktraces() const
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileOptionsEntries, cmPropertySentinal);
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- this->CompileOptionsEntryBacktraces.begin()
- + std::distance(this->CompileOptionsEntries.begin(), it);
- return cmMakeRange(
- btIt, this->CompileOptionsEntryBacktraces.end());
+ return this->StateSnapshot.GetDirectory().GetCompileOptionsEntryBacktraces();
}
cmStringRange cmMakefile::GetCompileDefinitionsEntries() const
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileDefinitionsEntries, cmPropertySentinal);
- return cmMakeRange(it, this->CompileDefinitionsEntries.end());
+ return this->StateSnapshot.GetDirectory().GetCompileDefinitionsEntries();
}
cmBacktraceRange cmMakefile::GetCompileDefinitionsBacktraces() const
{
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- this->CompileDefinitionsEntryBacktraces.begin();
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileDefinitionsEntries, cmPropertySentinal)
- + std::distance(this->CompileDefinitionsEntries.begin(), it);
- return cmMakeRange(
- btIt, this->CompileDefinitionsEntryBacktraces.end());
+ return this->StateSnapshot.GetDirectory()
+ .GetCompileDefinitionsEntryBacktraces();
}
//----------------------------------------------------------------------------
@@ -1591,62 +1559,7 @@ void cmMakefile::InitializeFromParent(cmMakefile* parent)
this->AddDefinition("CMAKE_CURRENT_BINARY_DIR",
this->GetCurrentBinaryDirectory());
- {
- std::vector<std::string>::const_iterator it =
- find_backwards(parent->IncludeDirectoriesEntries, cmPropertySentinal);
- std::vector<std::string>::const_iterator begin =
- parent->IncludeDirectoriesEntries.begin();
- std::vector<std::string>::const_iterator end =
- parent->IncludeDirectoriesEntries.end();
- this->IncludeDirectoriesEntries.insert(
- this->IncludeDirectoriesEntries.end(), it, end);
-
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- parent->IncludeDirectoriesEntryBacktraces.begin()
- + std::distance(begin, it);
- std::vector<cmListFileBacktrace>::const_iterator btEnd =
- parent->IncludeDirectoriesEntryBacktraces.end();
- this->IncludeDirectoriesEntryBacktraces.insert(
- this->IncludeDirectoriesEntryBacktraces.end(), btIt, btEnd);
- }
-
- {
- std::vector<std::string>::const_iterator it =
- find_backwards(parent->CompileOptionsEntries, cmPropertySentinal);
- std::vector<std::string>::const_iterator begin =
- parent->CompileOptionsEntries.begin();
- std::vector<std::string>::const_iterator end =
- parent->CompileOptionsEntries.end();
- this->CompileOptionsEntries.insert(
- this->CompileOptionsEntries.end(), it, end);
-
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- parent->CompileOptionsEntryBacktraces.begin()
- + std::distance(begin, it);
- std::vector<cmListFileBacktrace>::const_iterator btEnd =
- parent->CompileOptionsEntryBacktraces.end();
- this->CompileOptionsEntryBacktraces.insert(
- this->CompileOptionsEntryBacktraces.end(), btIt, btEnd);
- }
-
- {
- std::vector<std::string>::const_iterator it =
- find_backwards(parent->CompileDefinitionsEntries, cmPropertySentinal);
- std::vector<std::string>::const_iterator begin =
- parent->CompileDefinitionsEntries.begin();
- std::vector<std::string>::const_iterator end =
- parent->CompileDefinitionsEntries.end();
- this->CompileDefinitionsEntries.insert(
- this->CompileDefinitionsEntries.end(), it, end);
-
- std::vector<cmListFileBacktrace>::const_iterator btIt =
- parent->CompileDefinitionsEntryBacktraces.begin()
- + std::distance(begin, it);
- std::vector<cmListFileBacktrace>::const_iterator btEnd =
- parent->CompileDefinitionsEntryBacktraces.end();
- this->CompileDefinitionsEntryBacktraces.insert(
- this->CompileDefinitionsEntryBacktraces.end(), btIt, btEnd);
- }
+ this->StateSnapshot.InitializeFromParent();
this->SystemIncludeDirectories = parent->SystemIncludeDirectories;
@@ -1990,17 +1903,18 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs,
return;
}
- std::vector<std::string>::iterator position =
- before ? this->IncludeDirectoriesEntries.begin()
- : this->IncludeDirectoriesEntries.end();
- std::vector<cmListFileBacktrace>::iterator btPos =
- this->IncludeDirectoriesEntryBacktraces.begin()
- + std::distance(this->IncludeDirectoriesEntries.begin(), position);
-
cmListFileBacktrace lfbt = this->GetBacktrace();
std::string entryString = cmJoin(incs, ";");
- this->IncludeDirectoriesEntries.insert(position, entryString);
- this->IncludeDirectoriesEntryBacktraces.insert(btPos, lfbt);
+ if (before)
+ {
+ this->StateSnapshot.GetDirectory()
+ .PrependIncludeDirectoriesEntry(entryString, lfbt);
+ }
+ else
+ {
+ this->StateSnapshot.GetDirectory()
+ .AppendIncludeDirectoriesEntry(entryString, lfbt);
+ }
// Property on each target:
for (cmTargets::iterator l = this->Targets.begin();
@@ -4226,41 +4140,35 @@ void cmMakefile::SetProperty(const std::string& prop, const char* value)
{
if (prop == "INCLUDE_DIRECTORIES")
{
- this->IncludeDirectoriesEntries.push_back(cmPropertySentinal);
- this->IncludeDirectoriesEntryBacktraces.push_back(cmListFileBacktrace());
if (!value)
{
+ this->StateSnapshot.GetDirectory().ClearIncludeDirectories();
return;
}
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->IncludeDirectoriesEntries.push_back(value);
- this->IncludeDirectoriesEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().SetIncludeDirectories(value, lfbt);
return;
}
if (prop == "COMPILE_OPTIONS")
{
- this->CompileOptionsEntries.push_back(cmPropertySentinal);
- this->CompileDefinitionsEntryBacktraces.push_back(cmListFileBacktrace());
if (!value)
{
+ this->StateSnapshot.GetDirectory().ClearCompileOptions();
return;
}
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->CompileOptionsEntries.push_back(value);
- this->CompileOptionsEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().SetCompileOptions(value, lfbt);
return;
}
if (prop == "COMPILE_DEFINITIONS")
{
- this->CompileDefinitionsEntries.push_back(cmPropertySentinal);
- this->CompileDefinitionsEntryBacktraces.push_back(cmListFileBacktrace());
if (!value)
{
+ this->StateSnapshot.GetDirectory().ClearCompileDefinitions();
return;
}
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->CompileDefinitionsEntries.push_back(value);
- this->CompileDefinitionsEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().SetCompileDefinitions(value, lfbt);
return;
}
@@ -4274,22 +4182,21 @@ void cmMakefile::AppendProperty(const std::string& prop,
if (prop == "INCLUDE_DIRECTORIES")
{
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->IncludeDirectoriesEntries.push_back(value);
- this->IncludeDirectoriesEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().AppendIncludeDirectoriesEntry(value,
+ lfbt);
return;
}
if (prop == "COMPILE_OPTIONS")
{
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->CompileOptionsEntries.push_back(value);
- this->CompileOptionsEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().AppendCompileOptionsEntry(value, lfbt);
return;
}
if (prop == "COMPILE_DEFINITIONS")
{
cmListFileBacktrace lfbt = this->GetBacktrace();
- this->CompileDefinitionsEntries.push_back(value);
- this->CompileDefinitionsEntryBacktraces.push_back(lfbt);
+ this->StateSnapshot.GetDirectory().AppendCompileDefinitionsEntry(value,
+ lfbt);
return;
}
@@ -4344,25 +4251,20 @@ const char *cmMakefile::GetProperty(const std::string& prop,
}
else if (prop == "INCLUDE_DIRECTORIES")
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->IncludeDirectoriesEntries, cmPropertySentinal);
- output = cmJoin(cmMakeRange(it, this->IncludeDirectoriesEntries.end()),
- ";");
+ output = cmJoin(this->StateSnapshot.GetDirectory()
+ .GetIncludeDirectoriesEntries(), ";");
return output.c_str();
}
else if (prop == "COMPILE_OPTIONS")
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileOptionsEntries, cmPropertySentinal);
- output = cmJoin(cmMakeRange(it, this->CompileOptionsEntries.end()), ";");
+ output = cmJoin(this->StateSnapshot.GetDirectory()
+ .GetCompileOptionsEntries(), ";");
return output.c_str();
}
else if (prop == "COMPILE_DEFINITIONS")
{
- std::vector<std::string>::const_iterator it =
- find_backwards(this->CompileDefinitionsEntries, cmPropertySentinal);
- output = cmJoin(cmMakeRange(it, this->CompileDefinitionsEntries.end()),
- ";");
+ output = cmJoin(this->StateSnapshot.GetDirectory()
+ .GetCompileDefinitionsEntries(), ";");
return output.c_str();
}