| 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/ninja_binary_target_writer.h" | 5 #include "tools/gn/ninja_binary_target_writer.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "tools/gn/config_values_extractors.h" | 10 #include "tools/gn/config_values_extractors.h" |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 // The external output file is the one that other libs depend on. | 195 // The external output file is the one that other libs depend on. |
| 196 OutputFile external_output_file = helper_.GetTargetOutputFile(target_); | 196 OutputFile external_output_file = helper_.GetTargetOutputFile(target_); |
| 197 | 197 |
| 198 // The internal output file is the "main thing" we think we're making. In | 198 // The internal output file is the "main thing" we think we're making. In |
| 199 // the case of shared libraries, this is the shared library and the external | 199 // the case of shared libraries, this is the shared library and the external |
| 200 // output file is the import library. In other cases, the internal one and | 200 // output file is the import library. In other cases, the internal one and |
| 201 // the external one are the same. | 201 // the external one are the same. |
| 202 OutputFile internal_output_file; | 202 OutputFile internal_output_file; |
| 203 if (target_->output_type() == Target::SHARED_LIBRARY) { | 203 if (target_->output_type() == Target::SHARED_LIBRARY) { |
| 204 if (settings_->IsWin()) { | 204 if (settings_->IsWin()) { |
| 205 internal_output_file = OutputFile(target_->label().name() + ".dll"); | 205 internal_output_file.value() = |
| 206 target_->settings()->toolchain_output_subdir().value(); |
| 207 internal_output_file.value().append(target_->label().name()); |
| 208 internal_output_file.value().append(".dll"); |
| 206 } else { | 209 } else { |
| 207 internal_output_file = external_output_file; | 210 internal_output_file = external_output_file; |
| 208 } | 211 } |
| 209 } else { | 212 } else { |
| 210 internal_output_file = external_output_file; | 213 internal_output_file = external_output_file; |
| 211 } | 214 } |
| 212 | 215 |
| 213 // In Python see "self.ninja.build(output, command, input," | 216 // In Python see "self.ninja.build(output, command, input," |
| 214 WriteLinkCommand(external_output_file, internal_output_file, object_files); | 217 WriteLinkCommand(external_output_file, internal_output_file, object_files); |
| 215 | 218 |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 } | 461 } |
| 459 | 462 |
| 460 // Data files. | 463 // Data files. |
| 461 const std::vector<SourceFile>& data = target_->data(); | 464 const std::vector<SourceFile>& data = target_->data(); |
| 462 for (size_t i = 0; i < data.size(); i++) { | 465 for (size_t i = 0; i < data.size(); i++) { |
| 463 out_ << " "; | 466 out_ << " "; |
| 464 path_output_.WriteFile(out_, data[i]); | 467 path_output_.WriteFile(out_, data[i]); |
| 465 } | 468 } |
| 466 } | 469 } |
| 467 } | 470 } |
| OLD | NEW |