| 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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 void NinjaBinaryTargetWriter::WriteSources( | 144 void NinjaBinaryTargetWriter::WriteSources( |
| 145 std::vector<OutputFile>* object_files) { | 145 std::vector<OutputFile>* object_files) { |
| 146 const Target::FileList& sources = target_->sources(); | 146 const Target::FileList& sources = target_->sources(); |
| 147 object_files->reserve(sources.size()); | 147 object_files->reserve(sources.size()); |
| 148 | 148 |
| 149 std::string implicit_deps = GetSourcesImplicitDeps(); | 149 std::string implicit_deps = GetSourcesImplicitDeps(); |
| 150 | 150 |
| 151 for (size_t i = 0; i < sources.size(); i++) { | 151 for (size_t i = 0; i < sources.size(); i++) { |
| 152 const SourceFile& input_file = sources[i]; | 152 const SourceFile& input_file = sources[i]; |
| 153 | 153 |
| 154 SourceFileType input_file_type = GetSourceFileType(input_file, | 154 SourceFileType input_file_type = GetSourceFileType(input_file); |
| 155 settings_->target_os()); | |
| 156 if (input_file_type == SOURCE_UNKNOWN) | 155 if (input_file_type == SOURCE_UNKNOWN) |
| 157 continue; // Skip unknown file types. | 156 continue; // Skip unknown file types. |
| 158 std::string command = | 157 std::string command = |
| 159 helper_.GetRuleForSourceType(settings_, input_file_type); | 158 helper_.GetRuleForSourceType(settings_, input_file_type); |
| 160 if (command.empty()) | 159 if (command.empty()) |
| 161 continue; // Skip files not needing compilation. | 160 continue; // Skip files not needing compilation. |
| 162 | 161 |
| 163 OutputFile output_file = helper_.GetOutputFileForSource( | 162 OutputFile output_file = helper_.GetOutputFileForSource( |
| 164 target_, input_file, input_file_type); | 163 target_, input_file, input_file_type); |
| 165 object_files->push_back(output_file); | 164 object_files->push_back(output_file); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 if (dep->output_type() == Target::SOURCE_SET) { | 421 if (dep->output_type() == Target::SOURCE_SET) { |
| 423 if (target_->output_type() == Target::SOURCE_SET) { | 422 if (target_->output_type() == Target::SOURCE_SET) { |
| 424 // When a source set depends on another source set, add it as a data | 423 // When a source set depends on another source set, add it as a data |
| 425 // dependency so if the user says "ninja second_source_set" it will | 424 // dependency so if the user says "ninja second_source_set" it will |
| 426 // also compile the first (what you would expect) even though we'll | 425 // also compile the first (what you would expect) even though we'll |
| 427 // never do anything with the first one's files. | 426 // never do anything with the first one's files. |
| 428 non_linkable_deps->push_back(dep); | 427 non_linkable_deps->push_back(dep); |
| 429 } else { | 428 } else { |
| 430 // Linking in a source set, copy its object files. | 429 // Linking in a source set, copy its object files. |
| 431 for (size_t i = 0; i < dep->sources().size(); i++) { | 430 for (size_t i = 0; i < dep->sources().size(); i++) { |
| 432 SourceFileType input_file_type = GetSourceFileType( | 431 SourceFileType input_file_type = GetSourceFileType(dep->sources()[i]); |
| 433 dep->sources()[i], dep->settings()->target_os()); | |
| 434 if (input_file_type != SOURCE_UNKNOWN && | 432 if (input_file_type != SOURCE_UNKNOWN && |
| 435 input_file_type != SOURCE_H) { | 433 input_file_type != SOURCE_H) { |
| 436 // Note we need to specify the target as the source_set target | 434 // Note we need to specify the target as the source_set target |
| 437 // itself, since this is used to prefix the object file name. | 435 // itself, since this is used to prefix the object file name. |
| 438 extra_object_files->insert(helper_.GetOutputFileForSource( | 436 extra_object_files->insert(helper_.GetOutputFileForSource( |
| 439 dep, dep->sources()[i], input_file_type)); | 437 dep, dep->sources()[i], input_file_type)); |
| 440 } | 438 } |
| 441 } | 439 } |
| 442 } | 440 } |
| 443 } else if (can_link_libs && dep->IsLinkable()) { | 441 } else if (can_link_libs && dep->IsLinkable()) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 461 } | 459 } |
| 462 | 460 |
| 463 // Data files. | 461 // Data files. |
| 464 const std::vector<SourceFile>& data = target_->data(); | 462 const std::vector<SourceFile>& data = target_->data(); |
| 465 for (size_t i = 0; i < data.size(); i++) { | 463 for (size_t i = 0; i < data.size(); i++) { |
| 466 out_ << " "; | 464 out_ << " "; |
| 467 path_output_.WriteFile(out_, data[i]); | 465 path_output_.WriteFile(out_, data[i]); |
| 468 } | 466 } |
| 469 } | 467 } |
| 470 } | 468 } |
| OLD | NEW |