| @@ -96,18 +96,17 @@ void build_plan::archive_all(const build_env& env, int njobs) const { | |||
| } | |||
| void build_plan::link_all(const build_env& env, int njobs) const { | |||
| auto executables = // | |||
| iter_libraries(*this) // | |||
| | ranges::views::transform([](const library_plan& lib) { | |||
| auto repeated = ranges::views::repeat_n(std::cref(lib), lib.executables().size()); | |||
| return ranges::views::zip(repeated, lib.executables()); | |||
| }) // | |||
| | ranges::views::join // | |||
| ; | |||
| std::vector<std::pair<std::reference_wrapper<const library_plan>, std::reference_wrapper<const link_executable_plan>>> executables; | |||
| for (auto&& lib : iter_libraries(*this)) { | |||
| for (auto&& exe : lib.executables()) { | |||
| executables.emplace_back(lib, exe); | |||
| } | |||
| } | |||
| auto okay = parallel_run(executables, njobs, [&](const auto& pair) { | |||
| auto&& [lib, exe] = pair; | |||
| exe.link(env, lib); | |||
| exe.get().link(env, lib); | |||
| }); | |||
| if (!okay) { | |||
| throw std::runtime_error("Failure to link executables"); | |||