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

Unified Diff: tools/gn/target_generator.cc

Issue 22290010: Add support for data deps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove switch Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/target_generator.h ('k') | tools/gn/toolchain.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/target_generator.cc
diff --git a/tools/gn/target_generator.cc b/tools/gn/target_generator.cc
index b0e1dee56b840d8e198e94d71b95cea2843d0352..3fdd9e39a104ec5a19ddbf46c6995c2ffae6c3af 100644
--- a/tools/gn/target_generator.cc
+++ b/tools/gn/target_generator.cc
@@ -22,6 +22,7 @@
#include "tools/gn/token.h"
#include "tools/gn/value.h"
#include "tools/gn/value_extractors.h"
+#include "tools/gn/variables.h"
namespace {
@@ -98,6 +99,7 @@ void TargetGenerator::Run() {
if (TypeHasOutputs(output_type))
FillOutputs();
FillDependencies(); // All types have dependencies.
+ FillDataDependencies(); // All types have dependencies.
if (TypeHasConfigValues(output_type)) {
ConfigValuesGenerator gen(&target_->config_values(), scope_,
@@ -208,22 +210,46 @@ void TargetGenerator::FillGenericConfigs(
(target_->*setter)(&dest_configs);
}
+void TargetGenerator::FillGenericDeps(
+ const char* var_name,
+ void (Target::*setter)(std::vector<const Target*>*)) {
+ const Value* value = scope_->GetValue(var_name, true);
+ if (!value)
+ return;
+
+ std::vector<Label> labels;
+ if (!ExtractListOfLabels(*value, input_directory_,
+ ToolchainLabelForScope(scope_), &labels, err_))
+ return;
+
+ std::vector<const Target*> dest_deps;
+ dest_deps.resize(labels.size());
+ for (size_t i = 0; i < labels.size(); i++) {
+ dest_deps[i] = GetBuildSettings()->target_manager().GetTarget(
+ labels[i], value->list_value()[i].origin()->GetRange(), target_, err_);
+ if (err_->has_error())
+ return;
+ }
+
+ (target_->*setter)(&dest_deps);
+}
+
void TargetGenerator::FillConfigs() {
- FillGenericConfigs("configs", &Target::swap_in_configs);
+ FillGenericConfigs(variables::kConfigs, &Target::swap_in_configs);
}
void TargetGenerator::FillAllDependentConfigs() {
- FillGenericConfigs("all_dependent_configs",
+ FillGenericConfigs(variables::kAllDependentConfigs,
&Target::swap_in_all_dependent_configs);
}
void TargetGenerator::FillDirectDependentConfigs() {
- FillGenericConfigs("direct_dependent_configs",
+ FillGenericConfigs(variables::kDirectDependentConfigs,
&Target::swap_in_direct_dependent_configs);
}
void TargetGenerator::FillSources() {
- const Value* value = scope_->GetValue("sources", true);
+ const Value* value = scope_->GetValue(variables::kSources, true);
if (!value)
return;
@@ -235,6 +261,8 @@ void TargetGenerator::FillSources() {
}
void TargetGenerator::FillData() {
+ // TODO(brettW) hook this up to the constant when we have cleaned up
+ // how data files are used.
const Value* value = scope_->GetValue("data", true);
if (!value)
return;
@@ -247,25 +275,11 @@ void TargetGenerator::FillData() {
}
void TargetGenerator::FillDependencies() {
- const Value* value = scope_->GetValue("deps", true);
- if (!value)
- return;
-
- std::vector<Label> labels;
- if (!ExtractListOfLabels(*value, input_directory_,
- ToolchainLabelForScope(scope_), &labels, err_))
- return;
-
- std::vector<const Target*> dest_deps;
- dest_deps.resize(labels.size());
- for (size_t i = 0; i < labels.size(); i++) {
- dest_deps[i] = GetBuildSettings()->target_manager().GetTarget(
- labels[i], value->list_value()[i].origin()->GetRange(), target_, err_);
- if (err_->has_error())
- return;
- }
+ FillGenericDeps(variables::kDeps, &Target::swap_in_deps);
+}
- target_->swap_in_deps(&dest_deps);
+void TargetGenerator::FillDataDependencies() {
+ FillGenericDeps(variables::kDatadeps, &Target::swap_in_datadeps);
}
void TargetGenerator::FillDestDir() {
« no previous file with comments | « tools/gn/target_generator.h ('k') | tools/gn/toolchain.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698