Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: tools/gn/command_desc.cc

Issue 937003002: Enhance GN introspection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/command_desc.cc
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index 5c2e2d4bbb954d78550a7cf886c23bb02759bd6a..ecb2fad30404337580638740ee48a252628fbcc2 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -40,17 +40,20 @@ std::string FormatSourceDir(const SourceDir& dir) {
return dir.value();
}
-void RecursiveCollectChildDeps(const Target* target, std::set<Label>* result);
+void RecursiveCollectChildDeps(const Target* target,
+ std::set<const Target*>* result);
-void RecursiveCollectDeps(const Target* target, std::set<Label>* result) {
- if (result->find(target->label()) != result->end())
+void RecursiveCollectDeps(const Target* target,
+ std::set<const Target*>* result) {
+ if (result->find(target) != result->end())
return; // Already did this target.
- result->insert(target->label());
+ result->insert(target);
RecursiveCollectChildDeps(target, result);
}
-void RecursiveCollectChildDeps(const Target* target, std::set<Label>* result) {
+void RecursiveCollectChildDeps(const Target* target,
+ std::set<const Target*>* result) {
for (const auto& pair : target->GetDeps(Target::DEPS_ALL))
RecursiveCollectDeps(pair.ptr, result);
}
@@ -122,17 +125,16 @@ void PrintDeps(const Target* target, bool display_header) {
}
// Collect the deps to display.
- std::vector<Label> deps;
if (cmdline->HasSwitch("all")) {
// Show all dependencies.
if (display_header)
OutputString("\nAll recursive dependencies:\n");
- std::set<Label> all_deps;
+ std::set<const Target*> all_deps;
RecursiveCollectChildDeps(target, &all_deps);
- for (const auto& dep : all_deps)
- deps.push_back(dep);
+ FilterAndPrintTargetSet(display_header, all_deps);
} else {
+ std::vector<const Target*> deps;
// Show direct dependencies only.
if (display_header) {
OutputString(
@@ -140,12 +142,10 @@ void PrintDeps(const Target* target, bool display_header) {
"(try also \"--all\", \"--tree\", or even \"--all --tree\"):\n");
}
for (const auto& pair : target->GetDeps(Target::DEPS_ALL))
- deps.push_back(pair.label);
+ deps.push_back(pair.ptr);
+ std::sort(deps.begin(), deps.end());
+ FilterAndPrintTargets(display_header, &deps);
}
-
- std::sort(deps.begin(), deps.end());
- for (const auto& dep : deps)
- OutputString(" " + dep.GetUserVisibleName(toolchain_label) + "\n");
}
void PrintForwardDependentConfigsFrom(const Target* target,
@@ -449,14 +449,13 @@ const char kDesc[] = "desc";
const char kDesc_HelpShort[] =
"desc: Show lots of insightful information about a target.";
const char kDesc_Help[] =
- "gn desc <out_dir> <target label> [<what to show>]\n"
- " [--blame] [--all | --tree]\n"
+ "gn desc <out_dir> <target label> [<what to show>] [--blame]\n"
"\n"
" Displays information about a given labeled target for the given build.\n"
" The build parameters will be taken for the build in the given\n"
" <out_dir>.\n"
"\n"
- "Possibilities for <what to show>:\n"
+ "Possibilities for <what to show>\n"
" (If unspecified an overall summary will be displayed.)\n"
"\n"
" sources\n"
@@ -487,13 +486,9 @@ const char kDesc_Help[] =
" via dependencies specifying \"all\" or \"direct\" dependent\n"
" configs.\n"
"\n"
- " deps [--all | --tree]\n"
- " Show immediate (or, when \"--all\" or \"--tree\" is specified,\n"
- " recursive) dependencies of the given target. \"--tree\" shows them\n"
- " in a tree format with duplicates elided (noted by \"...\").\n"
- " \"--all\" shows them sorted alphabetically. Using both flags will\n"
- " print a tree with no omissions. The \"deps\", \"public_deps\", and\n"
- " \"data_deps\" will all be included.\n"
+ " deps\n"
+ " Show immediate or recursive dependencies. See below for flags that\n"
+ " control deps printing.\n"
"\n"
" public_configs\n"
" all_dependent_configs\n"
@@ -529,14 +524,39 @@ const char kDesc_Help[] =
" for libs and lib_dirs because those are inherited and are more\n"
" complicated to figure out the blame (patches welcome).\n"
"\n"
- "Note:\n"
+ "Flags that control how deps are printed\n"
+ "\n"
+ " --all\n"
+ " Collects all recursive dependencies and prints a sorted flat list.\n"
+ " Also usable with --tree (see below).\n"
+ "\n"
+ TARGET_PRINTING_MODE_COMMAND_LINE_HELP
+ "\n"
+ TARGET_TESTONLY_FILTER_COMMAND_LINE_HELP
+ "\n"
+ " --tree\n"
+ " Print a dependency tree. By default, duplicates will be elided\n"
+ " with \"...\" but when --all and -tree are used together, no\n"
+ " eliding will be performed.\n"
+ "\n"
+ " The \"deps\", \"public_deps\", and \"data_deps\" will all be\n"
+ " included in the tree.\n"
+ "\n"
+ " Tree output can not be used with the filtering or output flags:\n"
+ " --as, --type, --testonly.\n"
+ "\n"
+ TARGET_TYPE_FILTER_COMMAND_LINE_HELP
+ "\n"
+ "Note\n"
+ "\n"
" This command will show the full name of directories and source files,\n"
" but when directories and source paths are written to the build file,\n"
" they will be adjusted to be relative to the build directory. So the\n"
" values for paths displayed by this command won't match (but should\n"
" mean the same thing).\n"
"\n"
- "Examples:\n"
+ "Examples\n"
+ "\n"
" gn desc out/Debug //base:base\n"
" Summarizes the given target.\n"
"\n"
« no previous file with comments | « tools/gn/command_check.cc ('k') | tools/gn/command_ls.cc » ('j') | tools/gn/command_ls.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698