Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: tools/gn/args.cc

Issue 2151633002: Mark build arguments implicitly used in GN. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/args.h" 5 #include "tools/gn/args.h"
6 6
7 #include "base/sys_info.h" 7 #include "base/sys_info.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "tools/gn/variables.h" 9 #include "tools/gn/variables.h"
10 10
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 err->AppendSubErr(Err(previously_declared->second.origin(), 177 err->AppendSubErr(Err(previously_declared->second.origin(),
178 "Previous declaration.", 178 "Previous declaration.",
179 "See also \"gn help buildargs\" for more on how " 179 "See also \"gn help buildargs\" for more on how "
180 "build arguments work.")); 180 "build arguments work."));
181 return false; 181 return false;
182 } 182 }
183 } else { 183 } else {
184 declared_arguments.insert(arg); 184 declared_arguments.insert(arg);
185 } 185 }
186 186
187 // In all the cases below, mark the variable used. If a variable is set
188 // that's only used in one toolchain, we don't want to report unused
189 // variable errors in other toolchains. Also, in some cases it's reasonable
190 // for the build file to overwrite the value with a different value based
191 // on some other condition without dereferencing the value first.
192
187 // Check whether this argument has been overridden on the toolchain level 193 // Check whether this argument has been overridden on the toolchain level
188 // and use the override instead. 194 // and use the override instead.
189 Scope::KeyValueMap::const_iterator toolchain_override = 195 Scope::KeyValueMap::const_iterator toolchain_override =
190 toolchain_overrides.find(arg.first); 196 toolchain_overrides.find(arg.first);
191 if (toolchain_override != toolchain_overrides.end()) { 197 if (toolchain_override != toolchain_overrides.end()) {
192 scope_to_set->SetValue(toolchain_override->first, 198 scope_to_set->SetValue(toolchain_override->first,
193 toolchain_override->second, 199 toolchain_override->second,
194 toolchain_override->second.origin()); 200 toolchain_override->second.origin());
201 scope_to_set->MarkUsed(arg.first);
195 continue; 202 continue;
196 } 203 }
197 204
198 // Check whether this argument has been overridden and use the override 205 // Check whether this argument has been overridden and use the override
199 // instead. 206 // instead.
200 Scope::KeyValueMap::const_iterator override = overrides_.find(arg.first); 207 Scope::KeyValueMap::const_iterator override = overrides_.find(arg.first);
201 if (override != overrides_.end()) { 208 if (override != overrides_.end()) {
202 scope_to_set->SetValue(override->first, override->second, 209 scope_to_set->SetValue(override->first, override->second,
203 override->second.origin()); 210 override->second.origin());
211 scope_to_set->MarkUsed(override->first);
204 continue; 212 continue;
205 } 213 }
206 214
207 // Mark the variable used so the build script can override it in
208 // certain cases without getting unused value errors.
209 scope_to_set->SetValue(arg.first, arg.second, arg.second.origin()); 215 scope_to_set->SetValue(arg.first, arg.second, arg.second.origin());
210 scope_to_set->MarkUsed(arg.first); 216 scope_to_set->MarkUsed(arg.first);
211 } 217 }
212 218
213 return true; 219 return true;
214 } 220 }
215 221
216 bool Args::VerifyAllOverridesUsed(Err* err) const { 222 bool Args::VerifyAllOverridesUsed(Err* err) const {
217 base::AutoLock lock(lock_); 223 base::AutoLock lock(lock_);
218 Scope::KeyValueMap all_overrides(all_overrides_); 224 Scope::KeyValueMap all_overrides(all_overrides_);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 Scope* scope) const { 346 Scope* scope) const {
341 lock_.AssertAcquired(); 347 lock_.AssertAcquired();
342 return declared_arguments_per_toolchain_[scope->settings()]; 348 return declared_arguments_per_toolchain_[scope->settings()];
343 } 349 }
344 350
345 Scope::KeyValueMap& Args::OverridesForToolchainLocked( 351 Scope::KeyValueMap& Args::OverridesForToolchainLocked(
346 Scope* scope) const { 352 Scope* scope) const {
347 lock_.AssertAcquired(); 353 lock_.AssertAcquired();
348 return toolchain_overrides_[scope->settings()]; 354 return toolchain_overrides_[scope->settings()];
349 } 355 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698