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

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

Issue 630223002: gn: Support build directories outside the source tree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/binary_target_generator.h" 5 #include "tools/gn/binary_target_generator.h"
6 6
7 #include "tools/gn/config_values_generator.h" 7 #include "tools/gn/config_values_generator.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/functions.h" 10 #include "tools/gn/functions.h"
11 #include "tools/gn/scope.h" 11 #include "tools/gn/scope.h"
12 #include "tools/gn/settings.h"
12 #include "tools/gn/value_extractors.h" 13 #include "tools/gn/value_extractors.h"
13 #include "tools/gn/variables.h" 14 #include "tools/gn/variables.h"
14 15
15 BinaryTargetGenerator::BinaryTargetGenerator( 16 BinaryTargetGenerator::BinaryTargetGenerator(
16 Target* target, 17 Target* target,
17 Scope* scope, 18 Scope* scope,
18 const FunctionCallNode* function_call, 19 const FunctionCallNode* function_call,
19 Target::OutputType type, 20 Target::OutputType type,
20 Err* err) 21 Err* err)
21 : TargetGenerator(target, scope, function_call, err), 22 : TargetGenerator(target, scope, function_call, err),
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 return true; 106 return true;
106 } 107 }
107 108
108 bool BinaryTargetGenerator::FillAllowCircularIncludesFrom() { 109 bool BinaryTargetGenerator::FillAllowCircularIncludesFrom() {
109 const Value* value = scope_->GetValue( 110 const Value* value = scope_->GetValue(
110 variables::kAllowCircularIncludesFrom, true); 111 variables::kAllowCircularIncludesFrom, true);
111 if (!value) 112 if (!value)
112 return true; 113 return true;
113 114
114 UniqueVector<Label> circular; 115 UniqueVector<Label> circular;
115 ExtractListOfUniqueLabels(*value, scope_->GetSourceDir(), 116 ExtractListOfUniqueLabels(scope_->settings()->build_settings(), *value,
117 scope_->GetSourceDir(),
116 ToolchainLabelForScope(scope_), &circular, err_); 118 ToolchainLabelForScope(scope_), &circular, err_);
117 if (err_->has_error()) 119 if (err_->has_error())
118 return false; 120 return false;
119 121
120 // Validate that all circular includes entries are in the deps. 122 // Validate that all circular includes entries are in the deps.
121 for (const auto& cur : circular) { 123 for (const auto& cur : circular) {
122 bool found_dep = false; 124 bool found_dep = false;
123 for (const auto& dep_pair : target_->GetDeps(Target::DEPS_LINKED)) { 125 for (const auto& dep_pair : target_->GetDeps(Target::DEPS_LINKED)) {
124 if (dep_pair.label == cur) { 126 if (dep_pair.label == cur) {
125 found_dep = true; 127 found_dep = true;
126 break; 128 break;
127 } 129 }
128 } 130 }
129 if (!found_dep) { 131 if (!found_dep) {
130 *err_ = Err(*value, "Label not in deps.", 132 *err_ = Err(*value, "Label not in deps.",
131 "The label \"" + cur.GetUserVisibleName(false) + 133 "The label \"" + cur.GetUserVisibleName(false) +
132 "\"\nwas not in the deps of this target. " 134 "\"\nwas not in the deps of this target. "
133 "allow_circular_includes_from only allows\ntargets present in the " 135 "allow_circular_includes_from only allows\ntargets present in the "
134 "deps."); 136 "deps.");
135 return false; 137 return false;
136 } 138 }
137 } 139 }
138 140
139 // Add to the set. 141 // Add to the set.
140 for (const auto& cur : circular) 142 for (const auto& cur : circular)
141 target_->allow_circular_includes_from().insert(cur); 143 target_->allow_circular_includes_from().insert(cur);
142 return true; 144 return true;
143 } 145 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698