Ninja
|
ImplicitDepLoader loads implicit dependencies, as referenced via the "depfile" attribute in build files. More...
#include <graph.h>
Public Member Functions | |
DepsLog * | deps_log () const |
ImplicitDepLoader (State *state, DepsLog *deps_log, DiskInterface *disk_interface) | |
bool | LoadDeps (Edge *edge, TimeStamp *mtime, string *err) |
Load implicit dependencies for edge. | |
Private Member Functions | |
void | CreatePhonyInEdge (Node *node) |
If we don't have a edge that generates this input already, create one; this makes us not abort if the input is missing, but instead will rebuild in that circumstance. | |
bool | LoadDepFile (Edge *edge, const string &path, string *err) |
Load implicit dependencies for edge from a depfile attribute. | |
bool | LoadDepsFromLog (Edge *edge, TimeStamp *mtime, string *err) |
Load implicit dependencies for edge from the DepsLog. | |
vector< Node * >::iterator | PreallocateSpace (Edge *edge, int count) |
Preallocate count spaces in the input array on edge, returning an iterator pointing at the first new space. | |
Private Attributes | |
DepsLog * | deps_log_ |
DiskInterface * | disk_interface_ |
State * | state_ |
ImplicitDepLoader loads implicit dependencies, as referenced via the "depfile" attribute in build files.
ImplicitDepLoader::ImplicitDepLoader | ( | State * | state, |
DepsLog * | deps_log, | ||
DiskInterface * | disk_interface | ||
) | [inline] |
void ImplicitDepLoader::CreatePhonyInEdge | ( | Node * | node | ) | [private] |
If we don't have a edge that generates this input already, create one; this makes us not abort if the input is missing, but instead will rebuild in that circumstance.
Definition at line 435 of file graph.cc.
References State::AddEdge(), Node::in_edge(), State::kPhonyRule, Edge::outputs_, Edge::outputs_ready_, Node::set_in_edge(), and state_.
Referenced by LoadDepFile(), and LoadDepsFromLog().
DepsLog* ImplicitDepLoader::deps_log | ( | ) | const [inline] |
bool ImplicitDepLoader::LoadDepFile | ( | Edge * | edge, |
const string & | path, | ||
string * | err | ||
) | [private] |
Load implicit dependencies for edge from a depfile attribute.
Definition at line 362 of file graph.cc.
References Node::AddOutEdge(), StringPiece::AsString(), CanonicalizePath(), CreatePhonyInEdge(), disk_interface_, State::GetNode(), DepfileParser::ins_, METRIC_RECORD, DepfileParser::out_, Edge::outputs_, DepfileParser::Parse(), Node::path(), PreallocateSpace(), DiskInterface::ReadFile(), and state_.
Referenced by LoadDeps().
bool ImplicitDepLoader::LoadDeps | ( | Edge * | edge, |
TimeStamp * | mtime, | ||
string * | err | ||
) |
Load implicit dependencies for edge.
May fill in mtime with the timestamp of the loaded information.
Definition at line 335 of file graph.cc.
References EXPLAIN, Edge::GetBinding(), LoadDepFile(), LoadDepsFromLog(), and Edge::outputs_.
Referenced by DependencyScan::RecomputeDirty().
bool ImplicitDepLoader::LoadDepsFromLog | ( | Edge * | edge, |
TimeStamp * | mtime, | ||
string * | err | ||
) | [private] |
Load implicit dependencies for edge from the DepsLog.
Definition at line 409 of file graph.cc.
References Node::AddOutEdge(), CreatePhonyInEdge(), deps_log_, DepsLog::GetDeps(), DepsLog::Deps::mtime, DepsLog::Deps::node_count, DepsLog::Deps::nodes, Edge::outputs_, and PreallocateSpace().
Referenced by LoadDeps().
vector< Node * >::iterator ImplicitDepLoader::PreallocateSpace | ( | Edge * | edge, |
int | count | ||
) | [private] |
Preallocate count spaces in the input array on edge, returning an iterator pointing at the first new space.
Definition at line 427 of file graph.cc.
References Edge::implicit_deps_, Edge::inputs_, and Edge::order_only_deps_.
Referenced by LoadDepFile(), and LoadDepsFromLog().
DepsLog* ImplicitDepLoader::deps_log_ [private] |
Definition at line 224 of file graph.h.
Referenced by LoadDepsFromLog().
DiskInterface* ImplicitDepLoader::disk_interface_ [private] |
Definition at line 223 of file graph.h.
Referenced by LoadDepFile().
State* ImplicitDepLoader::state_ [private] |
Definition at line 222 of file graph.h.
Referenced by CreatePhonyInEdge(), and LoadDepFile().