Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: tools/gn/ninja_build_writer.cc

Issue 2926013002: Support explicit pools in actions (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/ninja_build_writer.h" 5 #include "tools/gn/ninja_build_writer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <fstream> 9 #include <fstream>
10 #include <map> 10 #include <map>
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 std::unordered_set<const Pool*> used_pools; 278 std::unordered_set<const Pool*> used_pools;
279 for (const auto& pair : used_toolchains_) { 279 for (const auto& pair : used_toolchains_) {
280 for (int j = Toolchain::TYPE_NONE + 1; j < Toolchain::TYPE_NUMTYPES; j++) { 280 for (int j = Toolchain::TYPE_NONE + 1; j < Toolchain::TYPE_NUMTYPES; j++) {
281 Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(j); 281 Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(j);
282 const Tool* tool = pair.second->GetTool(tool_type); 282 const Tool* tool = pair.second->GetTool(tool_type);
283 if (tool && tool->pool().ptr) 283 if (tool && tool->pool().ptr)
284 used_pools.insert(tool->pool().ptr); 284 used_pools.insert(tool->pool().ptr);
285 } 285 }
286 } 286 }
287 287
288 for (const Target* target : default_toolchain_targets_) {
289 if (target->output_type() == Target::ACTION) {
290 const LabelPtrPair<Pool>& pool = target->action_values().pool();
291 if (pool.ptr)
292 used_pools.insert(pool.ptr);
293 }
294 }
295
288 // Write pools sorted by their name, to make output deterministic. 296 // Write pools sorted by their name, to make output deterministic.
289 std::vector<const Pool*> sorted_pools(used_pools.begin(), used_pools.end()); 297 std::vector<const Pool*> sorted_pools(used_pools.begin(), used_pools.end());
290 auto pool_name = [this](const Pool* pool) { 298 auto pool_name = [this](const Pool* pool) {
291 return pool->GetNinjaName(default_toolchain_->label()); 299 return pool->GetNinjaName(default_toolchain_->label());
292 }; 300 };
293 std::sort(sorted_pools.begin(), sorted_pools.end(), 301 std::sort(sorted_pools.begin(), sorted_pools.end(),
294 [&pool_name](const Pool* a, const Pool* b) { 302 [&pool_name](const Pool* a, const Pool* b) {
295 return pool_name(a) < pool_name(b); 303 return pool_name(a) < pool_name(b);
296 }); 304 });
297 for (const Pool* pool : sorted_pools) { 305 for (const Pool* pool : sorted_pools) {
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 EscapeOptions ninja_escape; 568 EscapeOptions ninja_escape;
561 ninja_escape.mode = ESCAPE_NINJA; 569 ninja_escape.mode = ESCAPE_NINJA;
562 570
563 // Escape for special chars Ninja will handle. 571 // Escape for special chars Ninja will handle.
564 std::string escaped = EscapeString(phony_name, ninja_escape, nullptr); 572 std::string escaped = EscapeString(phony_name, ninja_escape, nullptr);
565 573
566 out_ << "build " << escaped << ": phony "; 574 out_ << "build " << escaped << ": phony ";
567 path_output_.WriteFile(out_, target->dependency_output_file()); 575 path_output_.WriteFile(out_, target->dependency_output_file());
568 out_ << std::endl; 576 out_ << std::endl;
569 } 577 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698