Index: tools/gn/docs/reference.md |
diff --git a/tools/gn/docs/reference.md b/tools/gn/docs/reference.md |
index 5df04a6ca9b47194384cb898dd9d94a08270eb3f..c55f42e05b394327fe6bb25e2d7d6a0715f91954 100644 |
--- a/tools/gn/docs/reference.md |
+++ b/tools/gn/docs/reference.md |
@@ -58,7 +58,7 @@ |
``` |
-## **--dotfile**: override the name of the ".gn" file. |
+## **--dotfile**: Override the name of the ".gn" file. |
``` |
Normally GN loads the ".gn"file from the source root for some basic |
@@ -119,6 +119,41 @@ |
``` |
+## **--runtime-deps-list-file**: Save runtime dependencies for targets in file. |
+ |
+``` |
+ --runtime-deps-list-file=<filename> |
+ |
+ Where <filename> is a text file consisting of the labels, one per |
+ line, of the targets for which runtime dependencies are desired. |
+ |
+ See "gn help runtime_deps" for a description of how runtime |
+ dependencies are computed. |
+ |
+``` |
+ |
+### **Runtime deps output file** |
+ |
+``` |
+ For each target requested, GN will write a separate runtime dependency |
+ file. The runtime dependency file will be in the output directory |
+ alongside the output file of the target, with a ".runtime_deps" |
+ extension. For example, if the target "//foo:bar" is listed in the |
+ input file, and that target produces an output file "bar.so", GN |
+ will create a file "bar.so.runtime_deps" in the build directory. |
+ |
+ If a source set, action, copy, or group is listed, the runtime deps |
+ file will correspond to the .stamp file corresponding to that target. |
+ This is probably not useful; the use-case for this feature is |
+ generally executable targets. |
+ |
+ The runtime dependency file will list one file per line, with no |
+ escaping. The files will be relative to the root_build_dir. The first |
+ line of the file will be the main output file of the target itself |
+ (in the above example, "bar.so"). |
+ |
+ |
+``` |
## **--time**: Outputs a summary of how long everything took. |
``` |
@@ -347,6 +382,21 @@ |
Shows the given values taken from the target and all configs |
applying. See "--blame" below. |
+ runtime_deps |
+ Compute all runtime deps for the given target. This is a |
+ computed list and does not correspond to any GN variable, unlike |
+ most other values here. |
+ |
+ The output is a list of file names relative to the build |
+ directory. See "gn help runtime_deps" for how this is computed. |
+ This also works with "--blame" to see the source of the |
+ dependency. |
+ |
+``` |
+ |
+### **Shared flags** |
+ |
+``` |
--blame |
Used with any value specified by a config, this will name |
the config that specified the value. This doesn't currently work |
@@ -563,6 +613,35 @@ |
``` |
+## **gn path <out_dir> <target_one> <target_two>** |
+ |
+``` |
+ Finds paths of dependencies between two targets. Each unique path |
+ will be printed in one group, and groups will be separate by newlines. |
+ The two targets can appear in either order: paths will be found going |
+ in either direction. |
+ |
+ Each dependency will be annotated with its type. By default, only the |
+ first path encountered will be printed, which is not necessarily the |
+ shortest path. |
+ |
+``` |
+ |
+### **Options** |
+ |
+``` |
+ --all |
+ Prints all paths found rather than just the first one. |
+ |
+``` |
+ |
+### **Example** |
+ |
+``` |
+ gn path out/Default //base //tools/gn |
+ |
+ |
+``` |
## **gn refs <out_dir> (<label_pattern>|<label>|<file>|@<response_file>)* [--all]** |
``` |
[--all-toolchains] [--as=...] [--testonly=...] [--type=...] |
@@ -581,9 +660,9 @@ |
"gn help label_pattern" for details. |
- File name: The result will be which targets list the given file in |
- its "inputs", "sources", "public", or "data". Any input |
- that does not contain wildcards and does not match a target or a |
- config will be treated as a file. |
+ its "inputs", "sources", "public", "data", or "outputs". |
+ Any input that does not contain wildcards and does not match a |
+ target or a config will be treated as a file. |
- Response file: If the input starts with an "@", it will be |
interpreted as a path to a file containing a list of labels or |
@@ -3252,17 +3331,29 @@ |
## **data**: Runtime data file dependencies. |
``` |
- Lists files required to run the given target. These are typically |
- data files. |
+ Lists files or directories required to run the given target. These are |
+ typically data files or directories of data files. The paths are |
+ interpreted as being relative to the current build file. Since these |
+ are runtime dependencies, they do not affect which targets are built |
+ or when. To declare input files to a script, use "inputs". |
Appearing in the "data" section does not imply any special handling |
such as copying them to the output directory. This is just used for |
- declaring runtime dependencies. There currently isn't a good use for |
- these but it is envisioned that test data can be listed here for use |
- running automated tests. |
+ declaring runtime dependencies. Runtime dependencies can be queried |
+ using the "runtime_deps" category of "gn desc" or written during |
+ build generation via "--runtime-deps-list-file". |
+ |
+ GN doesn't require data files to exist at build-time. So actions that |
+ produce files that are in turn runtime dependencies can list those |
+ generated files both in the "outputs" list as well as the "data" |
+ list. |
+ |
+ By convention, directories are be listed with a trailing slash: |
+ data = [ "test/data/" ] |
+ However, no verification is done on these so GN doesn't enforce this. |
+ The paths are just rebased and passed along when requested. |
- See also "gn help inputs" and "gn help data_deps", both of |
- which actually affect the build in concrete ways. |
+ See "gn help runtime_deps" for how these are used. |
``` |
@@ -4291,6 +4382,50 @@ |
``` |
+## **Runtime dependencies** |
+ |
+``` |
+ Runtime dependencies of a target are exposed via the "runtime_deps" |
+ category of "gn desc" (see "gn help desc") or they can be written |
+ at build generation time via "--runtime-deps-list-file" |
+ (see "gn help --runtime-deps-list-file"). |
+ |
+ To a first approximation, the runtime dependencies of a target are |
+ the set of "data" files, data directories, and the shared libraries |
+ from all transitive dependencies. Executables and shared libraries are |
+ considered runtime dependencies of themselves. |
+ |
+``` |
+ |
+### **Details** |
+ |
+``` |
+ Executable targets and those executable targets' transitive |
+ dependencies are not considered unless that executable is listed in |
+ "data_deps". Otherwise, GN assumes that the executable (and |
+ everything it requires) is a build-time dependency only. |
+ |
+ Action and copy targets that are listed as "data_deps" will have all |
+ of their outputs and data files considered as runtime dependencies. |
+ Action and copy targets that are "deps" or "public_deps" will have |
+ only their data files considered as runtime dependencies. These |
+ targets can list an output file in both the "outputs" and "data" |
+ lists to force an output file as a runtime dependency in all cases. |
+ |
+ The results of static_library or source_set targets are not considered |
+ runtime dependencies since these are assumed to be intermediate |
+ targets only. If you need to list a static library as a runtime |
+ dependency, you can manually compute the .a/.lib file name for the |
+ current platform and list it in the "data" list of a target |
+ (possibly on the static library target itself). |
+ |
+ When a tool produces more than one output, only the first output |
+ is considered. For example, a shared library target may produce a |
+ .dll and a .lib file on Windows. Only the .dll file will be considered |
+ a runtime dependency. |
+ |
+ |
+``` |
## **How Source Expansion Works** |
``` |
@@ -4416,11 +4551,12 @@ |
** --args**: Specifies build arguments overrides. |
** --color**: Force colored output. |
-** --dotfile**: override the name of the ".gn" file. |
+** --dotfile**: Override the name of the ".gn" file. |
** --markdown**: write the output in the Markdown format. |
** --nocolor**: Force non-colored output. |
** -q**: Quiet mode. Don't print output on success. |
** --root**: Explicitly specify source root. |
+** --runtime-deps-list-file**: Save runtime dependencies for targets in file. |
** --time**: Outputs a summary of how long everything took. |
** --tracelog**: Writes a Chrome-compatible trace log to the given file. |
** -v**: Verbose logging. |