| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <set> | 6 #include <set> |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "tools/gn/commands.h" | 10 #include "tools/gn/commands.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 | 44 |
| 45 void RecursiveCollectDeps(const Target* target, std::set<Label>* result) { | 45 void RecursiveCollectDeps(const Target* target, std::set<Label>* result) { |
| 46 if (result->find(target->label()) != result->end()) | 46 if (result->find(target->label()) != result->end()) |
| 47 return; // Already did this target. | 47 return; // Already did this target. |
| 48 result->insert(target->label()); | 48 result->insert(target->label()); |
| 49 | 49 |
| 50 RecursiveCollectChildDeps(target, result); | 50 RecursiveCollectChildDeps(target, result); |
| 51 } | 51 } |
| 52 | 52 |
| 53 void RecursiveCollectChildDeps(const Target* target, std::set<Label>* result) { | 53 void RecursiveCollectChildDeps(const Target* target, std::set<Label>* result) { |
| 54 for (DepsIterator iter(target); !iter.done(); iter.Advance()) | 54 for (const auto& pair : target->GetDeps(Target::DEPS_ALL)) |
| 55 RecursiveCollectDeps(iter.target(), result); | 55 RecursiveCollectDeps(pair.ptr, result); |
| 56 } | 56 } |
| 57 | 57 |
| 58 // Prints dependencies of the given target (not the target itself). If the | 58 // Prints dependencies of the given target (not the target itself). If the |
| 59 // set is non-null, new targets encountered will be added to the set, and if | 59 // set is non-null, new targets encountered will be added to the set, and if |
| 60 // a dependency is in the set already, it will not be recused into. When the | 60 // a dependency is in the set already, it will not be recused into. When the |
| 61 // set is null, all dependencies will be printed. | 61 // set is null, all dependencies will be printed. |
| 62 void RecursivePrintDeps(const Target* target, | 62 void RecursivePrintDeps(const Target* target, |
| 63 const Label& default_toolchain, | 63 const Label& default_toolchain, |
| 64 std::set<const Target*>* seen_targets, | 64 std::set<const Target*>* seen_targets, |
| 65 int indent_level) { | 65 int indent_level) { |
| 66 // Combine all deps into one sorted list. | 66 // Combine all deps into one sorted list. |
| 67 std::vector<LabelTargetPair> sorted_deps; | 67 std::vector<LabelTargetPair> sorted_deps; |
| 68 for (DepsIterator iter(target); !iter.done(); iter.Advance()) | 68 for (const auto& pair : target->GetDeps(Target::DEPS_ALL)) |
| 69 sorted_deps.push_back(iter.pair()); | 69 sorted_deps.push_back(pair); |
| 70 std::sort(sorted_deps.begin(), sorted_deps.end(), | 70 std::sort(sorted_deps.begin(), sorted_deps.end(), |
| 71 LabelPtrLabelLess<Target>()); | 71 LabelPtrLabelLess<Target>()); |
| 72 | 72 |
| 73 std::string indent(indent_level * 2, ' '); | 73 std::string indent(indent_level * 2, ' '); |
| 74 for (size_t i = 0; i < sorted_deps.size(); i++) { | 74 for (size_t i = 0; i < sorted_deps.size(); i++) { |
| 75 const Target* cur_dep = sorted_deps[i].ptr; | 75 const Target* cur_dep = sorted_deps[i].ptr; |
| 76 | 76 |
| 77 OutputString(indent + | 77 OutputString(indent + |
| 78 cur_dep->label().GetUserVisibleName(default_toolchain)); | 78 cur_dep->label().GetUserVisibleName(default_toolchain)); |
| 79 bool print_children = true; | 79 bool print_children = true; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 for (std::set<Label>::iterator i = all_deps.begin(); | 133 for (std::set<Label>::iterator i = all_deps.begin(); |
| 134 i != all_deps.end(); ++i) | 134 i != all_deps.end(); ++i) |
| 135 deps.push_back(*i); | 135 deps.push_back(*i); |
| 136 } else { | 136 } else { |
| 137 // Show direct dependencies only. | 137 // Show direct dependencies only. |
| 138 if (display_header) { | 138 if (display_header) { |
| 139 OutputString( | 139 OutputString( |
| 140 "\nDirect dependencies " | 140 "\nDirect dependencies " |
| 141 "(try also \"--all\", \"--tree\", or even \"--all --tree\"):\n"); | 141 "(try also \"--all\", \"--tree\", or even \"--all --tree\"):\n"); |
| 142 } | 142 } |
| 143 for (DepsIterator iter(target); !iter.done(); iter.Advance()) | 143 for (const auto& pair : target->GetDeps(Target::DEPS_ALL)) |
| 144 deps.push_back(iter.label()); | 144 deps.push_back(pair.label); |
| 145 } | 145 } |
| 146 | 146 |
| 147 std::sort(deps.begin(), deps.end()); | 147 std::sort(deps.begin(), deps.end()); |
| 148 for (size_t i = 0; i < deps.size(); i++) | 148 for (size_t i = 0; i < deps.size(); i++) |
| 149 OutputString(" " + deps[i].GetUserVisibleName(toolchain_label) + "\n"); | 149 OutputString(" " + deps[i].GetUserVisibleName(toolchain_label) + "\n"); |
| 150 } | 150 } |
| 151 | 151 |
| 152 void PrintForwardDependentConfigsFrom(const Target* target, | 152 void PrintForwardDependentConfigsFrom(const Target* target, |
| 153 bool display_header) { | 153 bool display_header) { |
| 154 if (target->forward_dependent_configs().empty()) | 154 if (target->forward_dependent_configs().empty()) |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 // so always display them, even for groups and such. | 702 // so always display them, even for groups and such. |
| 703 PrintLibs(target, true); | 703 PrintLibs(target, true); |
| 704 PrintLibDirs(target, true); | 704 PrintLibDirs(target, true); |
| 705 | 705 |
| 706 PrintDeps(target, true); | 706 PrintDeps(target, true); |
| 707 | 707 |
| 708 return 0; | 708 return 0; |
| 709 } | 709 } |
| 710 | 710 |
| 711 } // namespace commands | 711 } // namespace commands |
| OLD | NEW |