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 | custom_idx]
    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 (custom_idx was not
      available between 0.60 and 1.4.0).

  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`.
