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

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

Issue 565283002: GN: Add notion of 'complete' static libraries, akin to GYP. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Actually process new argument. Duh. 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 unified diff | Download patch
« no previous file with comments | « tools/gn/target.h ('k') | tools/gn/target_unittest.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/target.h" 5 #include "tools/gn/target.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "tools/gn/config_values_extractors.h" 10 #include "tools/gn/config_values_extractors.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 return deps.size(); 66 return deps.size();
67 } 67 }
68 68
69 } // namespace 69 } // namespace
70 70
71 Target::Target(const Settings* settings, const Label& label) 71 Target::Target(const Settings* settings, const Label& label)
72 : Item(settings, label), 72 : Item(settings, label),
73 output_type_(UNKNOWN), 73 output_type_(UNKNOWN),
74 all_headers_public_(true), 74 all_headers_public_(true),
75 check_includes_(true), 75 check_includes_(true),
76 complete_static_lib_(false),
76 testonly_(false), 77 testonly_(false),
77 hard_dep_(false), 78 hard_dep_(false),
78 toolchain_(NULL) { 79 toolchain_(NULL) {
79 } 80 }
80 81
81 Target::~Target() { 82 Target::~Target() {
82 } 83 }
83 84
84 // static 85 // static
85 const char* Target::GetStringForOutputType(OutputType type) { 86 const char* Target::GetStringForOutputType(OutputType type) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 if (!CheckTestonly(err)) 154 if (!CheckTestonly(err))
154 return false; 155 return false;
155 156
156 return true; 157 return true;
157 } 158 }
158 159
159 bool Target::IsLinkable() const { 160 bool Target::IsLinkable() const {
160 return output_type_ == STATIC_LIBRARY || output_type_ == SHARED_LIBRARY; 161 return output_type_ == STATIC_LIBRARY || output_type_ == SHARED_LIBRARY;
161 } 162 }
162 163
164 bool Target::IsFinal() const {
165 return output_type_ == EXECUTABLE || output_type_ == SHARED_LIBRARY ||
166 (output_type_ == STATIC_LIBRARY && complete_static_lib_);
167 }
168
163 std::string Target::GetComputedOutputName(bool include_prefix) const { 169 std::string Target::GetComputedOutputName(bool include_prefix) const {
164 DCHECK(toolchain_) 170 DCHECK(toolchain_)
165 << "Toolchain must be specified before getting the computed output name."; 171 << "Toolchain must be specified before getting the computed output name.";
166 172
167 const std::string& name = output_name_.empty() ? label().name() 173 const std::string& name = output_name_.empty() ? label().name()
168 : output_name_; 174 : output_name_;
169 175
170 std::string result; 176 std::string result;
171 if (include_prefix) { 177 if (include_prefix) {
172 const Tool* tool = toolchain_->GetToolForTargetFinalOutput(this); 178 const Tool* tool = toolchain_->GetToolForTargetFinalOutput(this);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 MergeDirectDependentConfigsFrom(dep, &configs_); 234 MergeDirectDependentConfigsFrom(dep, &configs_);
229 235
230 // Direct dependent libraries. 236 // Direct dependent libraries.
231 if (dep->output_type() == STATIC_LIBRARY || 237 if (dep->output_type() == STATIC_LIBRARY ||
232 dep->output_type() == SHARED_LIBRARY || 238 dep->output_type() == SHARED_LIBRARY ||
233 dep->output_type() == SOURCE_SET) 239 dep->output_type() == SOURCE_SET)
234 inherited_libraries_.push_back(dep); 240 inherited_libraries_.push_back(dep);
235 241
236 // Inherited libraries and flags are inherited across static library 242 // Inherited libraries and flags are inherited across static library
237 // boundaries. 243 // boundaries.
238 if (dep->output_type() != SHARED_LIBRARY && 244 if (!dep->IsFinal()) {
239 dep->output_type() != EXECUTABLE) {
240 inherited_libraries_.Append(dep->inherited_libraries().begin(), 245 inherited_libraries_.Append(dep->inherited_libraries().begin(),
241 dep->inherited_libraries().end()); 246 dep->inherited_libraries().end());
242 247
243 // Inherited library settings. 248 // Inherited library settings.
244 all_lib_dirs_.append(dep->all_lib_dirs()); 249 all_lib_dirs_.append(dep->all_lib_dirs());
245 all_libs_.append(dep->all_libs()); 250 all_libs_.append(dep->all_libs());
246 } 251 }
247 } 252 }
248 } 253 }
249 254
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 386
382 for (size_t i = 0; i < datadeps_.size(); i++) { 387 for (size_t i = 0; i < datadeps_.size(); i++) {
383 if (datadeps_[i].ptr->testonly()) { 388 if (datadeps_[i].ptr->testonly()) {
384 *err = MakeTestOnlyError(this, datadeps_[i].ptr); 389 *err = MakeTestOnlyError(this, datadeps_[i].ptr);
385 return false; 390 return false;
386 } 391 }
387 } 392 }
388 393
389 return true; 394 return true;
390 } 395 }
OLDNEW
« no previous file with comments | « tools/gn/target.h ('k') | tools/gn/target_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698