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

Unified Diff: tools/gn/command_desc.cc

Issue 1130183007: Add runtime dependency extraction for GN. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make msvc happy Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/build_settings.h ('k') | tools/gn/command_gen.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/command_desc.cc
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index 8b321e4a20f41307c7dfe1a071c2af4ce61266c0..efb0b068cf0b6bb19099e9ecc12d024047d84a69 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -14,6 +14,7 @@
#include "tools/gn/filesystem_utils.h"
#include "tools/gn/item.h"
#include "tools/gn/label.h"
+#include "tools/gn/runtime_deps.h"
#include "tools/gn/setup.h"
#include "tools/gn/standard_out.h"
#include "tools/gn/substitution_writer.h"
@@ -24,6 +25,9 @@ namespace commands {
namespace {
+// The switch for displaying blame.
+const char kBlame[] = "blame";
+
// Prints the given directory in a nice way for the user to view.
std::string FormatSourceDir(const SourceDir& dir) {
#if defined(OS_WIN)
@@ -404,7 +408,7 @@ template<typename T> void OutputRecursiveTargetConfig(
const char* header_name,
const std::vector<T>& (ConfigValues::* getter)() const) {
bool display_blame =
- base::CommandLine::ForCurrentProcess()->HasSwitch("blame");
+ base::CommandLine::ForCurrentProcess()->HasSwitch(kBlame);
DescValueWriter<T> writer;
std::ostringstream out;
@@ -437,6 +441,30 @@ template<typename T> void OutputRecursiveTargetConfig(
}
}
+void PrintRuntimeDeps(const Target* target) {
+ bool display_blame =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(kBlame);
+ Label toolchain = target->label().GetToolchainLabel();
+
+ const Target* previous_from = NULL;
+ for (const auto& pair : ComputeRuntimeDeps(target)) {
+ if (display_blame) {
+ // Generally a target's runtime deps will be listed sequentially, so
+ // group them and don't duplicate the "from" label for two in a row.
+ if (previous_from == pair.second) {
+ OutputString(" "); // Just indent.
+ } else {
+ previous_from = pair.second;
+ OutputString("From ");
+ OutputString(pair.second->label().GetUserVisibleName(toolchain));
+ OutputString("\n "); // Make the file name indented.
+ }
+ }
+ OutputString(pair.first.value());
+ OutputString("\n");
+ }
+}
+
} // namespace
// desc ------------------------------------------------------------------------
@@ -514,6 +542,18 @@ const char kDesc_Help[] =
" Shows the given values taken from the target and all configs\n"
" applying. See \"--blame\" below.\n"
"\n"
+ " runtime_deps\n"
+ " Compute all runtime deps for the given target. This is a\n"
+ " computed list and does not correspond to any GN variable, unlike\n"
+ " most other values here.\n"
+ "\n"
+ " The output is a list of file names relative to the build\n"
+ " directory. See \"gn help runtime_deps\" for how this is computed.\n"
+ " This also works with \"--blame\" to see the source of the\n"
+ " dependency.\n"
+ "\n"
+ "Shared flags\n"
+ "\n"
" --blame\n"
" Used with any value specified by a config, this will name\n"
" the config that specified the value. This doesn't currently work\n"
@@ -628,6 +668,8 @@ int RunDesc(const std::vector<std::string>& args) {
PrintLibDirs(target, false);
} else if (what == variables::kLibs) {
PrintLibs(target, false);
+ } else if (what == "runtime_deps") {
+ PrintRuntimeDeps(target);
CONFIG_VALUE_HANDLER(defines, std::string)
CONFIG_VALUE_HANDLER(include_dirs, SourceDir)
« no previous file with comments | « tools/gn/build_settings.h ('k') | tools/gn/command_gen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698