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

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

Issue 2152413002: GN: don't write separate files for non-binary targets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: typo Created 4 years, 4 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/qt_creator_writer.h ('k') | tools/gn/settings.h » ('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) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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/qt_creator_writer.h" 5 #include "tools/gn/qt_creator_writer.h"
6 6
7 #include <set> 7 #include <set>
8 #include <sstream> 8 #include <sstream>
9 #include <string> 9 #include <string>
10 10
(...skipping 14 matching lines...) Expand all
25 base::FilePath::CharType kProjectName[] = FILE_PATH_LITERAL("all"); 25 base::FilePath::CharType kProjectName[] = FILE_PATH_LITERAL("all");
26 base::FilePath::CharType kMainProjectFileSuffix[] = 26 base::FilePath::CharType kMainProjectFileSuffix[] =
27 FILE_PATH_LITERAL(".creator"); 27 FILE_PATH_LITERAL(".creator");
28 base::FilePath::CharType kSourcesFileSuffix[] = FILE_PATH_LITERAL(".files"); 28 base::FilePath::CharType kSourcesFileSuffix[] = FILE_PATH_LITERAL(".files");
29 base::FilePath::CharType kIncludesFileSuffix[] = FILE_PATH_LITERAL(".includes"); 29 base::FilePath::CharType kIncludesFileSuffix[] = FILE_PATH_LITERAL(".includes");
30 base::FilePath::CharType kDefinesFileSuffix[] = FILE_PATH_LITERAL(".config"); 30 base::FilePath::CharType kDefinesFileSuffix[] = FILE_PATH_LITERAL(".config");
31 } 31 }
32 32
33 // static 33 // static
34 bool QtCreatorWriter::RunAndWriteFile(const BuildSettings* build_settings, 34 bool QtCreatorWriter::RunAndWriteFile(const BuildSettings* build_settings,
35 const Builder* builder, 35 const Builder& builder,
36 Err* err, 36 Err* err,
37 const std::string& root_target) { 37 const std::string& root_target) {
38 base::FilePath project_dir = 38 base::FilePath project_dir =
39 build_settings->GetFullPath(build_settings->build_dir()) 39 build_settings->GetFullPath(build_settings->build_dir())
40 .Append(kProjectDirName); 40 .Append(kProjectDirName);
41 if (!base::DirectoryExists(project_dir)) { 41 if (!base::DirectoryExists(project_dir)) {
42 base::File::Error error; 42 base::File::Error error;
43 if (!base::CreateDirectoryAndGetError(project_dir, &error)) { 43 if (!base::CreateDirectoryAndGetError(project_dir, &error)) {
44 *err = 44 *err =
45 Err(Location(), "Could not create the QtCreator project directory '" + 45 Err(Location(), "Could not create the QtCreator project directory '" +
46 FilePathToUTF8(project_dir) + "': " + 46 FilePathToUTF8(project_dir) + "': " +
47 base::File::ErrorToString(error)); 47 base::File::ErrorToString(error));
48 return false; 48 return false;
49 } 49 }
50 } 50 }
51 51
52 base::FilePath project_prefix = project_dir.Append(kProjectName); 52 base::FilePath project_prefix = project_dir.Append(kProjectName);
53 QtCreatorWriter gen(build_settings, builder, project_prefix, root_target); 53 QtCreatorWriter gen(build_settings, builder, project_prefix, root_target);
54 gen.Run(); 54 gen.Run();
55 if (gen.err_.has_error()) { 55 if (gen.err_.has_error()) {
56 *err = gen.err_; 56 *err = gen.err_;
57 return false; 57 return false;
58 } 58 }
59 return true; 59 return true;
60 } 60 }
61 61
62 QtCreatorWriter::QtCreatorWriter(const BuildSettings* build_settings, 62 QtCreatorWriter::QtCreatorWriter(const BuildSettings* build_settings,
63 const Builder* builder, 63 const Builder& builder,
64 const base::FilePath& project_prefix, 64 const base::FilePath& project_prefix,
65 const std::string& root_target_name) 65 const std::string& root_target_name)
66 : build_settings_(build_settings), 66 : build_settings_(build_settings),
67 builder_(builder), 67 builder_(builder),
68 project_prefix_(project_prefix), 68 project_prefix_(project_prefix),
69 root_target_name_(root_target_name) {} 69 root_target_name_(root_target_name) {}
70 70
71 QtCreatorWriter::~QtCreatorWriter() {} 71 QtCreatorWriter::~QtCreatorWriter() {}
72 72
73 void QtCreatorWriter::CollectDeps(const Target* target) { 73 void QtCreatorWriter::CollectDeps(const Target* target) {
74 for (const auto& dep : target->GetDeps(Target::DEPS_ALL)) { 74 for (const auto& dep : target->GetDeps(Target::DEPS_ALL)) {
75 const Target* dep_target = dep.ptr; 75 const Target* dep_target = dep.ptr;
76 if (targets_.count(dep_target)) 76 if (targets_.count(dep_target))
77 continue; 77 continue;
78 targets_.insert(dep_target); 78 targets_.insert(dep_target);
79 CollectDeps(dep_target); 79 CollectDeps(dep_target);
80 } 80 }
81 } 81 }
82 82
83 bool QtCreatorWriter::DiscoverTargets() { 83 bool QtCreatorWriter::DiscoverTargets() {
84 auto all_targets = builder_->GetAllResolvedTargets(); 84 auto all_targets = builder_.GetAllResolvedTargets();
85 85
86 if (root_target_name_.empty()) { 86 if (root_target_name_.empty()) {
87 targets_ = std::set<const Target*>(all_targets.begin(), all_targets.end()); 87 targets_ = std::set<const Target*>(all_targets.begin(), all_targets.end());
88 return true; 88 return true;
89 } 89 }
90 90
91 const Target* root_target = nullptr; 91 const Target* root_target = nullptr;
92 for (const Target* target : all_targets) { 92 for (const Target* target : all_targets) {
93 if (target->label().name() == root_target_name_) { 93 if (target->label().name() == root_target_name_) {
94 root_target = target; 94 root_target = target;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 output << item << std::endl; 153 output << item << std::endl;
154 WriteFileIfChanged(file_path, output.str(), &err_); 154 WriteFileIfChanged(file_path, output.str(), &err_);
155 } 155 }
156 156
157 void QtCreatorWriter::Run() { 157 void QtCreatorWriter::Run() {
158 if (!DiscoverTargets()) 158 if (!DiscoverTargets())
159 return; 159 return;
160 160
161 for (const Target* target : targets_) { 161 for (const Target* target : targets_) {
162 if (target->toolchain()->label() != 162 if (target->toolchain()->label() !=
163 builder_->loader()->GetDefaultToolchain()) 163 builder_.loader()->GetDefaultToolchain())
164 continue; 164 continue;
165 HandleTarget(target); 165 HandleTarget(target);
166 } 166 }
167 167
168 std::set<std::string> empty_list; 168 std::set<std::string> empty_list;
169 169
170 GenerateFile(kMainProjectFileSuffix, empty_list); 170 GenerateFile(kMainProjectFileSuffix, empty_list);
171 GenerateFile(kSourcesFileSuffix, sources_); 171 GenerateFile(kSourcesFileSuffix, sources_);
172 GenerateFile(kIncludesFileSuffix, includes_); 172 GenerateFile(kIncludesFileSuffix, includes_);
173 GenerateFile(kDefinesFileSuffix, defines_); 173 GenerateFile(kDefinesFileSuffix, defines_);
174 } 174 }
OLDNEW
« no previous file with comments | « tools/gn/qt_creator_writer.h ('k') | tools/gn/settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698