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/action_target_generator.h" | 5 #include "tools/gn/action_target_generator.h" |
6 | 6 |
7 #include "tools/gn/build_settings.h" | 7 #include "tools/gn/build_settings.h" |
8 #include "tools/gn/err.h" | 8 #include "tools/gn/err.h" |
9 #include "tools/gn/filesystem_utils.h" | 9 #include "tools/gn/filesystem_utils.h" |
| 10 #include "tools/gn/functions.h" |
10 #include "tools/gn/parse_tree.h" | 11 #include "tools/gn/parse_tree.h" |
11 #include "tools/gn/scope.h" | 12 #include "tools/gn/scope.h" |
12 #include "tools/gn/value.h" | 13 #include "tools/gn/value.h" |
13 #include "tools/gn/value_extractors.h" | 14 #include "tools/gn/value_extractors.h" |
14 #include "tools/gn/variables.h" | 15 #include "tools/gn/variables.h" |
15 | 16 |
16 ActionTargetGenerator::ActionTargetGenerator( | 17 ActionTargetGenerator::ActionTargetGenerator( |
17 Target* target, | 18 Target* target, |
18 Scope* scope, | 19 Scope* scope, |
19 const FunctionCallNode* function_call, | 20 const FunctionCallNode* function_call, |
(...skipping 30 matching lines...) Expand all Loading... |
50 | 51 |
51 if (!FillResponseFileContents()) | 52 if (!FillResponseFileContents()) |
52 return; | 53 return; |
53 | 54 |
54 if (!FillOutputs(output_type_ == Target::ACTION_FOREACH)) | 55 if (!FillOutputs(output_type_ == Target::ACTION_FOREACH)) |
55 return; | 56 return; |
56 | 57 |
57 if (!FillDepfile()) | 58 if (!FillDepfile()) |
58 return; | 59 return; |
59 | 60 |
60 if (!FillConsole()) | 61 if (!FillPool()) |
61 return; | 62 return; |
62 | 63 |
63 if (!FillCheckIncludes()) | 64 if (!FillCheckIncludes()) |
64 return; | 65 return; |
65 | 66 |
66 if (!CheckOutputs()) | 67 if (!CheckOutputs()) |
67 return; | 68 return; |
68 | 69 |
69 // Action outputs don't depend on the current toolchain so we can skip adding | 70 // Action outputs don't depend on the current toolchain so we can skip adding |
70 // that dependency. | 71 // that dependency. |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 SubstitutionPattern depfile; | 154 SubstitutionPattern depfile; |
154 if (!depfile.Parse(*value, err_)) | 155 if (!depfile.Parse(*value, err_)) |
155 return false; | 156 return false; |
156 if (!EnsureSubstitutionIsInOutputDir(depfile, *value)) | 157 if (!EnsureSubstitutionIsInOutputDir(depfile, *value)) |
157 return false; | 158 return false; |
158 | 159 |
159 target_->action_values().set_depfile(depfile); | 160 target_->action_values().set_depfile(depfile); |
160 return true; | 161 return true; |
161 } | 162 } |
162 | 163 |
163 bool ActionTargetGenerator::FillConsole() { | 164 bool ActionTargetGenerator::FillPool() { |
164 const Value* value = scope_->GetValue(variables::kConsole, true); | 165 const Value* value = scope_->GetValue(variables::kPool, true); |
165 if (!value) | 166 if (!value) |
166 return true; | 167 return true; |
167 if (!value->VerifyTypeIs(Value::BOOLEAN, err_)) | 168 |
| 169 Label label = Label::Resolve(scope_->GetSourceDir(), |
| 170 ToolchainLabelForScope(scope_), *value, err_); |
| 171 if (err_->has_error()) |
168 return false; | 172 return false; |
169 target_->action_values().set_console(value->boolean_value()); | 173 |
| 174 LabelPtrPair<Pool> pair(label); |
| 175 pair.origin = target_->defined_from(); |
| 176 |
| 177 target_->action_values().set_pool(std::move(pair)); |
170 return true; | 178 return true; |
171 } | 179 } |
172 | 180 |
173 bool ActionTargetGenerator::CheckOutputs() { | 181 bool ActionTargetGenerator::CheckOutputs() { |
174 const SubstitutionList& outputs = target_->action_values().outputs(); | 182 const SubstitutionList& outputs = target_->action_values().outputs(); |
175 if (outputs.list().empty()) { | 183 if (outputs.list().empty()) { |
176 *err_ = Err(function_call_, "Action has no outputs.", | 184 *err_ = Err(function_call_, "Action has no outputs.", |
177 "If you have no outputs, the build system can not tell when your\n" | 185 "If you have no outputs, the build system can not tell when your\n" |
178 "script needs to be run."); | 186 "script needs to be run."); |
179 return false; | 187 return false; |
(...skipping 13 matching lines...) Expand all Loading... |
193 *err_ = Err(function_call_, | 201 *err_ = Err(function_call_, |
194 "action_foreach should have a pattern in the output.", | 202 "action_foreach should have a pattern in the output.", |
195 "An action_foreach target should have a source expansion pattern in\n" | 203 "An action_foreach target should have a source expansion pattern in\n" |
196 "it to map source file to unique output file name. Otherwise, the\n" | 204 "it to map source file to unique output file name. Otherwise, the\n" |
197 "build system can't determine when your script needs to be run."); | 205 "build system can't determine when your script needs to be run."); |
198 return false; | 206 return false; |
199 } | 207 } |
200 } | 208 } |
201 return true; | 209 return true; |
202 } | 210 } |
OLD | NEW |