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

Side by Side Diff: tools/gn/command_desc.cc

Issue 306013007: Minor improvements to GN's "desc" output. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/gn/visibility.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 const Label& default_toolchain, 62 const Label& default_toolchain,
63 int indent_level) { 63 int indent_level) {
64 LabelTargetVector sorted_deps = target->deps(); 64 LabelTargetVector sorted_deps = target->deps();
65 const LabelTargetVector& datadeps = target->datadeps(); 65 const LabelTargetVector& datadeps = target->datadeps();
66 sorted_deps.insert(sorted_deps.end(), datadeps.begin(), datadeps.end()); 66 sorted_deps.insert(sorted_deps.end(), datadeps.begin(), datadeps.end());
67 std::sort(sorted_deps.begin(), sorted_deps.end(), 67 std::sort(sorted_deps.begin(), sorted_deps.end(),
68 LabelPtrLabelLess<Target>()); 68 LabelPtrLabelLess<Target>());
69 69
70 std::string indent(indent_level * 2, ' '); 70 std::string indent(indent_level * 2, ' ');
71 for (size_t i = 0; i < sorted_deps.size(); i++) { 71 for (size_t i = 0; i < sorted_deps.size(); i++) {
72 // Don't print groups. Groups are flattened such that the deps of the
73 // group are added directly to the target that depended on the group.
74 // Printing and recursing into groups here will cause such targets to be
75 // duplicated.
76 //
77 // It would be much more intuitive to do the opposite and not display the
78 // deps that were copied from the group to the target and instead display
79 // the group, but the source of those dependencies is not tracked.
80 if (sorted_deps[i].ptr->output_type() == Target::GROUP)
81 continue;
82
72 OutputString(indent + 83 OutputString(indent +
73 sorted_deps[i].label.GetUserVisibleName(default_toolchain) + "\n"); 84 sorted_deps[i].label.GetUserVisibleName(default_toolchain) + "\n");
74 RecursivePrintDeps(sorted_deps[i].ptr, default_toolchain, indent_level + 1); 85 RecursivePrintDeps(sorted_deps[i].ptr, default_toolchain, indent_level + 1);
75 } 86 }
76 } 87 }
77 88
78 void PrintDeps(const Target* target, bool display_header) { 89 void PrintDeps(const Target* target, bool display_header) {
79 const CommandLine* cmdline = CommandLine::ForCurrentProcess(); 90 const CommandLine* cmdline = CommandLine::ForCurrentProcess();
80 Label toolchain_label = target->label().GetToolchainLabel(); 91 Label toolchain_label = target->label().GetToolchainLabel();
81 92
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 if (libs.empty()) 149 if (libs.empty())
139 return; 150 return;
140 151
141 if (display_header) 152 if (display_header)
142 OutputString("\nlibs\n"); 153 OutputString("\nlibs\n");
143 154
144 for (size_t i = 0; i < libs.size(); i++) 155 for (size_t i = 0; i < libs.size(); i++)
145 OutputString(" " + libs[i] + "\n"); 156 OutputString(" " + libs[i] + "\n");
146 } 157 }
147 158
159 void PrintPublic(const Target* target, bool display_header) {
160 if (display_header)
161 OutputString("\npublic\n");
162
163 if (target->all_headers_public()) {
164 OutputString(" [All headers listed in the sources are public.]\n");
165 return;
166 }
167
168 Target::FileList public_headers = target->public_headers();
169 std::sort(public_headers.begin(), public_headers.end());
170 for (size_t i = 0; i < public_headers.size(); i++)
171 OutputString(" " + public_headers[i].value() + "\n");
172 }
173
174 void PrintVisibility(const Target* target, bool display_header) {
175 if (display_header)
176 OutputString("\nvisibility\n");
177
178 OutputString(target->visibility().Describe(2, false));
179 }
180
148 void PrintConfigs(const Target* target, bool display_header) { 181 void PrintConfigs(const Target* target, bool display_header) {
149 // Configs (don't sort since the order determines how things are processed). 182 // Configs (don't sort since the order determines how things are processed).
150 if (display_header) 183 if (display_header)
151 OutputString("\nConfigs (in order applying):\n"); 184 OutputString("\nConfigs (in order applying):\n");
152 185
153 Label toolchain_label = target->label().GetToolchainLabel(); 186 Label toolchain_label = target->label().GetToolchainLabel();
154 const LabelConfigVector& configs = target->configs(); 187 const LabelConfigVector& configs = target->configs();
155 for (size_t i = 0; i < configs.size(); i++) { 188 for (size_t i = 0; i < configs.size(); i++) {
156 OutputString(" " + 189 OutputString(" " +
157 configs[i].label.GetUserVisibleName(toolchain_label) + "\n"); 190 configs[i].label.GetUserVisibleName(toolchain_label) + "\n");
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 const char kDesc_Help[] = 273 const char kDesc_Help[] =
241 "gn desc <target label> [<what to show>] [--blame] [--all | --tree]\n" 274 "gn desc <target label> [<what to show>] [--blame] [--all | --tree]\n"
242 " Displays information about a given labeled target.\n" 275 " Displays information about a given labeled target.\n"
243 "\n" 276 "\n"
244 "Possibilities for <what to show>:\n" 277 "Possibilities for <what to show>:\n"
245 " (If unspecified an overall summary will be displayed.)\n" 278 " (If unspecified an overall summary will be displayed.)\n"
246 "\n" 279 "\n"
247 " sources\n" 280 " sources\n"
248 " Source files.\n" 281 " Source files.\n"
249 "\n" 282 "\n"
283 " public\n"
284 " Public header files.\n"
285 "\n"
286 " visibility\n"
287 " Prints which targets can depend on this one.\n"
288 "\n"
250 " configs\n" 289 " configs\n"
251 " Shows configs applied to the given target, sorted in the order\n" 290 " Shows configs applied to the given target, sorted in the order\n"
252 " they're specified. This includes both configs specified in the\n" 291 " they're specified. This includes both configs specified in the\n"
253 " \"configs\" variable, as well as configs pushed onto this target\n" 292 " \"configs\" variable, as well as configs pushed onto this target\n"
254 " via dependencies specifying \"all\" or \"direct\" dependent\n" 293 " via dependencies specifying \"all\" or \"direct\" dependent\n"
255 " configs.\n" 294 " configs.\n"
256 "\n" 295 "\n"
257 " deps [--all | --tree]\n" 296 " deps [--all | --tree]\n"
258 " Show immediate (or, when \"--all\" or \"--tree\" is specified,\n" 297 " Show immediate (or, when \"--all\" or \"--tree\" is specified,\n"
259 " recursive) dependencies of the given target. \"--tree\" shows them\n" 298 " recursive) dependencies of the given target. \"--tree\" shows them\n"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 #define CONFIG_VALUE_HANDLER(name, type) \ 352 #define CONFIG_VALUE_HANDLER(name, type) \
314 } else if (what == #name) { OUTPUT_CONFIG_VALUE(name, type) 353 } else if (what == #name) { OUTPUT_CONFIG_VALUE(name, type)
315 354
316 if (args.size() == 2) { 355 if (args.size() == 2) {
317 // User specified one thing to display. 356 // User specified one thing to display.
318 const std::string& what = args[1]; 357 const std::string& what = args[1];
319 if (what == "configs") { 358 if (what == "configs") {
320 PrintConfigs(target, false); 359 PrintConfigs(target, false);
321 } else if (what == "sources") { 360 } else if (what == "sources") {
322 PrintSources(target, false); 361 PrintSources(target, false);
362 } else if (what == "public") {
363 PrintPublic(target, false);
364 } else if (what == "visibility") {
365 PrintVisibility(target, false);
323 } else if (what == "deps") { 366 } else if (what == "deps") {
324 PrintDeps(target, false); 367 PrintDeps(target, false);
325 } else if (what == "lib_dirs") { 368 } else if (what == "lib_dirs") {
326 PrintLibDirs(target, false); 369 PrintLibDirs(target, false);
327 } else if (what == "libs") { 370 } else if (what == "libs") {
328 PrintLibs(target, false); 371 PrintLibs(target, false);
329 372
330 CONFIG_VALUE_HANDLER(defines, std::string) 373 CONFIG_VALUE_HANDLER(defines, std::string)
331 CONFIG_VALUE_HANDLER(include_dirs, SourceDir) 374 CONFIG_VALUE_HANDLER(include_dirs, SourceDir)
332 CONFIG_VALUE_HANDLER(cflags, std::string) 375 CONFIG_VALUE_HANDLER(cflags, std::string)
(...skipping 22 matching lines...) Expand all
355 // Header. 398 // Header.
356 OutputString("Target: ", DECORATION_YELLOW); 399 OutputString("Target: ", DECORATION_YELLOW);
357 OutputString(target->label().GetUserVisibleName(false) + "\n"); 400 OutputString(target->label().GetUserVisibleName(false) + "\n");
358 OutputString("Type: ", DECORATION_YELLOW); 401 OutputString("Type: ", DECORATION_YELLOW);
359 OutputString(std::string( 402 OutputString(std::string(
360 Target::GetStringForOutputType(target->output_type())) + "\n"); 403 Target::GetStringForOutputType(target->output_type())) + "\n");
361 OutputString("Toolchain: ", DECORATION_YELLOW); 404 OutputString("Toolchain: ", DECORATION_YELLOW);
362 OutputString(target_toolchain.GetUserVisibleName(false) + "\n"); 405 OutputString(target_toolchain.GetUserVisibleName(false) + "\n");
363 406
364 PrintSources(target, true); 407 PrintSources(target, true);
408 PrintPublic(target, true);
409 PrintVisibility(target, true);
365 PrintConfigs(target, true); 410 PrintConfigs(target, true);
366 411
367 OUTPUT_CONFIG_VALUE(defines, std::string) 412 OUTPUT_CONFIG_VALUE(defines, std::string)
368 OUTPUT_CONFIG_VALUE(include_dirs, SourceDir) 413 OUTPUT_CONFIG_VALUE(include_dirs, SourceDir)
369 OUTPUT_CONFIG_VALUE(cflags, std::string) 414 OUTPUT_CONFIG_VALUE(cflags, std::string)
370 OUTPUT_CONFIG_VALUE(cflags_c, std::string) 415 OUTPUT_CONFIG_VALUE(cflags_c, std::string)
371 OUTPUT_CONFIG_VALUE(cflags_cc, std::string) 416 OUTPUT_CONFIG_VALUE(cflags_cc, std::string)
372 OUTPUT_CONFIG_VALUE(cflags_objc, std::string) 417 OUTPUT_CONFIG_VALUE(cflags_objc, std::string)
373 OUTPUT_CONFIG_VALUE(cflags_objcc, std::string) 418 OUTPUT_CONFIG_VALUE(cflags_objcc, std::string)
374 OUTPUT_CONFIG_VALUE(ldflags, std::string) 419 OUTPUT_CONFIG_VALUE(ldflags, std::string)
375 PrintLibs(target, true); 420 PrintLibs(target, true);
376 PrintLibDirs(target, true); 421 PrintLibDirs(target, true);
377 422
378 PrintDeps(target, true); 423 PrintDeps(target, true);
379 424
380 return 0; 425 return 0;
381 } 426 }
382 427
383 } // namespace commands 428 } // namespace commands
OLDNEW
« no previous file with comments | « no previous file | tools/gn/visibility.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698