| 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 "tools/gn/target.h" | 5 #include "tools/gn/target.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 // first output. | 506 // first output. |
| 507 CHECK(tool->outputs().list().size() >= 1); | 507 CHECK(tool->outputs().list().size() >= 1); |
| 508 check_tool_outputs = true; | 508 check_tool_outputs = true; |
| 509 link_output_file_ = dependency_output_file_ = | 509 link_output_file_ = dependency_output_file_ = |
| 510 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( | 510 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( |
| 511 this, tool, tool->outputs().list()[0]); | 511 this, tool, tool->outputs().list()[0]); |
| 512 break; | 512 break; |
| 513 case SHARED_LIBRARY: | 513 case SHARED_LIBRARY: |
| 514 CHECK(tool->outputs().list().size() >= 1); | 514 CHECK(tool->outputs().list().size() >= 1); |
| 515 check_tool_outputs = true; | 515 check_tool_outputs = true; |
| 516 // XXX |
| 516 if (tool->link_output().empty() && tool->depend_output().empty()) { | 517 if (tool->link_output().empty() && tool->depend_output().empty()) { |
| 517 // Default behavior, use the first output file for both. | 518 // Default behavior, use the first output file for both. |
| 518 link_output_file_ = dependency_output_file_ = | 519 link_output_file_ = dependency_output_file_ = |
| 519 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( | 520 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( |
| 520 this, tool, tool->outputs().list()[0]); | 521 this, tool, tool->outputs().list()[0]); |
| 521 } else { | 522 } else { |
| 522 // Use the tool-specified ones. | 523 // Use the tool-specified ones. |
| 523 if (!tool->link_output().empty()) { | 524 if (!tool->link_output().empty()) { |
| 524 link_output_file_ = | 525 link_output_file_ = |
| 525 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( | 526 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( |
| 526 this, tool, tool->link_output()); | 527 this, tool, tool->link_output()); |
| 527 } | 528 } |
| 528 if (!tool->depend_output().empty()) { | 529 if (!tool->depend_output().empty()) { |
| 529 dependency_output_file_ = | 530 dependency_output_file_ = |
| 530 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( | 531 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( |
| 531 this, tool, tool->depend_output()); | 532 this, tool, tool->depend_output()); |
| 532 } | 533 } |
| 533 } | 534 } |
| 535 if (tool->runtime_link_output().empty()) { |
| 536 runtime_link_output_file_ = link_output_file_; |
| 537 } else { |
| 538 runtime_link_output_file_ = |
| 539 SubstitutionWriter::ApplyPatternToLinkerAsOutputFile( |
| 540 this, tool, tool->runtime_link_output()); |
| 541 } |
| 534 break; | 542 break; |
| 535 case UNKNOWN: | 543 case UNKNOWN: |
| 536 default: | 544 default: |
| 537 NOTREACHED(); | 545 NOTREACHED(); |
| 538 } | 546 } |
| 539 | 547 |
| 540 // Count all outputs from this tool as something generated by this target. | 548 // Count all outputs from this tool as something generated by this target. |
| 541 if (check_tool_outputs) { | 549 if (check_tool_outputs) { |
| 542 SubstitutionWriter::ApplyListToLinkerAsOutputFile( | 550 SubstitutionWriter::ApplyListToLinkerAsOutputFile( |
| 543 this, tool, tool->outputs(), &computed_outputs_); | 551 this, tool, tool->outputs(), &computed_outputs_); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, false, | 718 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, false, |
| 711 &seen_targets)) { | 719 &seen_targets)) { |
| 712 // Check object files (much slower and very rare) only if the "normal" | 720 // Check object files (much slower and very rare) only if the "normal" |
| 713 // output check failed. | 721 // output check failed. |
| 714 seen_targets.clear(); | 722 seen_targets.clear(); |
| 715 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, true, | 723 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, true, |
| 716 &seen_targets)) | 724 &seen_targets)) |
| 717 g_scheduler->AddUnknownGeneratedInput(this, source); | 725 g_scheduler->AddUnknownGeneratedInput(this, source); |
| 718 } | 726 } |
| 719 } | 727 } |
| OLD | NEW |