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 <map> | 5 #include <map> |
6 #include <set> | 6 #include <set> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "tools/gn/commands.h" | 9 #include "tools/gn/commands.h" |
10 #include "tools/gn/filesystem_utils.h" | 10 #include "tools/gn/filesystem_utils.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 // Maps targets to the list of targets that depend on them. | 24 // Maps targets to the list of targets that depend on them. |
25 typedef std::multimap<const Target*, const Target*> DepMap; | 25 typedef std::multimap<const Target*, const Target*> DepMap; |
26 | 26 |
27 // Populates the reverse dependency map for the targets in the Setup. | 27 // Populates the reverse dependency map for the targets in the Setup. |
28 void FillDepMap(Setup* setup, DepMap* dep_map) { | 28 void FillDepMap(Setup* setup, DepMap* dep_map) { |
29 std::vector<const Target*> targets = | 29 std::vector<const Target*> targets = |
30 setup->builder()->GetAllResolvedTargets(); | 30 setup->builder()->GetAllResolvedTargets(); |
31 | 31 |
32 for (size_t target_i = 0; target_i < targets.size(); target_i++) { | 32 for (size_t target_i = 0; target_i < targets.size(); target_i++) { |
33 const Target* target = targets[target_i]; | 33 for (DepsIterator iter(targets[target_i]); !iter.done(); iter.Advance()) |
34 | 34 dep_map->insert(std::make_pair(iter.target(), targets[target_i])); |
35 // Add all deps to the map. | |
36 const LabelTargetVector& deps = target->deps(); | |
37 for (size_t dep_i = 0; dep_i < deps.size(); dep_i++) | |
38 dep_map->insert(std::make_pair(deps[dep_i].ptr, target)); | |
39 | |
40 // Include data deps as well. | |
41 const LabelTargetVector& datadeps = target->datadeps(); | |
42 for (size_t dep_i = 0; dep_i < datadeps.size(); dep_i++) | |
43 dep_map->insert(std::make_pair(datadeps[dep_i].ptr, target)); | |
44 } | 35 } |
45 } | 36 } |
46 | 37 |
47 // Returns the file path generating this item. | 38 // Returns the file path generating this item. |
48 base::FilePath FilePathForItem(const Item* item) { | 39 base::FilePath FilePathForItem(const Item* item) { |
49 return item->defined_from()->GetRange().begin().file()->physical_name(); | 40 return item->defined_from()->GetRange().begin().file()->physical_name(); |
50 } | 41 } |
51 | 42 |
52 // Prints the targets which are the result of a query. This list is sorted | 43 // Prints the targets which are the result of a query. This list is sorted |
53 // and, if as_files is set, the unique filenames matching those targets will | 44 // and, if as_files is set, the unique filenames matching those targets will |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 cur_dep != dep_end; cur_dep++) | 274 cur_dep != dep_end; cur_dep++) |
284 results.insert(cur_dep->second); | 275 results.insert(cur_dep->second); |
285 } | 276 } |
286 OutputResultSet(results, files); | 277 OutputResultSet(results, files); |
287 } | 278 } |
288 | 279 |
289 return 0; | 280 return 0; |
290 } | 281 } |
291 | 282 |
292 } // namespace commands | 283 } // namespace commands |
OLD | NEW |