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

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

Issue 2616773003: Associate xctest files with corresponding xctest targets. (Closed)
Patch Set: Addressed feedback Created 3 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
« no previous file with comments | « tools/gn/xcode_object.h ('k') | tools/gn/xcode_writer.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/xcode_object.h" 5 #include "tools/gn/xcode_object.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 #include <sstream> 8 #include <sstream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 children_.push_back(std::move(child)); 480 children_.push_back(std::move(child));
481 return children_.back().get(); 481 return children_.back().get();
482 } 482 }
483 483
484 PBXFileReference* PBXGroup::AddSourceFile(const std::string& navigator_path, 484 PBXFileReference* PBXGroup::AddSourceFile(const std::string& navigator_path,
485 const std::string& source_path) { 485 const std::string& source_path) {
486 DCHECK(!navigator_path.empty()); 486 DCHECK(!navigator_path.empty());
487 DCHECK(!source_path.empty()); 487 DCHECK(!source_path.empty());
488 std::string::size_type sep = navigator_path.find("/"); 488 std::string::size_type sep = navigator_path.find("/");
489 if (sep == std::string::npos) { 489 if (sep == std::string::npos) {
490 // Prevent same file reference being created and added multiple times.
491 for (const auto& child : children_) {
492 if (child->Class() != PBXFileReferenceClass)
493 continue;
494
495 PBXFileReference* child_as_file_reference =
496 static_cast<PBXFileReference*>(child.get());
497 if (child_as_file_reference->Name() == navigator_path &&
498 child_as_file_reference->path() == source_path) {
499 return child_as_file_reference;
500 }
501 }
502
490 children_.push_back(base::MakeUnique<PBXFileReference>( 503 children_.push_back(base::MakeUnique<PBXFileReference>(
491 navigator_path, source_path, std::string())); 504 navigator_path, source_path, std::string()));
492 return static_cast<PBXFileReference*>(children_.back().get()); 505 return static_cast<PBXFileReference*>(children_.back().get());
493 } 506 }
494 507
495 PBXGroup* group = nullptr; 508 PBXGroup* group = nullptr;
496 base::StringPiece component(navigator_path.data(), sep); 509 base::StringPiece component(navigator_path.data(), sep);
497 for (const auto& child : children_) { 510 for (const auto& child : children_) {
498 if (child->Class() != PBXGroupClass) 511 if (child->Class() != PBXGroupClass)
499 continue; 512 continue;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 products_->AddChild(base::MakeUnique<PBXFileReference>( 681 products_->AddChild(base::MakeUnique<PBXFileReference>(
669 std::string(), name_, "compiled.mach-o.executable"))); 682 std::string(), name_, "compiled.mach-o.executable")));
670 683
671 const char product_type[] = "com.apple.product-type.tool"; 684 const char product_type[] = "com.apple.product-type.tool";
672 targets_.push_back(base::MakeUnique<PBXNativeTarget>( 685 targets_.push_back(base::MakeUnique<PBXNativeTarget>(
673 name_, std::string(), config_name_, attributes, product_type, name_, 686 name_, std::string(), config_name_, attributes, product_type, name_,
674 product_reference)); 687 product_reference));
675 target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get()); 688 target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get());
676 } 689 }
677 690
678 void PBXProject::AddNativeTarget(const std::string& name, 691 PBXNativeTarget* PBXProject::AddNativeTarget(
679 const std::string& type, 692 const std::string& name,
680 const std::string& output_name, 693 const std::string& type,
681 const std::string& output_type, 694 const std::string& output_name,
682 const std::string& shell_script, 695 const std::string& output_type,
683 const PBXAttributes& extra_attributes) { 696 const std::string& shell_script,
697 const PBXAttributes& extra_attributes) {
684 base::StringPiece ext = FindExtension(&output_name); 698 base::StringPiece ext = FindExtension(&output_name);
685 PBXFileReference* product = static_cast<PBXFileReference*>( 699 PBXFileReference* product = static_cast<PBXFileReference*>(
686 products_->AddChild(base::MakeUnique<PBXFileReference>( 700 products_->AddChild(base::MakeUnique<PBXFileReference>(
687 std::string(), output_name, 701 std::string(), output_name,
688 type.empty() ? GetSourceType(ext) : type))); 702 type.empty() ? GetSourceType(ext) : type)));
689 703
690 size_t ext_offset = FindExtensionOffset(output_name); 704 size_t ext_offset = FindExtensionOffset(output_name);
691 std::string product_name = ext_offset != std::string::npos 705 std::string product_name = ext_offset != std::string::npos
692 ? output_name.substr(0, ext_offset - 1) 706 ? output_name.substr(0, ext_offset - 1)
693 : output_name; 707 : output_name;
694 708
695 PBXAttributes attributes = extra_attributes; 709 PBXAttributes attributes = extra_attributes;
696 attributes["CODE_SIGNING_REQUIRED"] = "NO"; 710 attributes["CODE_SIGNING_REQUIRED"] = "NO";
697 attributes["CONFIGURATION_BUILD_DIR"] = "."; 711 attributes["CONFIGURATION_BUILD_DIR"] = ".";
698 attributes["PRODUCT_NAME"] = product_name; 712 attributes["PRODUCT_NAME"] = product_name;
699 713
700 targets_.push_back(base::MakeUnique<PBXNativeTarget>( 714 targets_.push_back(base::MakeUnique<PBXNativeTarget>(
701 name, shell_script, config_name_, attributes, output_type, product_name, 715 name, shell_script, config_name_, attributes, output_type, product_name,
702 product)); 716 product));
717 return static_cast<PBXNativeTarget*>(targets_.back().get());
703 } 718 }
704 719
705 void PBXProject::SetProjectDirPath(const std::string& project_dir_path) { 720 void PBXProject::SetProjectDirPath(const std::string& project_dir_path) {
706 DCHECK(!project_dir_path.empty()); 721 DCHECK(!project_dir_path.empty());
707 project_dir_path_.assign(project_dir_path); 722 project_dir_path_.assign(project_dir_path);
708 } 723 }
709 724
710 void PBXProject::SetProjectRoot(const std::string& project_root) { 725 void PBXProject::SetProjectRoot(const std::string& project_root) {
711 DCHECK(!project_root.empty()); 726 DCHECK(!project_root.empty());
712 project_root_.assign(project_root); 727 project_root_.assign(project_root);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 const std::string indent_str(indent, '\t'); 905 const std::string indent_str(indent, '\t');
891 const IndentRules rules = {false, indent + 1}; 906 const IndentRules rules = {false, indent + 1};
892 out << indent_str << Reference() << " = {\n"; 907 out << indent_str << Reference() << " = {\n";
893 PrintProperty(out, rules, "isa", ToString(Class())); 908 PrintProperty(out, rules, "isa", ToString(Class()));
894 PrintProperty(out, rules, "buildConfigurations", configurations_); 909 PrintProperty(out, rules, "buildConfigurations", configurations_);
895 PrintProperty(out, rules, "defaultConfigurationIsVisible", 1u); 910 PrintProperty(out, rules, "defaultConfigurationIsVisible", 1u);
896 PrintProperty(out, rules, "defaultConfigurationName", 911 PrintProperty(out, rules, "defaultConfigurationName",
897 configurations_[0]->Name()); 912 configurations_[0]->Name());
898 out << indent_str << "};\n"; 913 out << indent_str << "};\n";
899 } 914 }
OLDNEW
« no previous file with comments | « tools/gn/xcode_object.h ('k') | tools/gn/xcode_writer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698