Index: tools/gn/item_node.cc |
diff --git a/tools/gn/item_node.cc b/tools/gn/item_node.cc |
deleted file mode 100644 |
index 2143b06c3d5c80ac7128affbff2251e6229a4167..0000000000000000000000000000000000000000 |
--- a/tools/gn/item_node.cc |
+++ /dev/null |
@@ -1,120 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "tools/gn/item_node.h" |
- |
-#include <algorithm> |
- |
-#include "base/callback.h" |
-#include "base/logging.h" |
-#include "tools/gn/build_settings.h" |
-#include "tools/gn/item.h" |
- |
-ItemNode::ItemNode(Item* i) |
- : state_(REFERENCED), |
- item_(i), |
- should_generate_(false) { |
- item_->set_item_node(this); |
-} |
- |
-ItemNode::~ItemNode() { |
-} |
- |
-bool ItemNode::SetShouldGenerate(const BuildSettings* build_settings, |
- Err* err) { |
- if (should_generate_) |
- return true; |
- should_generate_ = true; |
- |
- if (state_ == DEFINED) { |
- if (!ScheduleDepsLoad(build_settings, err)) |
- return false; |
- } else if (state_ == RESOLVED) { |
- // The item may have been resolved even if we didn't set the generate bit |
- // if all of its deps were loaded some other way. In this case, we need |
- // to run the closure which we skipped when it became resolved. |
- if (!resolved_closure_.is_null()) |
- resolved_closure_.Run(); |
- } |
- |
- // Pass the generate bit to all deps. |
- for (ItemNodeMap::iterator i = direct_dependencies_.begin(); |
- i != direct_dependencies_.end(); ++i) { |
- if (!i->first->SetShouldGenerate(build_settings, err)) |
- return false; |
- } |
- return true; |
-} |
- |
-bool ItemNode::AddDependency(const BuildSettings* build_settings, |
- const LocationRange& specified_from_here, |
- ItemNode* node, |
- Err* err) { |
- // Can't add more deps once it's been defined. |
- DCHECK(state_ == REFERENCED); |
- |
- if (direct_dependencies_.find(node) != direct_dependencies_.end()) |
- return true; // Already have this dep. |
- |
- direct_dependencies_[node] = specified_from_here; |
- |
- if (node->state() != RESOLVED) { |
- // Wire up the pending resolution info. |
- unresolved_dependencies_[node] = specified_from_here; |
- node->waiting_on_resolution_[this] = specified_from_here; |
- } |
- |
- if (should_generate_) { |
- if (!node->SetShouldGenerate(build_settings, err)) |
- return false; |
- } |
- return true; |
-} |
- |
-void ItemNode::MarkDirectDependencyResolved(ItemNode* node) { |
- DCHECK(unresolved_dependencies_.find(node) != unresolved_dependencies_.end()); |
- unresolved_dependencies_.erase(node); |
-} |
- |
-void ItemNode::SwapOutWaitingDependencySet(ItemNodeMap* out_map) { |
- waiting_on_resolution_.swap(*out_map); |
- DCHECK(waiting_on_resolution_.empty()); |
-} |
- |
-bool ItemNode::SetDefined(const BuildSettings* build_settings, Err* err) { |
- DCHECK(state_ == REFERENCED); |
- state_ = DEFINED; |
- |
- if (should_generate_) |
- return ScheduleDepsLoad(build_settings, err); |
- return true; |
-} |
- |
-void ItemNode::SetResolved() { |
- DCHECK(state_ != RESOLVED); |
- state_ = RESOLVED; |
- |
- if (should_generate_ && !resolved_closure_.is_null()) |
- resolved_closure_.Run(); |
-} |
- |
-bool ItemNode::ScheduleDepsLoad(const BuildSettings* build_settings, |
- Err* err) { |
- DCHECK(state_ == DEFINED); |
- DCHECK(should_generate_); // Shouldn't be requesting deps for ungenerated |
- // items. |
- |
- for (ItemNodeMap::const_iterator i = unresolved_dependencies_.begin(); |
- i != unresolved_dependencies_.end(); ++i) { |
- Label toolchain_label = i->first->item()->label().GetToolchainLabel(); |
- SourceDir dir_to_load = i->first->item()->label().dir(); |
- |
- if (!build_settings->toolchain_manager().ScheduleInvocationLocked( |
- i->second, toolchain_label, dir_to_load, err)) |
- return false; |
- } |
- |
- state_ = PENDING_DEPS; |
- return true; |
-} |