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

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

Issue 141433015: GN build fixes, mostly for Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: put back sha1 file Created 6 years, 11 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 | Annotate | Revision Log
« build/config/compiler/BUILD.gn ('K') | « third_party/re2/BUILD.gn ('k') | no next file » | 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/gyp_binary_target_writer.h" 5 #include "tools/gn/gyp_binary_target_writer.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_util.h"
10 #include "tools/gn/builder_record.h" 11 #include "tools/gn/builder_record.h"
11 #include "tools/gn/config_values_extractors.h" 12 #include "tools/gn/config_values_extractors.h"
12 #include "tools/gn/err.h" 13 #include "tools/gn/err.h"
13 #include "tools/gn/escape.h" 14 #include "tools/gn/escape.h"
14 #include "tools/gn/filesystem_utils.h" 15 #include "tools/gn/filesystem_utils.h"
15 #include "tools/gn/settings.h" 16 #include "tools/gn/settings.h"
16 #include "tools/gn/target.h" 17 #include "tools/gn/target.h"
17 18
18 namespace { 19 namespace {
19 20
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 case '1': return "'1'"; 60 case '1': return "'1'";
60 case '2': return "'2'"; 61 case '2': return "'2'";
61 case 'x': return "'3'"; 62 case 'x': return "'3'";
62 default: return "'2'"; 63 default: return "'2'";
63 } 64 }
64 } 65 }
65 } 66 }
66 return "'2'"; // Default value. 67 return "'2'"; // Default value.
67 } 68 }
68 69
70 // Returns the value from the already-filled in cflags for the processor
71 // architecture to set in the GYP file. Additionally, this removes the flag
72 // from the given vector so we don't get duplicates.
73 std::string GetMacArch(std::vector<std::string>* cflags) {
74 // Searches for the "-arch" option and returns the corresponding GYP value.
75 for (size_t i = 0; i < cflags->size(); i++) {
76 const std::string& cur = (*cflags)[i];
77 if (cur == "-arch") {
78 // This is the first part of a list with ["-arch", "i386"], return the
79 // following item, and delete both of them.
80 if (i < cflags->size() - 1) {
81 std::string ret = (*cflags)[i + 1];
82 cflags->erase(cflags->begin() + i, cflags->begin() + i + 2);
83 return ret;
84 }
85 } else if (StartsWithASCII(cur, "-arch ", true)) {
86 // The arch was passed as one GN string value, e.g. "-arch i386". Return
87 // the stuff following the space and delete the item.
88 std::string ret = cur.substr(6);
89 cflags->erase(cflags->begin() + i);
90 return ret;
91 }
92 }
93 return std::string();
94 }
95
69 // Finds all values from the given getter from all configs in the given list, 96 // Finds all values from the given getter from all configs in the given list,
70 // and adds them to the given result vector. 97 // and adds them to the given result vector.
71 template<typename T> 98 template<typename T>
72 void FillConfigListValues( 99 void FillConfigListValues(
73 const LabelConfigVector& configs, 100 const LabelConfigVector& configs,
74 const std::vector<T>& (ConfigValues::* getter)() const, 101 const std::vector<T>& (ConfigValues::* getter)() const,
75 std::vector<T>* result) { 102 std::vector<T>* result) {
76 for (size_t config_i = 0; config_i < configs.size(); config_i++) { 103 for (size_t config_i = 0; config_i < configs.size(); config_i++) {
77 const std::vector<T>& values = 104 const std::vector<T>& values =
78 (configs[config_i].ptr->config_values().*getter)(); 105 (configs[config_i].ptr->config_values().*getter)();
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 out_ << " '-l"; 370 out_ << " '-l";
344 EscapeStringToStream(out_, flags.libs[i], escape_options); 371 EscapeStringToStream(out_, flags.libs[i], escape_options);
345 out_ << "',"; 372 out_ << "',";
346 } 373 }
347 out_ << " ],\n"; 374 out_ << " ],\n";
348 Indent(indent) << "},\n"; 375 Indent(indent) << "},\n";
349 } 376 }
350 377
351 Indent(indent) << "'xcode_settings': {\n"; 378 Indent(indent) << "'xcode_settings': {\n";
352 379
380 // Architecture. GYP uses this to write the -arch flag passed to the
381 // compiler, it doesn't look at our -arch flag. So we need to specify it in
382 // this special var and not in the cflags to avoid duplicates or conflicts.
383 std::string arch = GetMacArch(&flags.cflags);
384 if (arch == "i386")
385 Indent(indent + kExtraIndent) << "'ARCHS': [ 'i386' ],\n";
386 else if (arch == "x86_64")
387 Indent(indent + kExtraIndent) << "'ARCHS': [ 'x86_64' ],\n";
388
353 // C/C++ flags. 389 // C/C++ flags.
354 if (!flags.cflags.empty() || !flags.cflags_c.empty() || 390 if (!flags.cflags.empty() || !flags.cflags_c.empty() ||
355 !flags.cflags_objc.empty()) { 391 !flags.cflags_objc.empty()) {
356 Indent(indent + kExtraIndent) << "'OTHER_CFLAGS': ["; 392 Indent(indent + kExtraIndent) << "'OTHER_CFLAGS': [";
357 WriteArrayValues(out_, flags.cflags); 393 WriteArrayValues(out_, flags.cflags);
358 WriteArrayValues(out_, flags.cflags_c); 394 WriteArrayValues(out_, flags.cflags_c);
359 WriteArrayValues(out_, flags.cflags_objc); 395 WriteArrayValues(out_, flags.cflags_objc);
360 out_ << " ],\n"; 396 out_ << " ],\n";
361 } 397 }
362 if (!flags.cflags.empty() || !flags.cflags_cc.empty() || 398 if (!flags.cflags.empty() || !flags.cflags_cc.empty() ||
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 return; 617 return;
582 618
583 EscapeOptions options; 619 EscapeOptions options;
584 options.mode = ESCAPE_JSON; 620 options.mode = ESCAPE_JSON;
585 621
586 Indent(indent) << "'" << name << "': ["; 622 Indent(indent) << "'" << name << "': [";
587 WriteArrayValues(out_, values); 623 WriteArrayValues(out_, values);
588 out_ << " ],\n"; 624 out_ << " ],\n";
589 } 625 }
590 626
OLDNEW
« build/config/compiler/BUILD.gn ('K') | « third_party/re2/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698