Index: trunk/src/tools/gn/target.cc |
=================================================================== |
--- trunk/src/tools/gn/target.cc (revision 214322) |
+++ trunk/src/tools/gn/target.cc (working copy) |
@@ -1,94 +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/target.h" |
- |
-#include "base/bind.h" |
-#include "tools/gn/scheduler.h" |
- |
-namespace { |
- |
-void TargetResolvedThunk(const base::Callback<void(const Target*)>& cb, |
- const Target* t) { |
- cb.Run(t); |
-} |
- |
-} // namespace |
- |
-Target::Target(const Settings* settings, const Label& label) |
- : Item(label), |
- settings_(settings), |
- output_type_(NONE), |
- generated_(false), |
- generator_function_(NULL) { |
-} |
- |
-Target::~Target() { |
-} |
- |
-Target* Target::AsTarget() { |
- return this; |
-} |
- |
-const Target* Target::AsTarget() const { |
- return this; |
-} |
- |
-void Target::OnResolved() { |
- // Gather info from our dependents we need. |
- for (size_t dep = 0; dep < deps_.size(); dep++) { |
- // All dependent configs get pulled to us, and to our dependents. |
- const std::vector<const Config*>& all = |
- deps_[dep]->all_dependent_configs(); |
- for (size_t i = 0; i < all.size(); i++) { |
- configs_.push_back(all[i]); |
- all_dependent_configs_.push_back(all[i]); |
- } |
- |
- // Direct dependent configs get pulled only to us. |
- const std::vector<const Config*>& direct = |
- deps_[dep]->direct_dependent_configs(); |
- for (size_t i = 0; i < direct.size(); i++) |
- configs_.push_back(direct[i]); |
- |
- // Direct dependent libraries. |
- if (deps_[dep]->output_type() == STATIC_LIBRARY || |
- deps_[dep]->output_type() == SHARED_LIBRARY || |
- deps_[dep]->output_type() == LOADABLE_MODULE) |
- inherited_libraries_.insert(deps_[dep]); |
- |
- // Inherited libraries. DOn't pull transitive libraries from shared |
- // libraries, since obviously those shouldn't be linked directly into |
- // later deps unless explicitly specified. |
- if (deps_[dep]->output_type() != SHARED_LIBRARY && |
- deps_[dep]->output_type() != LOADABLE_MODULE && |
- deps_[dep]->output_type() != EXECUTABLE) { |
- const std::set<const Target*> inherited = |
- deps_[dep]->inherited_libraries(); |
- for (std::set<const Target*>::const_iterator i = inherited.begin(); |
- i != inherited.end(); ++i) |
- inherited_libraries_.insert(*i); |
- } |
- } |
- |
- if (!settings_->build_settings()->target_resolved_callback().is_null()) { |
- g_scheduler->ScheduleWork(base::Bind(&TargetResolvedThunk, |
- settings_->build_settings()->target_resolved_callback(), |
- this)); |
- } |
-} |
- |
-bool Target::HasBeenGenerated() const { |
- return generated_; |
-} |
- |
-void Target::SetGenerated(const Token* token) { |
- DCHECK(!generated_); |
- generated_ = true; |
- generator_function_ = token; |
-} |
- |
-bool Target::IsLinkable() const { |
- return output_type_ == STATIC_LIBRARY || output_type_ == SHARED_LIBRARY; |
-} |