name: dep
long_name: Dependency object
description: Abstract representation of a dependency

methods:
  - name: found
    returns: bool
    description: Returns whether the dependency was found.

  - name: name
    since: 0.48.0
    returns: str
    description: |
      Returns the name of the dependency that was searched.
      Returns `'internal'` for dependencies created with
      [[declare_dependency]].

      NOTE: This was not implemented for dep objects returned by
      [[compiler.find_library]] until Meson 1.5.0

  - name: get_pkgconfig_variable
    since: 0.36.0
    deprecated: 0.56.0
    returns: str
    description: |
      Gets the pkg-config variable specified,
      or, if invoked on a non pkg-config
      dependency, error out.

    posargs:
      var_name:
        type: str
        description: Name of the variable to query

    kwargs:
      define_variable:
        type: array[str]
        since: 0.44.0
        description: |
          You can also redefine a
          variable by passing an array to this kwarg
          that can affect the retrieved variable: `['prefix', '/'])`.

          *(Since 1.3.0)* Multiple variables can be specified in pairs.

      default:
        type: str
        since: 0.45.0
        description: |
          The value to return if the variable was not found.
          A warning is issued if the variable is not defined and this kwarg is not set.

  - name: get_configtool_variable
    since: 0.44.0
    deprecated: 0.56.0
    returns: str
    description: |
      Gets the command line argument from the config tool (with `--` prepended), or,
      if invoked on a non config-tool dependency, error out.

    posargs:
      var_name:
        type: str
        description: Name of the variable to query

  - name: type_name
    returns: str
    description: |
      Returns a string describing the type of the
      dependency, the most common values are `internal` for deps created
      with [[declare_dependency]] and `pkgconfig` for system dependencies
      obtained with Pkg-config.

  - name: version
    returns: str
    description: |
      the version number as a string,
      for example `1.2.8`.
      `unknown` if the dependency provider doesn't support determining the
      version.

  - name: include_type
    returns: str
    since: 0.52.0
    description: Returns the value set by the `include_type` kwarg.

  - name: as_system
    returns: dep
    since: 0.52.0
    description: |
      Returns a copy of the dependency object, which has changed the value of `include_type`
      to `value`. The `value` argument is optional and
      defaults to `'system'`.

    optargs:
      value:
        type: str
        description: The new value. See [[dependency]] for supported values.

  - name: as_link_whole
    returns: dep
    since: 0.56.0
    description: |
      Only dependencies created with [[declare_dependency]],
      returns a copy of the dependency object with all
      link_with arguments changed to link_whole. This is useful for example for
      fallback dependency from a subproject built with `default_library=static`.
      Note that all `link_with` objects must be static libraries otherwise an error
      will be raised when trying to `link_whole` a shared library.

  - name: partial_dependency
    returns: dep
    since: 0.46.0
    description: |
      Returns a new dependency object with the same name, version, found status,
      type name, and methods as the object that called it. This new
      object will only inherit other attributes from its parent as
      controlled by keyword arguments.

      If the parent has any dependencies, those will be applied to the new
      partial dependency with the same rules. So, given:

      ```meson
      dep1 = declare_dependency(compile_args : '-Werror=foo', link_with : 'libfoo')
      dep2 = declare_dependency(compile_args : '-Werror=bar', dependencies : dep1)
      dep3 = dep2.partial_dependency(compile_args : true)
      ```

      dep3 will add `['-Werror=foo', '-Werror=bar']` to the compiler args
      of any target it is added to, but libfoo will not be added to the
      link_args.

      The following arguments will add the following attributes:

      - compile_args: any arguments passed to the compiler
      - link_args: any arguments passed to the linker
      - links: anything passed via link_with or link_whole
      - includes: any include_directories
      - sources: any compiled or static sources the dependency has

    warnings:
      - A bug present until 0.50.1 results in the above behavior
        not working correctly.

    kwargs:
      compile_args:
        type: bool
        default: false
        description: Whether to include compile_args

      link_args:
        type: bool
        default: false
        description: Whether to include link_args

      links:
        type: bool
        default: false
        description: Whether to include links

      includes:
        type: bool
        default: false
        description: Whether to include includes

      sources:
        type: bool
        default: false
        description: Whether to include sources

  - name: get_variable
    returns: str
    since: 0.51.0
    description: |
      A generic variable getter method, which replaces the
      `get_*type*_variable` methods. This allows one to get the variable
      from a dependency without knowing specifically how that dependency
      was found. If `default_value` is set and the value cannot be gotten
      from the object then `default_value` is returned, if it is not set
      then an error is raised.

    warnings:
      - Before 1.3.0, specifying multiple pkgconfig_define pairs would silently
        malform the results. Only the first variable would be redefined, but
        its value would contain both the second variable name, as well as its
        value.

    optargs:
      varname:
        type: str
        since: 0.58.0
        description: |
          This argument is used as a default value
          for `cmake`, `pkgconfig`, `configtool`, `internal` and `system` keyword
          arguments. It is useful in the common case where `pkgconfig` and `internal`
          use the same variable name, in which case it's easier to write `dep.get_variable('foo')`
          instead of `dep.get_variable(pkgconfig: 'foo', internal: 'foo')`.

    kwargs:
      cmake:
        type: str
        description: The CMake variable name

      pkgconfig:
        type: str
        description: The pkgconfig variable name

      configtool:
        type: str
        description: The configtool variable name

      internal:
        type: str
        since: 0.54.0
        description: The internal variable name

      system:
        type: str
        since: 1.6.0
        description: The system variable name

      default_value:
        type: str
        description: The default value to return when the variable does not exist

      pkgconfig_define:
        type: array[str]
        description: See [[dep.get_pkgconfig_variable]]

  - name: as_static
    returns: dep
    since: 1.6.0
    description: |
      Only for dependencies created with [[declare_dependency]],
      returns a copy of the dependency object that prefer the `static` version
      of [[both_libraries]].
    kwargs:
      recursive:
        type: bool
        description: If true, this is recursively applied to dependencies

  - name: as_shared
    returns: dep
    since: 1.6.0
    description: |
      Only for dependencies created with [[declare_dependency]],
      returns a copy of the dependency object that prefer the `shared` version
      of [[both_libraries]].
    kwargs:
      recursive:
        type: bool
        description: If true, this is recursively applied to dependencies
