Index: tools/gn/builder.cc |
diff --git a/tools/gn/builder.cc b/tools/gn/builder.cc |
index d498b108e1bf02d9cc1198c1c676d66b68c2f463..dccc095a949c6658a8211110fa61c1ed2100f108 100644 |
--- a/tools/gn/builder.cc |
+++ b/tools/gn/builder.cc |
@@ -408,7 +408,8 @@ bool Builder::ResolveItem(BuilderRecord* record, Err* err) { |
!ResolveConfigs(&target->configs(), err) || |
!ResolveConfigs(&target->all_dependent_configs(), err) || |
!ResolveConfigs(&target->direct_dependent_configs(), err) || |
- !ResolveForwardDependentConfigs(target, err)) |
+ !ResolveForwardDependentConfigs(target, err) || |
+ !ResolveToolchain(target, err)) |
return false; |
} else if (record->type() == BuilderRecord::ITEM_TOOLCHAIN) { |
Toolchain* toolchain = record->item()->AsToolchain(); |
@@ -499,6 +500,24 @@ bool Builder::ResolveForwardDependentConfigs(Target* target, Err* err) { |
return true; |
} |
+bool Builder::ResolveToolchain(Target* target, Err* err) { |
+ BuilderRecord* record = GetResolvedRecordOfType( |
+ target->settings()->toolchain_label(), target->defined_from(), |
+ BuilderRecord::ITEM_TOOLCHAIN, err); |
+ if (!record) { |
+ *err = Err(target->defined_from(), |
+ "Toolchain for target not defined.", |
+ "I was hoping to find a toolchain " + |
+ target->settings()->toolchain_label().GetUserVisibleName(false)); |
+ return false; |
+ } |
+ |
+ if (!target->SetToolchain(record->item()->AsToolchain(), err)) |
+ return false; |
+ |
+ return true; |
+} |
+ |
std::string Builder::CheckForCircularDependencies( |
const std::vector<const BuilderRecord*>& bad_records) const { |
std::vector<const BuilderRecord*> cycle; |