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

Unified Diff: tools/gn/target_generator.cc

Issue 561273003: Add public deps to GN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/target_generator.h ('k') | tools/gn/target_unittest.cc » ('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 02c055e336e748a97af486b22ba1697e77eeaeb8..975ff722414da3881ae401c05028fce1db92fbc5 100644
--- a/tools/gn/target_generator.cc
+++ b/tools/gn/target_generator.cc
@@ -36,20 +36,16 @@ TargetGenerator::~TargetGenerator() {
void TargetGenerator::Run() {
// All target types use these.
- FillDependentConfigs();
- if (err_->has_error())
+ if (!FillDependentConfigs())
return;
- FillData();
- if (err_->has_error())
+ if (!FillData())
return;
- FillDependencies();
- if (err_->has_error())
+ if (!FillDependencies())
return;
- FillTestonly();
- if (err_->has_error())
+ if (!FillTestonly())
return;
if (!Visibility::FillItemVisibility(target_, scope_, err_))
@@ -137,22 +133,23 @@ const BuildSettings* TargetGenerator::GetBuildSettings() const {
return scope_->settings()->build_settings();
}
-void TargetGenerator::FillSources() {
+bool TargetGenerator::FillSources() {
const Value* value = scope_->GetValue(variables::kSources, true);
if (!value)
- return;
+ return true;
Target::FileList dest_sources;
if (!ExtractListOfRelativeFiles(scope_->settings()->build_settings(), *value,
scope_->GetSourceDir(), &dest_sources, err_))
- return;
+ return false;
target_->sources().swap(dest_sources);
+ return true;
}
-void TargetGenerator::FillPublic() {
+bool TargetGenerator::FillPublic() {
const Value* value = scope_->GetValue(variables::kPublic, true);
if (!value)
- return;
+ return true;
// If the public headers are defined, don't default to public.
target_->set_all_headers_public(false);
@@ -160,84 +157,105 @@ void TargetGenerator::FillPublic() {
Target::FileList dest_public;
if (!ExtractListOfRelativeFiles(scope_->settings()->build_settings(), *value,
scope_->GetSourceDir(), &dest_public, err_))
- return;
+ return false;
target_->public_headers().swap(dest_public);
+ return true;
}
-void TargetGenerator::FillInputs() {
+bool TargetGenerator::FillInputs() {
const Value* value = scope_->GetValue(variables::kInputs, true);
- if (!value) {
+ if (!value) {
// Older versions used "source_prereqs". Allow use of this variable until
// all callers are updated.
// TODO(brettw) remove this eventually.
value = scope_->GetValue("source_prereqs", true);
-
if (!value)
- return;
+ return true;
}
Target::FileList dest_inputs;
if (!ExtractListOfRelativeFiles(scope_->settings()->build_settings(), *value,
scope_->GetSourceDir(), &dest_inputs, err_))
- return;
+ return false;
target_->inputs().swap(dest_inputs);
+ return true;
}
-void TargetGenerator::FillConfigs() {
- FillGenericConfigs(variables::kConfigs, &target_->configs());
+bool TargetGenerator::FillConfigs() {
+ return FillGenericConfigs(variables::kConfigs, &target_->configs());
}
-void TargetGenerator::FillDependentConfigs() {
- FillGenericConfigs(variables::kAllDependentConfigs,
- &target_->all_dependent_configs());
- FillGenericConfigs(variables::kDirectDependentConfigs,
- &target_->direct_dependent_configs());
+bool TargetGenerator::FillDependentConfigs() {
+ if (!FillGenericConfigs(variables::kAllDependentConfigs,
+ &target_->all_dependent_configs()))
+ return false;
+ if (!FillGenericConfigs(variables::kPublicConfigs,
+ &target_->public_configs()))
+ return false;
+
+ // "public_configs" was previously named "direct_dependent_configs", fall
+ // back to that if public_configs was undefined.
+ if (!scope_->GetValue(variables::kPublicConfigs, false)) {
+ if (!FillGenericConfigs("direct_dependent_configs",
+ &target_->public_configs()))
+ return false;
+ }
+ return true;
}
-void TargetGenerator::FillData() {
+bool TargetGenerator::FillData() {
const Value* value = scope_->GetValue(variables::kData, true);
if (!value)
- return;
+ return true;
Target::FileList dest_data;
if (!ExtractListOfRelativeFiles(scope_->settings()->build_settings(), *value,
scope_->GetSourceDir(), &dest_data, err_))
- return;
+ return false;
target_->data().swap(dest_data);
+ return true;
}
-void TargetGenerator::FillDependencies() {
- FillGenericDeps(variables::kDeps, &target_->deps());
- if (err_->has_error())
- return;
- FillGenericDeps(variables::kDatadeps, &target_->datadeps());
- if (err_->has_error())
- return;
+bool TargetGenerator::FillDependencies() {
+ if (!FillGenericDeps(variables::kDeps, &target_->private_deps()))
+ return false;
+ if (!FillGenericDeps(variables::kPublicDeps, &target_->public_deps()))
+ return false;
+ if (!FillGenericDeps(variables::kDataDeps, &target_->data_deps()))
+ return false;
+
+ // "data_deps" was previously named "datadeps". For backwards-compat, read
+ // the old one if no "data_deps" were specified.
+ if (!scope_->GetValue(variables::kDataDeps, false)) {
+ if (!FillGenericDeps("datadeps", &target_->data_deps()))
+ return false;
+ }
// This is a list of dependent targets to have their configs fowarded, so
// it goes here rather than in FillConfigs.
- FillForwardDependentConfigs();
- if (err_->has_error())
- return;
+ if (!FillForwardDependentConfigs())
+ return false;
+ return true;
}
-void TargetGenerator::FillTestonly() {
+bool TargetGenerator::FillTestonly() {
const Value* value = scope_->GetValue(variables::kTestonly, true);
if (value) {
if (!value->VerifyTypeIs(Value::BOOLEAN, err_))
- return;
+ return false;
target_->set_testonly(value->boolean_value());
}
+ return true;
}
-void TargetGenerator::FillOutputs(bool allow_substitutions) {
+bool TargetGenerator::FillOutputs(bool allow_substitutions) {
const Value* value = scope_->GetValue(variables::kOutputs, true);
if (!value)
- return;
+ return true;
SubstitutionList& outputs = target_->action_values().outputs();
if (!outputs.Parse(*value, err_))
- return;
+ return false;
if (!allow_substitutions) {
// Verify no substitutions were actually used.
@@ -246,22 +264,23 @@ void TargetGenerator::FillOutputs(bool allow_substitutions) {
"The outputs of this target used source {{expansions}} but this "
"targe type\ndoesn't support them. Just express the outputs "
"literally.");
- return;
+ return false;
}
}
// Check the substitutions used are valid for this purpose.
if (!EnsureValidSourcesSubstitutions(outputs.required_types(),
value->origin(), err_))
- return;
+ return false;
// Validate that outputs are in the output dir.
CHECK(outputs.list().size() == value->list_value().size());
for (size_t i = 0; i < outputs.list().size(); i++) {
if (!EnsureSubstitutionIsInOutputDir(outputs.list()[i],
value->list_value()[i]))
- return;
+ return false;
}
+ return true;
}
bool TargetGenerator::EnsureSubstitutionIsInOutputDir(
@@ -295,25 +314,27 @@ bool TargetGenerator::EnsureSubstitutionIsInOutputDir(
return true;
}
-void TargetGenerator::FillGenericConfigs(const char* var_name,
+bool TargetGenerator::FillGenericConfigs(const char* var_name,
UniqueVector<LabelConfigPair>* dest) {
const Value* value = scope_->GetValue(var_name, true);
if (value) {
ExtractListOfUniqueLabels(*value, scope_->GetSourceDir(),
ToolchainLabelForScope(scope_), dest, err_);
}
+ return !err_->has_error();
}
-void TargetGenerator::FillGenericDeps(const char* var_name,
+bool TargetGenerator::FillGenericDeps(const char* var_name,
LabelTargetVector* dest) {
const Value* value = scope_->GetValue(var_name, true);
if (value) {
ExtractListOfLabels(*value, scope_->GetSourceDir(),
ToolchainLabelForScope(scope_), dest, err_);
}
+ return !err_->has_error();
}
-void TargetGenerator::FillForwardDependentConfigs() {
+bool TargetGenerator::FillForwardDependentConfigs() {
const Value* value = scope_->GetValue(
variables::kForwardDependentConfigsFrom, true);
if (value) {
@@ -321,4 +342,5 @@ void TargetGenerator::FillForwardDependentConfigs() {
ToolchainLabelForScope(scope_),
&target_->forward_dependent_configs(), err_);
}
+ return !err_->has_error();
}
« no previous file with comments | « tools/gn/target_generator.h ('k') | tools/gn/target_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698