diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-07-18 10:28:49 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-07-25 12:53:05 (GMT) |
commit | 6ed9c7e024d66d89ab303ba0d299fa4ee099f91b (patch) | |
tree | 4f4cd9ebcf0d88f47e88fe9fc1ae6a26a6096d8a /Source/cmMakefile.cxx | |
parent | 8f0a5d84e3fa894c687089d5f6dd6463c47968d8 (diff) | |
download | CMake-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.cxx | 170 |
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(); } |