| 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;
|
|
|