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

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

Issue 2363193002: Use WithoutPathExpansion on DictionaryValue in GN. (Closed)
Patch Set: Created 4 years, 2 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
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 <set> 5 #include <set>
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "tools/gn/commands.h" 9 #include "tools/gn/commands.h"
10 #include "tools/gn/config.h" 10 #include "tools/gn/config.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 out->AppendString(name); 152 out->AppendString(name);
153 if (tree_) 153 if (tree_)
154 FillInConfigVector(out, config.ptr->configs(), indent + 1); 154 FillInConfigVector(out, config.ptr->configs(), indent + 1);
155 } 155 }
156 } 156 }
157 157
158 void FillInPrecompiledHeader(base::DictionaryValue* out, 158 void FillInPrecompiledHeader(base::DictionaryValue* out,
159 const ConfigValues& values) { 159 const ConfigValues& values) {
160 if (what(variables::kPrecompiledHeader) && 160 if (what(variables::kPrecompiledHeader) &&
161 !values.precompiled_header().empty()) { 161 !values.precompiled_header().empty()) {
162 out->Set(variables::kPrecompiledHeader, 162 out->SetWithoutPathExpansion(
163 RenderValue(values.precompiled_header(), true)); 163 variables::kPrecompiledHeader,
164 RenderValue(values.precompiled_header(), true));
164 } 165 }
165 if (what(variables::kPrecompiledSource) && 166 if (what(variables::kPrecompiledSource) &&
166 !values.precompiled_source().is_null()) { 167 !values.precompiled_source().is_null()) {
167 out->Set(variables::kPrecompiledSource, 168 out->SetWithoutPathExpansion(variables::kPrecompiledSource,
168 RenderValue(values.precompiled_source())); 169 RenderValue(values.precompiled_source()));
169 } 170 }
170 } 171 }
171 172
172 std::set<std::string> what_; 173 std::set<std::string> what_;
173 bool all_; 174 bool all_;
174 bool tree_; 175 bool tree_;
175 bool blame_; 176 bool blame_;
176 }; 177 };
177 178
178 class ConfigDescBuilder : public BaseDescBuilder { 179 class ConfigDescBuilder : public BaseDescBuilder {
179 public: 180 public:
180 ConfigDescBuilder(const Config* config, const std::set<std::string>& what) 181 ConfigDescBuilder(const Config* config, const std::set<std::string>& what)
181 : BaseDescBuilder(what, false, false, false), config_(config) {} 182 : BaseDescBuilder(what, false, false, false), config_(config) {}
182 183
183 std::unique_ptr<base::DictionaryValue> BuildDescription() { 184 std::unique_ptr<base::DictionaryValue> BuildDescription() {
184 auto res = base::MakeUnique<base::DictionaryValue>(); 185 auto res = base::MakeUnique<base::DictionaryValue>();
185 const ConfigValues& values = config_->resolved_values(); 186 const ConfigValues& values = config_->resolved_values();
186 187
187 if (what_.empty()) 188 if (what_.empty())
188 res->SetString( 189 res->SetStringWithoutPathExpansion(
189 "toolchain", 190 "toolchain",
190 config_->label().GetToolchainLabel().GetUserVisibleName(false)); 191 config_->label().GetToolchainLabel().GetUserVisibleName(false));
191 192
192 if (what(variables::kConfigs) && !config_->configs().empty()) { 193 if (what(variables::kConfigs) && !config_->configs().empty()) {
193 auto configs = base::MakeUnique<base::ListValue>(); 194 auto configs = base::MakeUnique<base::ListValue>();
194 FillInConfigVector(configs.get(), config_->configs().vector()); 195 FillInConfigVector(configs.get(), config_->configs().vector());
195 res->Set(variables::kConfigs, std::move(configs)); 196 res->SetWithoutPathExpansion(variables::kConfigs, std::move(configs));
196 } 197 }
197 198
198 #define CONFIG_VALUE_ARRAY_HANDLER(name, type) \ 199 #define CONFIG_VALUE_ARRAY_HANDLER(name, type) \
199 if (what(#name)) { \ 200 if (what(#name)) { \
200 ValuePtr ptr = \ 201 ValuePtr ptr = \
201 render_config_value_array<type>(values, &ConfigValues::name); \ 202 render_config_value_array<type>(values, &ConfigValues::name); \
202 if (ptr) { \ 203 if (ptr) { \
203 res->Set(#name, std::move(ptr)); \ 204 res->SetWithoutPathExpansion(#name, std::move(ptr)); \
204 } \ 205 } \
205 } 206 }
206 CONFIG_VALUE_ARRAY_HANDLER(arflags, std::string) 207 CONFIG_VALUE_ARRAY_HANDLER(arflags, std::string)
207 CONFIG_VALUE_ARRAY_HANDLER(asmflags, std::string) 208 CONFIG_VALUE_ARRAY_HANDLER(asmflags, std::string)
208 CONFIG_VALUE_ARRAY_HANDLER(cflags, std::string) 209 CONFIG_VALUE_ARRAY_HANDLER(cflags, std::string)
209 CONFIG_VALUE_ARRAY_HANDLER(cflags_c, std::string) 210 CONFIG_VALUE_ARRAY_HANDLER(cflags_c, std::string)
210 CONFIG_VALUE_ARRAY_HANDLER(cflags_cc, std::string) 211 CONFIG_VALUE_ARRAY_HANDLER(cflags_cc, std::string)
211 CONFIG_VALUE_ARRAY_HANDLER(cflags_objc, std::string) 212 CONFIG_VALUE_ARRAY_HANDLER(cflags_objc, std::string)
212 CONFIG_VALUE_ARRAY_HANDLER(cflags_objcc, std::string) 213 CONFIG_VALUE_ARRAY_HANDLER(cflags_objcc, std::string)
213 CONFIG_VALUE_ARRAY_HANDLER(defines, std::string) 214 CONFIG_VALUE_ARRAY_HANDLER(defines, std::string)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 bool all, 252 bool all,
252 bool tree, 253 bool tree,
253 bool blame) 254 bool blame)
254 : BaseDescBuilder(what, all, tree, blame), target_(target) {} 255 : BaseDescBuilder(what, all, tree, blame), target_(target) {}
255 256
256 std::unique_ptr<base::DictionaryValue> BuildDescription() { 257 std::unique_ptr<base::DictionaryValue> BuildDescription() {
257 auto res = base::MakeUnique<base::DictionaryValue>(); 258 auto res = base::MakeUnique<base::DictionaryValue>();
258 bool is_binary_output = target_->IsBinary(); 259 bool is_binary_output = target_->IsBinary();
259 260
260 if (what_.empty()) { 261 if (what_.empty()) {
261 res->SetString("type", 262 res->SetStringWithoutPathExpansion(
262 Target::GetStringForOutputType(target_->output_type())); 263 "type",
263 res->SetString( 264 Target::GetStringForOutputType(target_->output_type()));
265 res->SetStringWithoutPathExpansion(
264 "toolchain", 266 "toolchain",
265 target_->label().GetToolchainLabel().GetUserVisibleName(false)); 267 target_->label().GetToolchainLabel().GetUserVisibleName(false));
266 } 268 }
267 269
268 // General target meta variables. 270 // General target meta variables.
269 if (what(variables::kVisibility)) 271 if (what(variables::kVisibility))
270 res->Set(variables::kVisibility, target_->visibility().AsValue()); 272 res->SetWithoutPathExpansion(variables::kVisibility,
273 target_->visibility().AsValue());
271 274
272 if (what(variables::kTestonly)) 275 if (what(variables::kTestonly))
273 res->SetBoolean(variables::kTestonly, target_->testonly()); 276 res->SetBooleanWithoutPathExpansion(variables::kTestonly,
277 target_->testonly());
274 278
275 if (is_binary_output) { 279 if (is_binary_output) {
276 if (what(variables::kCheckIncludes)) 280 if (what(variables::kCheckIncludes))
277 res->SetBoolean(variables::kCheckIncludes, target_->check_includes()); 281 res->SetBooleanWithoutPathExpansion(variables::kCheckIncludes,
282 target_->check_includes());
278 283
279 if (what(variables::kAllowCircularIncludesFrom)) { 284 if (what(variables::kAllowCircularIncludesFrom)) {
280 auto labels = base::MakeUnique<base::ListValue>(); 285 auto labels = base::MakeUnique<base::ListValue>();
281 for (const auto& cur : target_->allow_circular_includes_from()) 286 for (const auto& cur : target_->allow_circular_includes_from())
282 labels->AppendString(cur.GetUserVisibleName(GetToolchainLabel())); 287 labels->AppendString(cur.GetUserVisibleName(GetToolchainLabel()));
283 288
284 res->Set(variables::kAllowCircularIncludesFrom, std::move(labels)); 289 res->SetWithoutPathExpansion(variables::kAllowCircularIncludesFrom,
290 std::move(labels));
285 } 291 }
286 } 292 }
287 293
288 if (what(variables::kSources) && !target_->sources().empty()) 294 if (what(variables::kSources) && !target_->sources().empty())
289 res->Set(variables::kSources, RenderValue(target_->sources())); 295 res->SetWithoutPathExpansion(variables::kSources,
296 RenderValue(target_->sources()));
290 297
291 if (what(variables::kOutputName) && !target_->output_name().empty()) 298 if (what(variables::kOutputName) && !target_->output_name().empty())
292 res->SetString(variables::kOutputName, target_->output_name()); 299 res->SetStringWithoutPathExpansion(variables::kOutputName,
300 target_->output_name());
293 301
294 if (what(variables::kOutputDir) && !target_->output_dir().is_null()) 302 if (what(variables::kOutputDir) && !target_->output_dir().is_null())
295 res->Set(variables::kOutputDir, RenderValue(target_->output_dir())); 303 res->SetWithoutPathExpansion(variables::kOutputDir,
304 RenderValue(target_->output_dir()));
296 305
297 if (what(variables::kOutputExtension) && target_->output_extension_set()) 306 if (what(variables::kOutputExtension) && target_->output_extension_set())
298 res->SetString(variables::kOutputExtension, target_->output_extension()); 307 res->SetStringWithoutPathExpansion(variables::kOutputExtension,
308 target_->output_extension());
299 309
300 if (what(variables::kPublic)) { 310 if (what(variables::kPublic)) {
301 if (target_->all_headers_public()) 311 if (target_->all_headers_public())
302 res->SetString(variables::kPublic, "*"); 312 res->SetStringWithoutPathExpansion(variables::kPublic, "*");
303 else 313 else
304 res->Set(variables::kPublic, RenderValue(target_->public_headers())); 314 res->SetWithoutPathExpansion(variables::kPublic,
315 RenderValue(target_->public_headers()));
305 } 316 }
306 317
307 if (what(variables::kInputs) && !target_->inputs().empty()) 318 if (what(variables::kInputs) && !target_->inputs().empty())
308 res->Set(variables::kInputs, RenderValue(target_->inputs())); 319 res->SetWithoutPathExpansion(variables::kInputs,
320 RenderValue(target_->inputs()));
309 321
310 if (is_binary_output && what(variables::kConfigs) && 322 if (is_binary_output && what(variables::kConfigs) &&
311 !target_->configs().empty()) { 323 !target_->configs().empty()) {
312 auto configs = base::MakeUnique<base::ListValue>(); 324 auto configs = base::MakeUnique<base::ListValue>();
313 FillInConfigVector(configs.get(), target_->configs().vector()); 325 FillInConfigVector(configs.get(), target_->configs().vector());
314 res->Set(variables::kConfigs, std::move(configs)); 326 res->SetWithoutPathExpansion(variables::kConfigs, std::move(configs));
315 } 327 }
316 328
317 if (what(variables::kPublicConfigs) && !target_->public_configs().empty()) { 329 if (what(variables::kPublicConfigs) && !target_->public_configs().empty()) {
318 auto configs = base::MakeUnique<base::ListValue>(); 330 auto configs = base::MakeUnique<base::ListValue>();
319 FillInConfigVector(configs.get(), target_->public_configs()); 331 FillInConfigVector(configs.get(), target_->public_configs());
320 res->Set(variables::kPublicConfigs, std::move(configs)); 332 res->SetWithoutPathExpansion(variables::kPublicConfigs,
333 std::move(configs));
321 } 334 }
322 335
323 if (what(variables::kAllDependentConfigs) && 336 if (what(variables::kAllDependentConfigs) &&
324 !target_->all_dependent_configs().empty()) { 337 !target_->all_dependent_configs().empty()) {
325 auto configs = base::MakeUnique<base::ListValue>(); 338 auto configs = base::MakeUnique<base::ListValue>();
326 FillInConfigVector(configs.get(), target_->all_dependent_configs()); 339 FillInConfigVector(configs.get(), target_->all_dependent_configs());
327 res->Set(variables::kAllDependentConfigs, std::move(configs)); 340 res->SetWithoutPathExpansion(variables::kAllDependentConfigs,
341 std::move(configs));
328 } 342 }
329 343
330 // Action 344 // Action
331 if (target_->output_type() == Target::ACTION || 345 if (target_->output_type() == Target::ACTION ||
332 target_->output_type() == Target::ACTION_FOREACH) { 346 target_->output_type() == Target::ACTION_FOREACH) {
333 if (what(variables::kScript)) 347 if (what(variables::kScript))
334 res->SetString(variables::kScript, 348 res->SetStringWithoutPathExpansion(
335 target_->action_values().script().value()); 349 variables::kScript,
350 target_->action_values().script().value());
336 351
337 if (what(variables::kArgs)) { 352 if (what(variables::kArgs)) {
338 auto args = base::MakeUnique<base::ListValue>(); 353 auto args = base::MakeUnique<base::ListValue>();
339 for (const auto& elem : target_->action_values().args().list()) 354 for (const auto& elem : target_->action_values().args().list())
340 args->AppendString(elem.AsString()); 355 args->AppendString(elem.AsString());
341 356
342 res->Set(variables::kArgs, std::move(args)); 357 res->SetWithoutPathExpansion(variables::kArgs, std::move(args));
343 } 358 }
344 if (what(variables::kDepfile) && 359 if (what(variables::kDepfile) &&
345 !target_->action_values().depfile().empty()) { 360 !target_->action_values().depfile().empty()) {
346 res->SetString(variables::kDepfile, 361 res->SetStringWithoutPathExpansion(
347 target_->action_values().depfile().AsString()); 362 variables::kDepfile,
363 target_->action_values().depfile().AsString());
348 } 364 }
349 } 365 }
350 366
351 if (target_->output_type() != Target::SOURCE_SET && 367 if (target_->output_type() != Target::SOURCE_SET &&
352 target_->output_type() != Target::GROUP && 368 target_->output_type() != Target::GROUP &&
353 target_->output_type() != Target::BUNDLE_DATA) { 369 target_->output_type() != Target::BUNDLE_DATA) {
354 if (what(variables::kOutputs)) 370 if (what(variables::kOutputs))
355 FillInOutputs(res.get()); 371 FillInOutputs(res.get());
356 } 372 }
357 373
358 // Source outputs are only included when specifically asked for it 374 // Source outputs are only included when specifically asked for it
359 if (what_.find("source_outputs") != what_.end()) 375 if (what_.find("source_outputs") != what_.end())
360 FillInSourceOutputs(res.get()); 376 FillInSourceOutputs(res.get());
361 377
362 if (target_->output_type() == Target::CREATE_BUNDLE && what("bundle_data")) 378 if (target_->output_type() == Target::CREATE_BUNDLE && what("bundle_data"))
363 FillInBundle(res.get()); 379 FillInBundle(res.get());
364 380
365 if (is_binary_output) { 381 if (is_binary_output) {
366 #define CONFIG_VALUE_ARRAY_HANDLER(name, type) \ 382 #define CONFIG_VALUE_ARRAY_HANDLER(name, type) \
367 if (what(#name)) { \ 383 if (what(#name)) { \
368 ValuePtr ptr = RenderConfigValues<type>(&ConfigValues::name); \ 384 ValuePtr ptr = RenderConfigValues<type>(&ConfigValues::name); \
369 if (ptr) { \ 385 if (ptr) { \
370 res->Set(#name, std::move(ptr)); \ 386 res->SetWithoutPathExpansion(#name, std::move(ptr)); \
371 } \ 387 } \
372 } 388 }
373 CONFIG_VALUE_ARRAY_HANDLER(arflags, std::string) 389 CONFIG_VALUE_ARRAY_HANDLER(arflags, std::string)
374 CONFIG_VALUE_ARRAY_HANDLER(asmflags, std::string) 390 CONFIG_VALUE_ARRAY_HANDLER(asmflags, std::string)
375 CONFIG_VALUE_ARRAY_HANDLER(cflags, std::string) 391 CONFIG_VALUE_ARRAY_HANDLER(cflags, std::string)
376 CONFIG_VALUE_ARRAY_HANDLER(cflags_c, std::string) 392 CONFIG_VALUE_ARRAY_HANDLER(cflags_c, std::string)
377 CONFIG_VALUE_ARRAY_HANDLER(cflags_cc, std::string) 393 CONFIG_VALUE_ARRAY_HANDLER(cflags_cc, std::string)
378 CONFIG_VALUE_ARRAY_HANDLER(cflags_objc, std::string) 394 CONFIG_VALUE_ARRAY_HANDLER(cflags_objc, std::string)
379 CONFIG_VALUE_ARRAY_HANDLER(cflags_objcc, std::string) 395 CONFIG_VALUE_ARRAY_HANDLER(cflags_objcc, std::string)
380 CONFIG_VALUE_ARRAY_HANDLER(defines, std::string) 396 CONFIG_VALUE_ARRAY_HANDLER(defines, std::string)
381 CONFIG_VALUE_ARRAY_HANDLER(include_dirs, SourceDir) 397 CONFIG_VALUE_ARRAY_HANDLER(include_dirs, SourceDir)
382 CONFIG_VALUE_ARRAY_HANDLER(ldflags, std::string) 398 CONFIG_VALUE_ARRAY_HANDLER(ldflags, std::string)
383 #undef CONFIG_VALUE_ARRAY_HANDLER 399 #undef CONFIG_VALUE_ARRAY_HANDLER
384 400
385 // Libs and lib_dirs are handled specially below. 401 // Libs and lib_dirs are handled specially below.
386 402
387 FillInPrecompiledHeader(res.get(), target_->config_values()); 403 FillInPrecompiledHeader(res.get(), target_->config_values());
388 } 404 }
389 405
390 if (what(variables::kDeps)) 406 if (what(variables::kDeps))
391 res->Set(variables::kDeps, RenderDeps()); 407 res->SetWithoutPathExpansion(variables::kDeps, RenderDeps());
392 408
393 // Runtime deps are special, print only when explicitly asked for and not in 409 // Runtime deps are special, print only when explicitly asked for and not in
394 // overview mode. 410 // overview mode.
395 if (what_.find("runtime_deps") != what_.end()) 411 if (what_.find("runtime_deps") != what_.end())
396 res->Set("runtime_deps", RenderRuntimeDeps()); 412 res->SetWithoutPathExpansion("runtime_deps", RenderRuntimeDeps());
397 413
398 // libs and lib_dirs are special in that they're inherited. We don't 414 // libs and lib_dirs are special in that they're inherited. We don't
399 // currently 415 // currently
400 // implement a blame feature for this since the bottom-up inheritance makes 416 // implement a blame feature for this since the bottom-up inheritance makes
401 // this difficult. 417 // this difficult.
402 418
403 // Libs can be part of any target and get recursively pushed up the chain, 419 // Libs can be part of any target and get recursively pushed up the chain,
404 // so display them regardless of target type. 420 // so display them regardless of target type.
405 if (what(variables::kLibs)) { 421 if (what(variables::kLibs)) {
406 const OrderedSet<LibFile>& all_libs = target_->all_libs(); 422 const OrderedSet<LibFile>& all_libs = target_->all_libs();
407 if (!all_libs.empty()) { 423 if (!all_libs.empty()) {
408 auto libs = base::MakeUnique<base::ListValue>(); 424 auto libs = base::MakeUnique<base::ListValue>();
409 for (size_t i = 0; i < all_libs.size(); i++) 425 for (size_t i = 0; i < all_libs.size(); i++)
410 libs->AppendString(all_libs[i].value()); 426 libs->AppendString(all_libs[i].value());
411 res->Set(variables::kLibs, std::move(libs)); 427 res->SetWithoutPathExpansion(variables::kLibs, std::move(libs));
412 } 428 }
413 } 429 }
414 430
415 if (what(variables::kLibDirs)) { 431 if (what(variables::kLibDirs)) {
416 const OrderedSet<SourceDir>& all_lib_dirs = target_->all_lib_dirs(); 432 const OrderedSet<SourceDir>& all_lib_dirs = target_->all_lib_dirs();
417 if (!all_lib_dirs.empty()) { 433 if (!all_lib_dirs.empty()) {
418 auto lib_dirs = base::MakeUnique<base::ListValue>(); 434 auto lib_dirs = base::MakeUnique<base::ListValue>();
419 for (size_t i = 0; i < all_lib_dirs.size(); i++) 435 for (size_t i = 0; i < all_lib_dirs.size(); i++)
420 lib_dirs->AppendString(FormatSourceDir(all_lib_dirs[i])); 436 lib_dirs->AppendString(FormatSourceDir(all_lib_dirs[i]));
421 res->Set(variables::kLibDirs, std::move(lib_dirs)); 437 res->SetWithoutPathExpansion(variables::kLibDirs, std::move(lib_dirs));
422 } 438 }
423 } 439 }
424 440
425 return res; 441 return res;
426 } 442 }
427 443
428 private: 444 private:
429 // Prints dependencies of the given target (not the target itself). If the 445 // Prints dependencies of the given target (not the target itself). If the
430 // set is non-null, new targets encountered will be added to the set, and if 446 // set is non-null, new targets encountered will be added to the set, and if
431 // a dependency is in the set already, it will not be recused into. When the 447 // a dependency is in the set already, it will not be recused into. When the
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 std::vector<OutputFile> outputs; 553 std::vector<OutputFile> outputs;
538 Toolchain::ToolType tool_type = Toolchain::TYPE_NONE; 554 Toolchain::ToolType tool_type = Toolchain::TYPE_NONE;
539 if (target_->GetOutputFilesForSource(source, &tool_type, &outputs)) { 555 if (target_->GetOutputFilesForSource(source, &tool_type, &outputs)) {
540 auto list = base::MakeUnique<base::ListValue>(); 556 auto list = base::MakeUnique<base::ListValue>();
541 for (const auto& output : outputs) 557 for (const auto& output : outputs)
542 list->AppendString(output.value()); 558 list->AppendString(output.value());
543 559
544 dict->SetWithoutPathExpansion(source.value(), std::move(list)); 560 dict->SetWithoutPathExpansion(source.value(), std::move(list));
545 } 561 }
546 } 562 }
547 res->Set("source_outputs", std::move(dict)); 563 res->SetWithoutPathExpansion("source_outputs", std::move(dict));
548 } 564 }
549 565
550 void FillInBundle(base::DictionaryValue* res) { 566 void FillInBundle(base::DictionaryValue* res) {
551 auto data = base::MakeUnique<base::DictionaryValue>(); 567 auto data = base::MakeUnique<base::DictionaryValue>();
552 const BundleData& bundle_data = target_->bundle_data(); 568 const BundleData& bundle_data = target_->bundle_data();
553 const Settings* settings = target_->settings(); 569 const Settings* settings = target_->settings();
554 BundleData::SourceFiles sources; 570 BundleData::SourceFiles sources;
555 bundle_data.GetSourceFiles(&sources); 571 bundle_data.GetSourceFiles(&sources);
556 data->Set("source_files", RenderValue(sources)); 572 data->SetWithoutPathExpansion("source_files", RenderValue(sources));
557 data->SetString("root_dir_output", 573 data->SetStringWithoutPathExpansion(
558 bundle_data.GetBundleRootDirOutput(settings).value()); 574 "root_dir_output",
559 data->Set("root_dir", RenderValue(bundle_data.root_dir())); 575 bundle_data.GetBundleRootDirOutput(settings).value());
560 data->Set("resources_dir", RenderValue(bundle_data.resources_dir())); 576 data->SetWithoutPathExpansion("root_dir",
561 data->Set("executable_dir", RenderValue(bundle_data.executable_dir())); 577 RenderValue(bundle_data.root_dir()));
562 data->Set("plugins_dir", RenderValue(bundle_data.plugins_dir())); 578 data->SetWithoutPathExpansion("resources_dir",
563 data->SetString("product_type", bundle_data.product_type()); 579 RenderValue(bundle_data.resources_dir()));
580 data->SetWithoutPathExpansion("executable_dir",
581 RenderValue(bundle_data.executable_dir()));
582 data->SetWithoutPathExpansion("plugins_dir",
583 RenderValue(bundle_data.plugins_dir()));
584 data->SetStringWithoutPathExpansion("product_type",
585 bundle_data.product_type());
564 586
565 auto deps = base::MakeUnique<base::ListValue>(); 587 auto deps = base::MakeUnique<base::ListValue>();
566 for (const auto* dep : bundle_data.bundle_deps()) 588 for (const auto* dep : bundle_data.bundle_deps())
567 deps->AppendString(dep->label().GetUserVisibleName(GetToolchainLabel())); 589 deps->AppendString(dep->label().GetUserVisibleName(GetToolchainLabel()));
568 590
569 data->Set("deps", std::move(deps)); 591 data->SetWithoutPathExpansion("deps", std::move(deps));
570 res->Set("bundle_data", std::move(data)); 592 res->SetWithoutPathExpansion("bundle_data", std::move(data));
571 } 593 }
572 594
573 void FillInOutputs(base::DictionaryValue* res) { 595 void FillInOutputs(base::DictionaryValue* res) {
574 if (target_->output_type() == Target::ACTION) { 596 if (target_->output_type() == Target::ACTION) {
575 auto list = base::MakeUnique<base::ListValue>(); 597 auto list = base::MakeUnique<base::ListValue>();
576 for (const auto& elem : target_->action_values().outputs().list()) 598 for (const auto& elem : target_->action_values().outputs().list())
577 list->AppendString(elem.AsString()); 599 list->AppendString(elem.AsString());
578 600
579 res->Set(variables::kOutputs, std::move(list)); 601 res->SetWithoutPathExpansion(variables::kOutputs, std::move(list));
580 } else if (target_->output_type() == Target::CREATE_BUNDLE) { 602 } else if (target_->output_type() == Target::CREATE_BUNDLE) {
581 std::vector<SourceFile> output_files; 603 std::vector<SourceFile> output_files;
582 target_->bundle_data().GetOutputsAsSourceFiles(target_->settings(), 604 target_->bundle_data().GetOutputsAsSourceFiles(target_->settings(),
583 &output_files); 605 &output_files);
584 res->Set(variables::kOutputs, RenderValue(output_files)); 606 res->SetWithoutPathExpansion(variables::kOutputs,
607 RenderValue(output_files));
585 } else if (target_->output_type() == Target::ACTION_FOREACH || 608 } else if (target_->output_type() == Target::ACTION_FOREACH ||
586 target_->output_type() == Target::COPY_FILES) { 609 target_->output_type() == Target::COPY_FILES) {
587 const SubstitutionList& outputs = target_->action_values().outputs(); 610 const SubstitutionList& outputs = target_->action_values().outputs();
588 if (!outputs.required_types().empty()) { 611 if (!outputs.required_types().empty()) {
589 auto patterns = base::MakeUnique<base::ListValue>(); 612 auto patterns = base::MakeUnique<base::ListValue>();
590 for (const auto& elem : outputs.list()) 613 for (const auto& elem : outputs.list())
591 patterns->AppendString(elem.AsString()); 614 patterns->AppendString(elem.AsString());
592 615
593 res->Set("output_patterns", std::move(patterns)); 616 res->SetWithoutPathExpansion("output_patterns", std::move(patterns));
594 } 617 }
595 std::vector<SourceFile> output_files; 618 std::vector<SourceFile> output_files;
596 SubstitutionWriter::ApplyListToSources(target_->settings(), outputs, 619 SubstitutionWriter::ApplyListToSources(target_->settings(), outputs,
597 target_->sources(), &output_files); 620 target_->sources(), &output_files);
598 res->Set(variables::kOutputs, RenderValue(output_files)); 621 res->SetWithoutPathExpansion(variables::kOutputs,
622 RenderValue(output_files));
599 } else { 623 } else {
600 DCHECK(target_->IsBinary()); 624 DCHECK(target_->IsBinary());
601 const Tool* tool = 625 const Tool* tool =
602 target_->toolchain()->GetToolForTargetFinalOutput(target_); 626 target_->toolchain()->GetToolForTargetFinalOutput(target_);
603 627
604 std::vector<OutputFile> output_files; 628 std::vector<OutputFile> output_files;
605 SubstitutionWriter::ApplyListToLinkerAsOutputFile( 629 SubstitutionWriter::ApplyListToLinkerAsOutputFile(
606 target_, tool, tool->outputs(), &output_files); 630 target_, tool, tool->outputs(), &output_files);
607 std::vector<SourceFile> output_files_as_source_file; 631 std::vector<SourceFile> output_files_as_source_file;
608 for (const OutputFile& output_file : output_files) 632 for (const OutputFile& output_file : output_files)
609 output_files_as_source_file.push_back( 633 output_files_as_source_file.push_back(
610 output_file.AsSourceFile(target_->settings()->build_settings())); 634 output_file.AsSourceFile(target_->settings()->build_settings()));
611 635
612 res->Set(variables::kOutputs, RenderValue(output_files_as_source_file)); 636 res->SetWithoutPathExpansion(variables::kOutputs,
637 RenderValue(output_files_as_source_file));
613 } 638 }
614 } 639 }
615 640
616 // Writes a given config value type to the string, optionally with 641 // Writes a given config value type to the string, optionally with
617 // attribution. 642 // attribution.
618 // This should match RecursiveTargetConfigToStream in the order it traverses. 643 // This should match RecursiveTargetConfigToStream in the order it traverses.
619 template <class T> 644 template <class T>
620 ValuePtr RenderConfigValues(const std::vector<T>& (ConfigValues::*getter)() 645 ValuePtr RenderConfigValues(const std::vector<T>& (ConfigValues::*getter)()
621 const) { 646 const) {
622 auto res = base::MakeUnique<base::ListValue>(); 647 auto res = base::MakeUnique<base::ListValue>();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 710
686 std::unique_ptr<base::DictionaryValue> DescBuilder::DescriptionForConfig( 711 std::unique_ptr<base::DictionaryValue> DescBuilder::DescriptionForConfig(
687 const Config* config, 712 const Config* config,
688 const std::string& what) { 713 const std::string& what) {
689 std::set<std::string> w; 714 std::set<std::string> w;
690 if (!what.empty()) 715 if (!what.empty())
691 w.insert(what); 716 w.insert(what);
692 ConfigDescBuilder b(config, w); 717 ConfigDescBuilder b(config, w);
693 return b.BuildDescription(); 718 return b.BuildDescription();
694 } 719 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698