| 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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 const std::string& heading, | 250 const std::string& heading, |
| 251 bool display_header) { | 251 bool display_header) { |
| 252 if (configs.empty()) | 252 if (configs.empty()) |
| 253 return; | 253 return; |
| 254 | 254 |
| 255 // Don't sort since the order determines how things are processed. | 255 // Don't sort since the order determines how things are processed. |
| 256 if (display_header) | 256 if (display_header) |
| 257 OutputString("\n" + heading + " (in order applying):\n"); | 257 OutputString("\n" + heading + " (in order applying):\n"); |
| 258 | 258 |
| 259 Label toolchain_label = target->label().GetToolchainLabel(); | 259 Label toolchain_label = target->label().GetToolchainLabel(); |
| 260 for (size_t i = 0; i < configs.size(); i++) { | 260 for (const auto& config : configs) { |
| 261 OutputString(" " + | 261 OutputString(" " + config.label.GetUserVisibleName(toolchain_label) + |
| 262 configs[i].label.GetUserVisibleName(toolchain_label) + "\n"); | 262 "\n"); |
| 263 } | 263 } |
| 264 } | 264 } |
| 265 | 265 |
| 266 void PrintConfigsVector(const Target* target, | 266 void PrintConfigsVector(const Target* target, |
| 267 const UniqueVector<LabelConfigPair>& configs, | 267 const UniqueVector<LabelConfigPair>& configs, |
| 268 const std::string& heading, | 268 const std::string& heading, |
| 269 bool display_header) { | 269 bool display_header) { |
| 270 if (configs.empty()) | 270 if (configs.empty()) |
| 271 return; | 271 return; |
| 272 | 272 |
| 273 // Don't sort since the order determines how things are processed. | 273 // Don't sort since the order determines how things are processed. |
| 274 if (display_header) | 274 if (display_header) |
| 275 OutputString("\n" + heading + " (in order applying):\n"); | 275 OutputString("\n" + heading + " (in order applying):\n"); |
| 276 | 276 |
| 277 Label toolchain_label = target->label().GetToolchainLabel(); | 277 Label toolchain_label = target->label().GetToolchainLabel(); |
| 278 for (size_t i = 0; i < configs.size(); i++) { | 278 for (const auto& config : configs) { |
| 279 OutputString(" " + | 279 OutputString(" " + config.label.GetUserVisibleName(toolchain_label) + |
| 280 configs[i].label.GetUserVisibleName(toolchain_label) + "\n"); | 280 "\n"); |
| 281 } | 281 } |
| 282 } | 282 } |
| 283 | 283 |
| 284 void PrintConfigs(const Target* target, bool display_header) { | 284 void PrintConfigs(const Target* target, bool display_header) { |
| 285 PrintConfigsVector(target, target->configs().vector(), "configs", | 285 PrintConfigsVector(target, target->configs().vector(), "configs", |
| 286 display_header); | 286 display_header); |
| 287 } | 287 } |
| 288 | 288 |
| 289 void PrintPublicConfigs(const Target* target, bool display_header) { | 289 void PrintPublicConfigs(const Target* target, bool display_header) { |
| 290 PrintConfigsVector(target, target->public_configs(), | 290 PrintConfigsVector(target, target->public_configs(), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 303 if (files.empty()) | 303 if (files.empty()) |
| 304 return; | 304 return; |
| 305 | 305 |
| 306 if (display_header) | 306 if (display_header) |
| 307 OutputString("\n" + header + ":\n"); | 307 OutputString("\n" + header + ":\n"); |
| 308 | 308 |
| 309 std::string indent = indent_extra ? " " : " "; | 309 std::string indent = indent_extra ? " " : " "; |
| 310 | 310 |
| 311 Target::FileList sorted = files; | 311 Target::FileList sorted = files; |
| 312 std::sort(sorted.begin(), sorted.end()); | 312 std::sort(sorted.begin(), sorted.end()); |
| 313 for (size_t i = 0; i < sorted.size(); i++) | 313 for (const auto& elem : sorted) |
| 314 OutputString(indent + sorted[i].value() + "\n"); | 314 OutputString(indent + elem.value() + "\n"); |
| 315 } | 315 } |
| 316 | 316 |
| 317 void PrintSources(const Target* target, bool display_header) { | 317 void PrintSources(const Target* target, bool display_header) { |
| 318 PrintFileList(target->sources(), "sources", false, display_header); | 318 PrintFileList(target->sources(), "sources", false, display_header); |
| 319 } | 319 } |
| 320 | 320 |
| 321 void PrintInputs(const Target* target, bool display_header) { | 321 void PrintInputs(const Target* target, bool display_header) { |
| 322 PrintFileList(target->inputs(), "inputs", false, display_header); | 322 PrintFileList(target->inputs(), "inputs", false, display_header); |
| 323 } | 323 } |
| 324 | 324 |
| 325 void PrintOutputs(const Target* target, bool display_header) { | 325 void PrintOutputs(const Target* target, bool display_header) { |
| 326 if (display_header) | 326 if (display_header) |
| 327 OutputString("\noutputs:\n"); | 327 OutputString("\noutputs:\n"); |
| 328 | 328 |
| 329 if (target->output_type() == Target::ACTION) { | 329 if (target->output_type() == Target::ACTION) { |
| 330 // Action, print out outputs, don't apply sources to it. | 330 // Action, print out outputs, don't apply sources to it. |
| 331 for (size_t i = 0; i < target->action_values().outputs().list().size(); | 331 for (const auto& elem : target->action_values().outputs().list()) { |
| 332 i++) { | 332 OutputString(" " + elem.AsString() + "\n"); |
| 333 OutputString(" " + | |
| 334 target->action_values().outputs().list()[i].AsString() + | |
| 335 "\n"); | |
| 336 } | 333 } |
| 337 } else { | 334 } else { |
| 338 const SubstitutionList& outputs = target->action_values().outputs(); | 335 const SubstitutionList& outputs = target->action_values().outputs(); |
| 339 if (!outputs.required_types().empty()) { | 336 if (!outputs.required_types().empty()) { |
| 340 // Display the pattern and resolved pattern separately, since there are | 337 // Display the pattern and resolved pattern separately, since there are |
| 341 // subtitutions used. | 338 // subtitutions used. |
| 342 OutputString(" Output pattern:\n"); | 339 OutputString(" Output pattern:\n"); |
| 343 for (size_t i = 0; i < outputs.list().size(); i++) | 340 for (const auto& elem : outputs.list()) |
| 344 OutputString(" " + outputs.list()[i].AsString() + "\n"); | 341 OutputString(" " + elem.AsString() + "\n"); |
| 345 | 342 |
| 346 // Now display what that resolves to given the sources. | 343 // Now display what that resolves to given the sources. |
| 347 OutputString("\n Resolved output file list:\n"); | 344 OutputString("\n Resolved output file list:\n"); |
| 348 } | 345 } |
| 349 | 346 |
| 350 // Resolved output list. | 347 // Resolved output list. |
| 351 std::vector<SourceFile> output_files; | 348 std::vector<SourceFile> output_files; |
| 352 SubstitutionWriter::ApplyListToSources(target->settings(), outputs, | 349 SubstitutionWriter::ApplyListToSources(target->settings(), outputs, |
| 353 target->sources(), &output_files); | 350 target->sources(), &output_files); |
| 354 PrintFileList(output_files, "", true, false); | 351 PrintFileList(output_files, "", true, false); |
| 355 } | 352 } |
| 356 } | 353 } |
| 357 | 354 |
| 358 void PrintScript(const Target* target, bool display_header) { | 355 void PrintScript(const Target* target, bool display_header) { |
| 359 if (display_header) | 356 if (display_header) |
| 360 OutputString("\nscript:\n"); | 357 OutputString("\nscript:\n"); |
| 361 OutputString(" " + target->action_values().script().value() + "\n"); | 358 OutputString(" " + target->action_values().script().value() + "\n"); |
| 362 } | 359 } |
| 363 | 360 |
| 364 void PrintArgs(const Target* target, bool display_header) { | 361 void PrintArgs(const Target* target, bool display_header) { |
| 365 if (display_header) | 362 if (display_header) |
| 366 OutputString("\nargs:\n"); | 363 OutputString("\nargs:\n"); |
| 367 for (size_t i = 0; i < target->action_values().args().list().size(); i++) { | 364 for (const auto& elem : target->action_values().args().list()) { |
| 368 OutputString(" " + | 365 OutputString(" " + elem.AsString() + "\n"); |
| 369 target->action_values().args().list()[i].AsString() + "\n"); | |
| 370 } | 366 } |
| 371 } | 367 } |
| 372 | 368 |
| 373 void PrintDepfile(const Target* target, bool display_header) { | 369 void PrintDepfile(const Target* target, bool display_header) { |
| 374 if (target->action_values().depfile().empty()) | 370 if (target->action_values().depfile().empty()) |
| 375 return; | 371 return; |
| 376 if (display_header) | 372 if (display_header) |
| 377 OutputString("\ndepfile:\n"); | 373 OutputString("\ndepfile:\n"); |
| 378 OutputString(" " + target->action_values().depfile().AsString() + "\n"); | 374 OutputString(" " + target->action_values().depfile().AsString() + "\n"); |
| 379 } | 375 } |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 // so always display them, even for groups and such. | 716 // so always display them, even for groups and such. |
| 721 PrintLibs(target, true); | 717 PrintLibs(target, true); |
| 722 PrintLibDirs(target, true); | 718 PrintLibDirs(target, true); |
| 723 | 719 |
| 724 PrintDeps(target, true); | 720 PrintDeps(target, true); |
| 725 | 721 |
| 726 return 0; | 722 return 0; |
| 727 } | 723 } |
| 728 | 724 |
| 729 } // namespace commands | 725 } // namespace commands |
| OLD | NEW |