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

Side by Side Diff: tools/gn/json_project_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/json_project_writer.h ('k') | tools/gn/ninja_build_writer.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/json_project_writer.h" 5 #include "tools/gn/json_project_writer.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 // in the generated project (and thus stability of the file generated). 75 // in the generated project (and thus stability of the file generated).
76 std::sort(targets->begin(), targets->end(), 76 std::sort(targets->begin(), targets->end(),
77 [](const Target* a, const Target* b) { 77 [](const Target* a, const Target* b) {
78 return a->label().name() < b->label().name(); 78 return a->label().name() < b->label().name();
79 }); 79 });
80 80
81 return true; 81 return true;
82 } 82 }
83 83
84 std::string RenderJSON(const BuildSettings* build_settings, 84 std::string RenderJSON(const BuildSettings* build_settings,
85 const Builder* builder, 85 const Builder& builder,
86 std::vector<const Target*>& all_targets) { 86 std::vector<const Target*>& all_targets) {
87 Label default_toolchain_label; 87 Label default_toolchain_label;
88 88
89 auto targets = base::WrapUnique(new base::DictionaryValue()); 89 auto targets = base::WrapUnique(new base::DictionaryValue());
90 for (const auto* target : all_targets) { 90 for (const auto* target : all_targets) {
91 if (default_toolchain_label.is_null()) 91 if (default_toolchain_label.is_null())
92 default_toolchain_label = target->settings()->default_toolchain_label(); 92 default_toolchain_label = target->settings()->default_toolchain_label();
93 auto description = 93 auto description =
94 DescBuilder::DescriptionForTarget(target, "", false, false, false); 94 DescBuilder::DescriptionForTarget(target, "", false, false, false);
95 // Outputs need to be asked for separately. 95 // Outputs need to be asked for separately.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 return false; 160 return false;
161 } 161 }
162 162
163 return true; 163 return true;
164 } 164 }
165 165
166 } // namespace 166 } // namespace
167 167
168 bool JSONProjectWriter::RunAndWriteFiles( 168 bool JSONProjectWriter::RunAndWriteFiles(
169 const BuildSettings* build_settings, 169 const BuildSettings* build_settings,
170 const Builder* builder, 170 const Builder& builder,
171 const std::string& file_name, 171 const std::string& file_name,
172 const std::string& exec_script, 172 const std::string& exec_script,
173 const std::string& exec_script_extra_args, 173 const std::string& exec_script_extra_args,
174 const std::string& dir_filter_string, 174 const std::string& dir_filter_string,
175 bool quiet, 175 bool quiet,
176 Err* err) { 176 Err* err) {
177 SourceFile output_file = build_settings->build_dir().ResolveRelativeFile( 177 SourceFile output_file = build_settings->build_dir().ResolveRelativeFile(
178 Value(nullptr, file_name), err); 178 Value(nullptr, file_name), err);
179 if (output_file.is_null()) { 179 if (output_file.is_null()) {
180 return false; 180 return false;
181 } 181 }
182 182
183 base::FilePath output_path = build_settings->GetFullPath(output_file); 183 base::FilePath output_path = build_settings->GetFullPath(output_file);
184 184
185 std::vector<const Target*> all_targets = builder->GetAllResolvedTargets(); 185 std::vector<const Target*> all_targets = builder.GetAllResolvedTargets();
186 std::vector<const Target*> targets; 186 std::vector<const Target*> targets;
187 if (!FilterTargets(build_settings, all_targets, &targets, dir_filter_string, 187 if (!FilterTargets(build_settings, all_targets, &targets, dir_filter_string,
188 err)) { 188 err)) {
189 return false; 189 return false;
190 } 190 }
191 191
192 std::string json = RenderJSON(build_settings, builder, targets); 192 std::string json = RenderJSON(build_settings, builder, targets);
193 if (!ContentsEqual(output_path, json)) { 193 if (!ContentsEqual(output_path, json)) {
194 if (!WriteFileIfChanged(output_path, json, err)) { 194 if (!WriteFileIfChanged(output_path, json, err)) {
195 return false; 195 return false;
(...skipping 12 matching lines...) Expand all
208 script_file = SourceFile(exec_script); 208 script_file = SourceFile(exec_script);
209 } 209 }
210 base::FilePath script_path = build_settings->GetFullPath(script_file); 210 base::FilePath script_path = build_settings->GetFullPath(script_file);
211 return InvokePython(build_settings, script_path, exec_script_extra_args, 211 return InvokePython(build_settings, script_path, exec_script_extra_args,
212 output_path, quiet, err); 212 output_path, quiet, err);
213 } 213 }
214 } 214 }
215 215
216 return true; 216 return true;
217 } 217 }
OLDNEW
« no previous file with comments | « tools/gn/json_project_writer.h ('k') | tools/gn/ninja_build_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698