aboutsummaryrefslogtreecommitdiff
path: root/docs/yaml/functions/generator.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/yaml/functions/generator.yaml')
-rw-r--r--docs/yaml/functions/generator.yaml83
1 files changed, 83 insertions, 0 deletions
diff --git a/docs/yaml/functions/generator.yaml b/docs/yaml/functions/generator.yaml
new file mode 100644
index 0000000..cec0b79
--- /dev/null
+++ b/docs/yaml/functions/generator.yaml
@@ -0,0 +1,83 @@
+name: generator
+returns: generator
+description: |
+ See also: [[custom_target]]
+
+ This function creates a [[@generator]] object that can
+ be used to run custom compilation commands. The only positional
+ argument is the executable to use. It can either be a self-built
+ executable or one returned by find_program.
+
+ The template strings passed to all the keyword arguments accept
+ the following special substitutions:
+
+ - `@PLAINNAME@`: the complete input file name, e.g: `foo.c` becomes `foo.c` (unchanged)
+ - `@BASENAME@`: the base of the input filename, e.g.: `foo.c.y` becomes `foo.c` (extension is removed)
+
+ Each string passed to the `output` keyword argument *must* be
+ constructed using one or both of these two substitutions.
+
+ In addition to the above substitutions, the `arguments` keyword
+ argument also accepts the following:
+
+ - `@OUTPUT@`: the full path to the output file
+ - `@INPUT@`: the full path to the input file
+ - `@DEPFILE@`: the full path to the depfile
+ - `@SOURCE_DIR@`: the full path to the root of the source tree
+ - `@CURRENT_SOURCE_DIR@`: this is the directory where the currently processed meson.build is located in
+ - `@BUILD_DIR@`: the full path to the root of the build dir where the output will be placed
+
+ NOTE: Generators should only be used for outputs that will ***only***
+ be used as inputs for a [[build_target]] or a [[custom_target]].
+ When you use the processed output of a
+ generator in multiple targets, the generator will be run multiple
+ times to create outputs for each target. Each output will be created
+ in a target-private directory `@BUILD_DIR@`.
+
+ If you want to generate files for general purposes such as for
+ generating headers to be used by several sources, or data that will be
+ installed, and so on, use a [[custom_target]] instead.
+
+posargs:
+ exe:
+ type: exe | external_program
+ description: Executable for the command to run
+
+kwargs:
+ arguments:
+ type: list[str]
+ description: A list of template strings that will be the command line arguments passed to the executable.
+
+ depends:
+ # Not sure why this is not just `target`
+ type: list[build_tgt | custom_tgt]
+ since: 0.51.0
+ description: |
+ An array of build targets that must be built before
+ this generator can be run. This is used if you have a generator that calls
+ a second executable that is built in this project.
+
+ depfile:
+ type: str
+ description: |
+ A template string pointing to a dependency file that a
+ generator can write listing all the additional files this target
+ depends on, for example a C compiler would list all the header files
+ it included, and a change in any one of these files triggers a
+ recompilation,
+
+ output:
+ type: list[str]
+ description: |
+ Template string (or list of template strings) defining
+ how an output file name is (or multiple output names are) generated
+ from a single source file name.
+
+ capture:
+ type: bool
+ default: false
+ since: 0.43.0
+ description: |
+ When this argument is set to true, Meson captures `stdout`
+ of the `executable` and writes it to the target file
+ specified as `output`.