OLD | NEW |
---|---|
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 <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "tools/gn/action_values.h" | |
10 #include "tools/gn/config.h" | 11 #include "tools/gn/config.h" |
11 #include "tools/gn/deps_iterator.h" | 12 #include "tools/gn/deps_iterator.h" |
12 #include "tools/gn/err.h" | 13 #include "tools/gn/err.h" |
13 #include "tools/gn/loader.h" | 14 #include "tools/gn/loader.h" |
14 #include "tools/gn/pool.h" | 15 #include "tools/gn/pool.h" |
15 #include "tools/gn/scheduler.h" | 16 #include "tools/gn/scheduler.h" |
16 #include "tools/gn/settings.h" | 17 #include "tools/gn/settings.h" |
17 #include "tools/gn/target.h" | 18 #include "tools/gn/target.h" |
18 #include "tools/gn/trace.h" | 19 #include "tools/gn/trace.h" |
19 | 20 |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
219 } | 220 } |
220 | 221 |
221 bool Builder::TargetDefined(BuilderRecord* record, Err* err) { | 222 bool Builder::TargetDefined(BuilderRecord* record, Err* err) { |
222 Target* target = record->item()->AsTarget(); | 223 Target* target = record->item()->AsTarget(); |
223 | 224 |
224 if (!AddDeps(record, target->public_deps(), err) || | 225 if (!AddDeps(record, target->public_deps(), err) || |
225 !AddDeps(record, target->private_deps(), err) || | 226 !AddDeps(record, target->private_deps(), err) || |
226 !AddDeps(record, target->data_deps(), err) || | 227 !AddDeps(record, target->data_deps(), err) || |
227 !AddDeps(record, target->configs().vector(), err) || | 228 !AddDeps(record, target->configs().vector(), err) || |
228 !AddDeps(record, target->all_dependent_configs(), err) || | 229 !AddDeps(record, target->all_dependent_configs(), err) || |
229 !AddDeps(record, target->public_configs(), err) || | 230 !AddDeps(record, target->public_configs(), err) || |
brettw
2017/06/28 21:23:27
You need to add a line here to add the pool to the
Petr Hosek
2017/06/28 23:42:32
Done.
| |
230 !AddToolchainDep(record, target, err)) | 231 !AddToolchainDep(record, target, err)) |
231 return false; | 232 return false; |
232 | 233 |
233 // All targets in the default toolchain get generated by default. We also | 234 // All targets in the default toolchain get generated by default. We also |
234 // check if this target was previously marked as "required" and force setting | 235 // check if this target was previously marked as "required" and force setting |
235 // the bit again so the target's dependencies (which we now know) get the | 236 // the bit again so the target's dependencies (which we now know) get the |
236 // required bit pushed to them. | 237 // required bit pushed to them. |
237 if (record->should_generate() || target->settings()->is_default()) | 238 if (record->should_generate() || target->settings()->is_default()) |
238 RecursiveSetShouldGenerate(record, true); | 239 RecursiveSetShouldGenerate(record, true); |
239 | 240 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
432 DCHECK(record->can_resolve() && !record->resolved()); | 433 DCHECK(record->can_resolve() && !record->resolved()); |
433 | 434 |
434 if (record->type() == BuilderRecord::ITEM_TARGET) { | 435 if (record->type() == BuilderRecord::ITEM_TARGET) { |
435 Target* target = record->item()->AsTarget(); | 436 Target* target = record->item()->AsTarget(); |
436 if (!ResolveDeps(&target->public_deps(), err) || | 437 if (!ResolveDeps(&target->public_deps(), err) || |
437 !ResolveDeps(&target->private_deps(), err) || | 438 !ResolveDeps(&target->private_deps(), err) || |
438 !ResolveDeps(&target->data_deps(), err) || | 439 !ResolveDeps(&target->data_deps(), err) || |
439 !ResolveConfigs(&target->configs(), err) || | 440 !ResolveConfigs(&target->configs(), err) || |
440 !ResolveConfigs(&target->all_dependent_configs(), err) || | 441 !ResolveConfigs(&target->all_dependent_configs(), err) || |
441 !ResolveConfigs(&target->public_configs(), err) || | 442 !ResolveConfigs(&target->public_configs(), err) || |
443 !ResolveActionValues(&target->action_values(), err) || | |
442 !ResolveToolchain(target, err)) | 444 !ResolveToolchain(target, err)) |
443 return false; | 445 return false; |
444 } else if (record->type() == BuilderRecord::ITEM_CONFIG) { | 446 } else if (record->type() == BuilderRecord::ITEM_CONFIG) { |
445 Config* config = record->item()->AsConfig(); | 447 Config* config = record->item()->AsConfig(); |
446 if (!ResolveConfigs(&config->configs(), err)) | 448 if (!ResolveConfigs(&config->configs(), err)) |
447 return false; | 449 return false; |
448 } else if (record->type() == BuilderRecord::ITEM_TOOLCHAIN) { | 450 } else if (record->type() == BuilderRecord::ITEM_TOOLCHAIN) { |
449 Toolchain* toolchain = record->item()->AsToolchain(); | 451 Toolchain* toolchain = record->item()->AsToolchain(); |
450 if (!ResolveDeps(&toolchain->deps(), err)) | 452 if (!ResolveDeps(&toolchain->deps(), err)) |
451 return false; | 453 return false; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
512 target->settings()->toolchain_label().GetUserVisibleName(false)); | 514 target->settings()->toolchain_label().GetUserVisibleName(false)); |
513 return false; | 515 return false; |
514 } | 516 } |
515 | 517 |
516 if (!target->SetToolchain(record->item()->AsToolchain(), err)) | 518 if (!target->SetToolchain(record->item()->AsToolchain(), err)) |
517 return false; | 519 return false; |
518 | 520 |
519 return true; | 521 return true; |
520 } | 522 } |
521 | 523 |
524 bool Builder::ResolveActionValues(ActionValues* action_values, Err* err) { | |
525 if (action_values->pool().label.is_null()) | |
526 return true; | |
527 | |
528 BuilderRecord* record = GetResolvedRecordOfType( | |
529 action_values->pool().label, action_values->pool().origin, | |
530 BuilderRecord::ITEM_POOL, err); | |
531 if (!record) | |
532 return false; | |
533 action_values->set_pool(LabelPtrPair<Pool>(record->item()->AsPool())); | |
534 | |
535 return true; | |
536 } | |
537 | |
522 bool Builder::ResolvePools(Toolchain* toolchain, Err* err) { | 538 bool Builder::ResolvePools(Toolchain* toolchain, Err* err) { |
523 for (int i = Toolchain::TYPE_NONE + 1; i < Toolchain::TYPE_NUMTYPES; i++) { | 539 for (int i = Toolchain::TYPE_NONE + 1; i < Toolchain::TYPE_NUMTYPES; i++) { |
524 Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(i); | 540 Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(i); |
525 Tool* tool = toolchain->GetTool(tool_type); | 541 Tool* tool = toolchain->GetTool(tool_type); |
526 if (!tool || tool->pool().label.is_null()) | 542 if (!tool || tool->pool().label.is_null()) |
527 continue; | 543 continue; |
528 | 544 |
529 BuilderRecord* record = | 545 BuilderRecord* record = |
530 GetResolvedRecordOfType(tool->pool().label, toolchain->defined_from(), | 546 GetResolvedRecordOfType(tool->pool().label, toolchain->defined_from(), |
531 BuilderRecord::ITEM_POOL, err); | 547 BuilderRecord::ITEM_POOL, err); |
(...skipping 19 matching lines...) Expand all Loading... | |
551 std::string ret; | 567 std::string ret; |
552 for (size_t i = 0; i < cycle.size(); i++) { | 568 for (size_t i = 0; i < cycle.size(); i++) { |
553 ret += " " + cycle[i]->label().GetUserVisibleName(false); | 569 ret += " " + cycle[i]->label().GetUserVisibleName(false); |
554 if (i != cycle.size() - 1) | 570 if (i != cycle.size() - 1) |
555 ret += " ->"; | 571 ret += " ->"; |
556 ret += "\n"; | 572 ret += "\n"; |
557 } | 573 } |
558 | 574 |
559 return ret; | 575 return ret; |
560 } | 576 } |
OLD | NEW |