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_target_writer.h" | 5 #include "tools/gn/ninja_target_writer.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 // number before writing allows us to either skip writing the input deps | 158 // number before writing allows us to either skip writing the input deps |
159 // stamp or optimize it. Use pointers to avoid copies here. | 159 // stamp or optimize it. Use pointers to avoid copies here. |
160 std::vector<const SourceFile*> input_deps_sources; | 160 std::vector<const SourceFile*> input_deps_sources; |
161 input_deps_sources.reserve(32); | 161 input_deps_sources.reserve(32); |
162 | 162 |
163 // Actions get implicit dependencies on the script itself. | 163 // Actions get implicit dependencies on the script itself. |
164 if (target_->output_type() == Target::ACTION || | 164 if (target_->output_type() == Target::ACTION || |
165 target_->output_type() == Target::ACTION_FOREACH) | 165 target_->output_type() == Target::ACTION_FOREACH) |
166 input_deps_sources.push_back(&target_->action_values().script()); | 166 input_deps_sources.push_back(&target_->action_values().script()); |
167 | 167 |
168 // Input files. | 168 // Input files are only considered for non-binary targets which use an |
169 for (const auto& input : target_->inputs()) | 169 // implicit dependency instead. The implicit depedency in this case is |
170 input_deps_sources.push_back(&input); | 170 // handled separately by the binary target writer. |
| 171 if (!target_->IsBinary()) { |
| 172 for (const auto& input : target_->inputs()) |
| 173 input_deps_sources.push_back(&input); |
| 174 } |
171 | 175 |
172 // For an action (where we run a script only once) the sources are the same | 176 // For an action (where we run a script only once) the sources are the same |
173 // as the inputs. For action_foreach, the sources will be operated on | 177 // as the inputs. For action_foreach, the sources will be operated on |
174 // separately so don't handle them here. | 178 // separately so don't handle them here. |
175 if (target_->output_type() == Target::ACTION) { | 179 if (target_->output_type() == Target::ACTION) { |
176 for (const auto& source : target_->sources()) | 180 for (const auto& source : target_->sources()) |
177 input_deps_sources.push_back(&source); | 181 input_deps_sources.push_back(&source); |
178 } | 182 } |
179 | 183 |
180 // ---------- | 184 // ---------- |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 << GetNinjaRulePrefixForToolchain(settings_) | 284 << GetNinjaRulePrefixForToolchain(settings_) |
281 << Toolchain::ToolTypeToName(Toolchain::TYPE_STAMP); | 285 << Toolchain::ToolTypeToName(Toolchain::TYPE_STAMP); |
282 path_output_.WriteFiles(out_, files); | 286 path_output_.WriteFiles(out_, files); |
283 | 287 |
284 if (!order_only_deps.empty()) { | 288 if (!order_only_deps.empty()) { |
285 out_ << " ||"; | 289 out_ << " ||"; |
286 path_output_.WriteFiles(out_, order_only_deps); | 290 path_output_.WriteFiles(out_, order_only_deps); |
287 } | 291 } |
288 out_ << std::endl; | 292 out_ << std::endl; |
289 } | 293 } |
OLD | NEW |