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

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

Issue 1155303008: Allow directories for GN data lists. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@path
Patch Set: add dir test Created 5 years, 6 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/output_file.cc ('k') | tools/gn/runtime_deps_unittest.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/runtime_deps.h" 5 #include "tools/gn/runtime_deps.h"
6 6
7 #include <set> 7 #include <set>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 18 matching lines...) Expand all
29 // the found_files list. Updates the list. 29 // the found_files list. Updates the list.
30 void AddIfNew(const OutputFile& output_file, 30 void AddIfNew(const OutputFile& output_file,
31 const Target* source, 31 const Target* source,
32 RuntimeDepsVector* deps, 32 RuntimeDepsVector* deps,
33 std::set<OutputFile>* found_file) { 33 std::set<OutputFile>* found_file) {
34 if (found_file->find(output_file) != found_file->end()) 34 if (found_file->find(output_file) != found_file->end())
35 return; // Already there. 35 return; // Already there.
36 deps->push_back(std::make_pair(output_file, source)); 36 deps->push_back(std::make_pair(output_file, source));
37 } 37 }
38 38
39 // Automatically converts a SourceFile to an OutputFile. 39 // Automatically converts a string that looks like a source to an OutputFile.
40 void AddIfNew(const SourceFile& source_file, 40 void AddIfNew(const std::string& str,
41 const Target* source, 41 const Target* source,
42 RuntimeDepsVector* deps, 42 RuntimeDepsVector* deps,
43 std::set<OutputFile>* found_file) { 43 std::set<OutputFile>* found_file) {
44 AddIfNew(OutputFile(source->settings()->build_settings(), source_file), 44 OutputFile output_file(RebasePath(
45 source, deps, found_file); 45 str,
46 source->settings()->build_settings()->build_dir(),
47 source->settings()->build_settings()->root_path_utf8()));
48 AddIfNew(output_file, source, deps, found_file);
46 } 49 }
47 50
48 // Returns the output file that the runtime deps considers for the given 51 // Returns the output file that the runtime deps considers for the given
49 // targets. This is weird only for shared libraries. 52 // targets. This is weird only for shared libraries.
50 const OutputFile& GetMainOutput(const Target* target) { 53 const OutputFile& GetMainOutput(const Target* target) {
51 if (target->output_type() == Target::SHARED_LIBRARY) 54 if (target->output_type() == Target::SHARED_LIBRARY)
52 return target->link_output_file(); 55 return target->link_output_file();
53 return target->dependency_output_file(); 56 return target->dependency_output_file();
54 } 57 }
55 58
(...skipping 19 matching lines...) Expand all
75 AddIfNew(file, target, deps, found_files); 78 AddIfNew(file, target, deps, found_files);
76 79
77 // Actions/copy have all outputs considered when the're a data dep. 80 // Actions/copy have all outputs considered when the're a data dep.
78 if (is_target_data_dep && 81 if (is_target_data_dep &&
79 (target->output_type() == Target::ACTION || 82 (target->output_type() == Target::ACTION ||
80 target->output_type() == Target::ACTION_FOREACH || 83 target->output_type() == Target::ACTION_FOREACH ||
81 target->output_type() == Target::COPY_FILES)) { 84 target->output_type() == Target::COPY_FILES)) {
82 std::vector<SourceFile> outputs; 85 std::vector<SourceFile> outputs;
83 target->action_values().GetOutputsAsSourceFiles(target, &outputs); 86 target->action_values().GetOutputsAsSourceFiles(target, &outputs);
84 for (const auto& output_file : outputs) 87 for (const auto& output_file : outputs)
85 AddIfNew(output_file, target, deps, found_files); 88 AddIfNew(output_file.value(), target, deps, found_files);
86 } 89 }
87 90
88 // Non-data dependencies (both public and private). 91 // Non-data dependencies (both public and private).
89 for (const auto& dep_pair : target->GetDeps(Target::DEPS_LINKED)) { 92 for (const auto& dep_pair : target->GetDeps(Target::DEPS_LINKED)) {
90 if (dep_pair.ptr->output_type() == Target::EXECUTABLE) 93 if (dep_pair.ptr->output_type() == Target::EXECUTABLE)
91 continue; // Skip executables that aren't data deps. 94 continue; // Skip executables that aren't data deps.
92 RecursiveCollectRuntimeDeps(dep_pair.ptr, false, 95 RecursiveCollectRuntimeDeps(dep_pair.ptr, false,
93 deps, seen_targets, found_files); 96 deps, seen_targets, found_files);
94 } 97 }
95 98
(...skipping 29 matching lines...) Expand all
125 128
126 const char kRuntimeDeps_Help[] = 129 const char kRuntimeDeps_Help[] =
127 "Runtime dependencies\n" 130 "Runtime dependencies\n"
128 "\n" 131 "\n"
129 " Runtime dependencies of a target are exposed via the \"runtime_deps\"\n" 132 " Runtime dependencies of a target are exposed via the \"runtime_deps\"\n"
130 " category of \"gn desc\" (see \"gn help desc\") or they can be written\n" 133 " category of \"gn desc\" (see \"gn help desc\") or they can be written\n"
131 " at build generation time via \"--runtime-deps-list-file\"\n" 134 " at build generation time via \"--runtime-deps-list-file\"\n"
132 " (see \"gn help --runtime-deps-list-file\").\n" 135 " (see \"gn help --runtime-deps-list-file\").\n"
133 "\n" 136 "\n"
134 " To a first approximation, the runtime dependencies of a target are\n" 137 " To a first approximation, the runtime dependencies of a target are\n"
135 " the set of \"data\" files and the shared libraries from all transitive\n" 138 " the set of \"data\" files, data directories, and the shared libraries\n"
136 " dependencies. Executables and shared libraries are considered runtime\n" 139 " from all transitive dependencies. Executables and shared libraries are\n"
137 " dependencies of themselves.\n" 140 " considered runtime dependencies of themselves.\n"
138 "\n" 141 "\n"
139 "Details\n" 142 "Details\n"
140 "\n" 143 "\n"
141 " Executable targets and those executable targets' transitive\n" 144 " Executable targets and those executable targets' transitive\n"
142 " dependencies are not considered unless that executable is listed in\n" 145 " dependencies are not considered unless that executable is listed in\n"
143 " \"data_deps\". Otherwise, GN assumes that the executable (and\n" 146 " \"data_deps\". Otherwise, GN assumes that the executable (and\n"
144 " everything it requires) is a build-time dependency only.\n" 147 " everything it requires) is a build-time dependency only.\n"
145 "\n" 148 "\n"
146 " Action and copy targets that are listed as \"data_deps\" will have all\n" 149 " Action and copy targets that are listed as \"data_deps\" will have all\n"
147 " of their outputs and data files considered as runtime dependencies.\n" 150 " of their outputs and data files considered as runtime dependencies.\n"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 return false; 221 return false;
219 } 222 }
220 223
221 // Currently this writes all runtime deps files sequentially. We generally 224 // Currently this writes all runtime deps files sequentially. We generally
222 // expect few of these. We can run this on the worker pool if it looks 225 // expect few of these. We can run this on the worker pool if it looks
223 // like it's talking a long time. 226 // like it's talking a long time.
224 WriteRuntimeDepsFile(target); 227 WriteRuntimeDepsFile(target);
225 } 228 }
226 return true; 229 return true;
227 } 230 }
OLDNEW
« no previous file with comments | « tools/gn/output_file.cc ('k') | tools/gn/runtime_deps_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698