Index: tools/gn/args.h |
diff --git a/tools/gn/args.h b/tools/gn/args.h |
index 1f9cb52f7ded8f52c5be389b594e0abfbff307e4..9df5712d9f30e0753d0a8ff02eb435b89e36b457 100644 |
--- a/tools/gn/args.h |
+++ b/tools/gn/args.h |
@@ -40,8 +40,8 @@ class Args { |
Scope::KeyValueMap GetAllOverrides() const; |
// Sets up the root scope for a toolchain. This applies the default system |
- // flags, then any overrides stored in this object, then applies any |
- // toolchain overrides specified in the argument. |
+ // flags and saves the toolchain overrides so they can be applied to |
+ // declare_args blocks that appear when loading files in that toolchain. |
void SetupRootScope(Scope* dest, |
const Scope::KeyValueMap& toolchain_overrides) const; |
@@ -68,13 +68,13 @@ class Args { |
void MergeDeclaredArguments(Scope::KeyValueMap* dest) const; |
private: |
- using DeclaredArgumentsPerToolchain = |
+ using ArgumentsPerToolchain = |
base::hash_map<const Settings*, Scope::KeyValueMap>; |
// Sets the default config based on the current system. |
void SetSystemVarsLocked(Scope* scope) const; |
- // Sets the given vars on the given scope. |
+ // Sets the given already declared vars on the given scope. |
void ApplyOverridesLocked(const Scope::KeyValueMap& values, |
Scope* scope) const; |
@@ -84,6 +84,10 @@ class Args { |
// toolchain. |
Scope::KeyValueMap& DeclaredArgumentsForToolchainLocked(Scope* scope) const; |
+ // Returns the KeyValueMap used for overrides for the specified |
+ // toolchain. |
+ Scope::KeyValueMap& OverridesForToolchainLocked(Scope* scope) const; |
+ |
// Since this is called during setup which we assume is single-threaded, |
// this is not protected by the lock. It should be set only during init. |
Scope::KeyValueMap overrides_; |
@@ -100,7 +104,12 @@ class Args { |
// buildfile. This is so we can see if the user set variables on the command |
// line that are not used anywhere. Each map is toolchain specific as each |
// toolchain may define variables in different locations. |
- mutable DeclaredArgumentsPerToolchain declared_arguments_per_toolchain_; |
+ mutable ArgumentsPerToolchain declared_arguments_per_toolchain_; |
+ |
+ // Overrides for individual toolchains. This is necessary so we |
+ // can apply the correct override for the current toolchain, once |
+ // we see an argument declaration. |
+ mutable ArgumentsPerToolchain toolchain_overrides_; |
DISALLOW_ASSIGN(Args); |
}; |