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

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

Issue 1342183003: Allow GN configs to have sub-configs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « tools/gn/builder.h ('k') | tools/gn/command_desc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/builder.h" 5 #include "tools/gn/builder.h"
6 6
7 #include "tools/gn/config.h" 7 #include "tools/gn/config.h"
8 #include "tools/gn/deps_iterator.h" 8 #include "tools/gn/deps_iterator.h"
9 #include "tools/gn/err.h" 9 #include "tools/gn/err.h"
10 #include "tools/gn/loader.h" 10 #include "tools/gn/loader.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 } 81 }
82 82
83 record->set_item(item.Pass()); 83 record->set_item(item.Pass());
84 84
85 // Do target-specific dependency setup. This will also schedule dependency 85 // Do target-specific dependency setup. This will also schedule dependency
86 // loads for targets that are required. 86 // loads for targets that are required.
87 switch (type) { 87 switch (type) {
88 case BuilderRecord::ITEM_TARGET: 88 case BuilderRecord::ITEM_TARGET:
89 TargetDefined(record, &err); 89 TargetDefined(record, &err);
90 break; 90 break;
91 case BuilderRecord::ITEM_CONFIG:
92 ConfigDefined(record, &err);
93 break;
91 case BuilderRecord::ITEM_TOOLCHAIN: 94 case BuilderRecord::ITEM_TOOLCHAIN:
92 ToolchainDefined(record, &err); 95 ToolchainDefined(record, &err);
93 break; 96 break;
94 default: 97 default:
95 break; 98 break;
96 } 99 }
97 if (err.has_error()) { 100 if (err.has_error()) {
98 g_scheduler->FailWithError(err); 101 g_scheduler->FailWithError(err);
99 return; 102 return;
100 } 103 }
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 // All targets in the default toolchain get generated by default. We also 229 // All targets in the default toolchain get generated by default. We also
227 // check if this target was previously marked as "required" and force setting 230 // check if this target was previously marked as "required" and force setting
228 // the bit again so the target's dependencies (which we now know) get the 231 // the bit again so the target's dependencies (which we now know) get the
229 // required bit pushed to them. 232 // required bit pushed to them.
230 if (record->should_generate() || target->settings()->is_default()) 233 if (record->should_generate() || target->settings()->is_default())
231 RecursiveSetShouldGenerate(record, true); 234 RecursiveSetShouldGenerate(record, true);
232 235
233 return true; 236 return true;
234 } 237 }
235 238
239 bool Builder::ConfigDefined(BuilderRecord* record, Err* err) {
240 Config* config = record->item()->AsConfig();
241 if (!AddDeps(record, config->configs(), err))
242 return false;
243 return true;
244 }
245
236 bool Builder::ToolchainDefined(BuilderRecord* record, Err* err) { 246 bool Builder::ToolchainDefined(BuilderRecord* record, Err* err) {
237 Toolchain* toolchain = record->item()->AsToolchain(); 247 Toolchain* toolchain = record->item()->AsToolchain();
238 248
239 if (!AddDeps(record, toolchain->deps(), err)) 249 if (!AddDeps(record, toolchain->deps(), err))
240 return false; 250 return false;
241 251
242 // The default toolchain gets generated by default. Also propogate the 252 // The default toolchain gets generated by default. Also propogate the
243 // generate flag if it depends on items in a non-default toolchain. 253 // generate flag if it depends on items in a non-default toolchain.
244 if (record->should_generate() || 254 if (record->should_generate() ||
245 toolchain->settings()->default_toolchain_label() == toolchain->label()) 255 toolchain->settings()->default_toolchain_label() == toolchain->label())
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 Target* target = record->item()->AsTarget(); 401 Target* target = record->item()->AsTarget();
392 if (!ResolveDeps(&target->public_deps(), err) || 402 if (!ResolveDeps(&target->public_deps(), err) ||
393 !ResolveDeps(&target->private_deps(), err) || 403 !ResolveDeps(&target->private_deps(), err) ||
394 !ResolveDeps(&target->data_deps(), err) || 404 !ResolveDeps(&target->data_deps(), err) ||
395 !ResolveConfigs(&target->configs(), err) || 405 !ResolveConfigs(&target->configs(), err) ||
396 !ResolveConfigs(&target->all_dependent_configs(), err) || 406 !ResolveConfigs(&target->all_dependent_configs(), err) ||
397 !ResolveConfigs(&target->public_configs(), err) || 407 !ResolveConfigs(&target->public_configs(), err) ||
398 !ResolveForwardDependentConfigs(target, err) || 408 !ResolveForwardDependentConfigs(target, err) ||
399 !ResolveToolchain(target, err)) 409 !ResolveToolchain(target, err))
400 return false; 410 return false;
411 } else if (record->type() == BuilderRecord::ITEM_CONFIG) {
412 Config* config = record->item()->AsConfig();
413 if (!ResolveConfigs(&config->configs(), err))
414 return false;
401 } else if (record->type() == BuilderRecord::ITEM_TOOLCHAIN) { 415 } else if (record->type() == BuilderRecord::ITEM_TOOLCHAIN) {
402 Toolchain* toolchain = record->item()->AsToolchain(); 416 Toolchain* toolchain = record->item()->AsToolchain();
403 if (!ResolveDeps(&toolchain->deps(), err)) 417 if (!ResolveDeps(&toolchain->deps(), err))
404 return false; 418 return false;
405 } 419 }
406 420
407 record->set_resolved(true); 421 record->set_resolved(true);
408 422
409 if (!record->item()->OnResolved(err)) 423 if (!record->item()->OnResolved(err))
410 return false; 424 return false;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 std::string ret; 524 std::string ret;
511 for (size_t i = 0; i < cycle.size(); i++) { 525 for (size_t i = 0; i < cycle.size(); i++) {
512 ret += " " + cycle[i]->label().GetUserVisibleName(false); 526 ret += " " + cycle[i]->label().GetUserVisibleName(false);
513 if (i != cycle.size() - 1) 527 if (i != cycle.size() - 1)
514 ret += " ->"; 528 ret += " ->";
515 ret += "\n"; 529 ret += "\n";
516 } 530 }
517 531
518 return ret; 532 return ret;
519 } 533 }
OLDNEW
« no previous file with comments | « tools/gn/builder.h ('k') | tools/gn/command_desc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698