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

  - 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: list[str]
        since: 0.44.0
        description: |
          You can also redefine a
          variable by passing a list to this kwarg
          that can affect the retrieved variable: `['prefix', '/'])`.

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

    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.

    optargs:
      varname:
        type: str
        since: 0.58.0
        description: |
          This argument is used as a default value
          for `cmake`, `pkgconfig`, `configtool` and `internal` 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

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

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