blob: cec0b79e3b3f1a6710770064111c789c11fabac8 [file] [log] [blame]
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`.