| Index: tools/gn/ninja_writer.cc
|
| diff --git a/tools/gn/ninja_writer.cc b/tools/gn/ninja_writer.cc
|
| index 154f017a435acecad3ca83879901e070b25f20f3..7d26f484730c05146c603d9b4e8a9e59ae8aa1ef 100644
|
| --- a/tools/gn/ninja_writer.cc
|
| +++ b/tools/gn/ninja_writer.cc
|
| @@ -29,9 +29,11 @@ bool NinjaWriter::RunAndWriteFiles(const BuildSettings* build_settings,
|
|
|
| std::vector<const Settings*> all_settings;
|
| std::vector<const Target*> default_targets;
|
| - if (!writer.WriteToolchains(&all_settings, &default_targets, err))
|
| + std::vector<const Pool*> all_pools;
|
| + if (!writer.WriteToolchains(&all_settings, &default_targets, &all_pools, err))
|
| return false;
|
| - return writer.WriteRootBuildfiles(all_settings, default_targets, err);
|
| + return writer.WriteRootBuildfiles(all_settings, default_targets, all_pools,
|
| + err);
|
| }
|
|
|
| // static
|
| @@ -42,11 +44,14 @@ bool NinjaWriter::RunAndWriteToolchainFiles(
|
| Err* err) {
|
| NinjaWriter writer(build_settings, builder);
|
| std::vector<const Target*> default_targets;
|
| - return writer.WriteToolchains(all_settings, &default_targets, err);
|
| + std::vector<const Pool*> all_pools;
|
| + return writer.WriteToolchains(all_settings, &default_targets, &all_pools,
|
| + err);
|
| }
|
|
|
| bool NinjaWriter::WriteToolchains(std::vector<const Settings*>* all_settings,
|
| std::vector<const Target*>* default_targets,
|
| + std::vector<const Pool*>* all_pools,
|
| Err* err) {
|
| // Categorize all targets by toolchain.
|
| typedef std::map<Label, std::vector<const Target*> > CategorizedMap;
|
| @@ -79,6 +84,7 @@ bool NinjaWriter::WriteToolchains(std::vector<const Settings*>* all_settings,
|
|
|
| // Write out the toolchain buildfiles, and also accumulate the set of
|
| // all settings and find the list of targets in the default toolchain.
|
| + UniqueVector<const Pool*> pools;
|
| for (const auto& i : categorized) {
|
| const Settings* settings =
|
| builder_->loader()->GetToolchainSettings(i.first);
|
| @@ -91,8 +97,16 @@ bool NinjaWriter::WriteToolchains(std::vector<const Settings*>* all_settings,
|
| "Couldn't open toolchain buildfile(s) for writing").PrintToStdout();
|
| return false;
|
| }
|
| +
|
| + for (int j = Toolchain::TYPE_NONE + 1; j < Toolchain::TYPE_NUMTYPES; j++) {
|
| + Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(j);
|
| + const Tool* tool = toolchain->GetTool(tool_type);
|
| + if (tool && tool->pool().ptr)
|
| + pools.push_back(tool->pool().ptr);
|
| + }
|
| }
|
|
|
| + *all_pools = pools.vector();
|
| *default_targets = categorized[default_label];
|
| return true;
|
| }
|
| @@ -100,6 +114,7 @@ bool NinjaWriter::WriteToolchains(std::vector<const Settings*>* all_settings,
|
| bool NinjaWriter::WriteRootBuildfiles(
|
| const std::vector<const Settings*>& all_settings,
|
| const std::vector<const Target*>& default_targets,
|
| + const std::vector<const Pool*>& all_pools,
|
| Err* err) {
|
| // All Settings objects should have the same default toolchain, and there
|
| // should always be at least one settings object in the build.
|
| @@ -110,5 +125,5 @@ bool NinjaWriter::WriteRootBuildfiles(
|
| // Write the root buildfile.
|
| return NinjaBuildWriter::RunAndWriteFile(build_settings_, all_settings,
|
| default_toolchain, default_targets,
|
| - err);
|
| + all_pools, err);
|
| }
|
|
|