name: run_command
returns: runresult
description: |
  Runs the command specified in positional arguments. `command` can be a
  string, or the output of [[find_program]],
  [[files]] or [[configure_file]], or [a
  compiler object](#compiler-object).

  Returns a [[@runresult]] object containing the result
  of the invocation. The command is run from an *unspecified* directory,
  and Meson will set three environment variables `MESON_SOURCE_ROOT`,
  `MESON_BUILD_ROOT` and `MESON_SUBDIR` that specify the source
  directory, build directory and subdirectory the target was defined in,
  respectively.

  See also [External commands](External-commands.md).

varargs:
  name: command
  type: str | file | program
  description: The command to execute during the setup process.

kwargs:
  check:
    type: bool
    since: 0.47.0
    default: false
    description: |
      If `true`, the exit status code of the command will be checked,
      and the configuration will fail if it is non-zero. Note that
      the default value will be `true` in future releases.

  capture:
    type: bool
    since: 0.47.0
    default: true
    description: |
      If `true`, any output generated on stdout will be captured and returned by
      the `.stdout()` method. If it is false, then `.stdout()` will return an
      empty string.

  env:
    type: env | array[str] | dict[str]
    since: 0.50.0
    description: |
      environment variables to set,
      such as `['NAME1=value1', 'NAME2=value2']`,
      or an [[@env]] object which allows more sophisticated
      environment juggling. *(Since 0.52.0)* A dictionary is also accepted.

  console:
    type: bool
    since: 1.11.0
    default: false
    description: |
      stdout and stderr are written to console as it is generated by the command.
      Meant for commands that are resource-intensive and take a long time to finish.
