aboutsummaryrefslogtreecommitdiff
path: root/docs/yaml/functions/dependency.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/yaml/functions/dependency.yaml')
-rw-r--r--docs/yaml/functions/dependency.yaml200
1 files changed, 200 insertions, 0 deletions
diff --git a/docs/yaml/functions/dependency.yaml b/docs/yaml/functions/dependency.yaml
new file mode 100644
index 0000000..dcb696d
--- /dev/null
+++ b/docs/yaml/functions/dependency.yaml
@@ -0,0 +1,200 @@
+name: dependency
+returns: dep
+description: |
+ Finds an external dependency (usually a library installed on your
+ system) with the given name with `pkg-config` and [with
+ CMake](Dependencies.md#cmake) if `pkg-config` fails. Additionally,
+ frameworks (OSX only) and [library-specific fallback detection
+ logic](Dependencies.md#dependencies-with-custom-lookup-functionality)
+ are also supported.
+
+ *Since 0.60.0* more than one name can be provided, they will be tried in order
+ and the first name to be found will be used. The fallback subproject will be
+ used only if none of the names are found on the system. Once one of the name has
+ been found, all other names are added into the cache so subsequent calls for any
+ of those name will return the same value. This is useful in case a dependency
+ could have different names, such as `png` and `libpng`.
+
+ Dependencies can also be resolved in two other ways:
+
+ * if the same name was used in a `meson.override_dependency` prior to
+ the call to `dependency`, the overriding dependency will be returned
+ unconditionally; that is, the overriding dependency will be used
+ independent of whether an external dependency is installed in the system.
+ Typically, `meson.override_dependency` will have been used by a
+ subproject.
+
+ * by a fallback subproject which, if needed, will be brought into the current
+ build specification as if [`subproject()`](#subproject) had been called.
+ The subproject can be specified with the `fallback` argument. Alternatively,
+ if the `fallback` argument is absent, *since 0.55.0* Meson can
+ automatically identify a subproject as a fallback if a wrap file
+ [provides](Wrap-dependency-system-manual.md#provide-section) the
+ dependency, or if a subproject has the same name as the dependency.
+ In the latter case, the subproject must use `meson.override_dependency` to
+ specify the replacement, or Meson will report a hard error. See the
+ [Wrap documentation](Wrap-dependency-system-manual.md#provide-section)
+ for more details. This automatic search can be controlled using the
+ `allow_fallback` keyword argument.
+
+ If `dependency_name` is `''`, the dependency is always not found. So
+ with `required: false`, this always returns a dependency object for
+ which the `found()` method returns `false`, and which can be passed
+ like any other dependency to the `dependencies:` keyword argument of a
+ `build_target`. This can be used to implement a dependency which is
+ sometimes not required e.g. in some branches of a conditional, or with
+ a `fallback:` kwarg, can be used to declare an optional dependency
+ that only looks in the specified subproject, and only if that's
+ allowed by `--wrap-mode`.
+
+ The returned object [[@dep]] also has additional methods.
+
+notes:
+ - This function supports additional [library-specific](Dependencies.md#dependencies-with-custom-lookup-functionality)
+ keyword arguments that may also be accepted (e.g. `modules` specifies submodules to use for
+ dependencies such as Qt5 or Boost. `components` allows the user to manually
+ add CMake `COMPONENTS` for the `find_package` lookup)
+
+varargs:
+ name: names
+ type: str
+ since: 0.60.0
+ min_varargs: 1
+ description: |
+ The names of the dependency too look up. The dependencies are looked up in
+ the order they are provided here. The first found dependency will then be
+ used. The fallback subproject will be used only if none of the names are
+ found on the system. Once one of the name has been found, all other names
+ are added into the cache so subsequent calls for any of those name will
+ return the same value. This is useful in case a dependency could have
+ different names, such as `png` and `libpng`.
+
+ **NOTE:** Before *0.60.0* only a single dependency name was allowed.
+
+kwargs:
+ default_options:
+ type: list[str]
+ since: 0.37.0
+ description: |
+ An array of default option values
+ that override those set in the subproject's `meson_options.txt`
+ (like `default_options` in [[project]], they only have
+ effect when Meson is run for the first time, and command line
+ arguments override any default options in build files)
+
+ allow_fallback:
+ type: bool
+ since: 0.56.0
+ description: |
+ Specifies whether Meson should automatically pick a fallback subproject
+ in case the dependency
+ is not found in the system. If `true` and the dependency is not found
+ on the system, Meson will fallback to a subproject that provides this
+ dependency. If `false`, Meson will not fallback even if a subproject
+ provides this dependency. By default, Meson will do so if `required`
+ is `true` or [`enabled`](Build-options.md#features); see the [Wrap
+ documentation](Wrap-dependency-system-manual.md#provide-section)
+ for more details.
+
+ fallback:
+ type: list[str] | str
+ description: |
+ Manually specifies a subproject fallback
+ to use in case the dependency is not found in the system.
+ This is useful if the automatic search is not applicable or if you
+ want to support versions of Meson older than 0.55.0. If the value is an
+ array `['subproj_name', 'subproj_dep']`, the first value is the name
+ of the subproject and the second is the variable name in that
+ subproject that contains a dependency object such as the return
+ value of [[declare_dependency]] or
+ [[dependency]], etc. Note that this means the
+ fallback dependency may be a not-found dependency, in which
+ case the value of the `required:` kwarg will be obeyed.
+ *Since 0.54.0* the value can be a single string, the subproject name;
+ in this case the subproject must use
+ `meson.override_dependency('dependency_name', subproj_dep)`
+ to specify the dependency object used in the superproject.
+ If the value is an empty list, it has the same effect as
+ `allow_fallback: false`.
+
+ language:
+ type: str
+ since: 0.42.0
+ description: |
+ Defines what language-specific dependency to find
+ if it's available for multiple languages.
+
+ method:
+ type: str
+ default: "'auto'"
+ description: |
+ Defines the way the dependency is detected, the default is
+ `auto` but can be overridden to be e.g. `qmake` for Qt development,
+ and [different dependencies support different values](
+ Dependencies.md#dependencies-with-custom-lookup-functionality)
+ for this (though `auto` will work on all of them)
+
+ native:
+ type: bool
+ default: false
+ description: |
+ If set to `true`, causes Meson to find the dependency on
+ the build machine system rather than the host system (i.e. where the
+ cross compiled binary will run on), usually only needed if you build
+ a tool to be used during compilation.
+
+ not_found_message:
+ type: str
+ since: 0.50.0
+ description: An optional string that will be printed as a [[message]] if the dependency was not found.
+
+ required:
+ type: bool | feature
+ default: true
+ description: |
+ when set to false, Meson will proceed with the build
+ even if the dependency is not found. *(since 0.47.0)* The value of a
+ [`feature`](Build-options.md#features) option can also be passed.
+
+ static:
+ type: bool
+ default: false
+ description: |
+ Tells the dependency provider to try to get static
+ libraries instead of dynamic ones (note that this is not supported
+ by all dependency backends)
+
+ *Since 0.60.0* it also sets `default_library` option accordingly on the fallback
+ subproject if it was not set explicitly in `default_options` keyword argument.
+
+ version:
+ type: str
+ since: 0.37.0
+ description: |
+ Specifies the required version,
+ a string containing a
+ comparison operator followed by the version string, examples include
+ `>1.0.0`, `<=2.3.5` or `3.1.4` for exact matching.
+ You can also specify multiple restrictions by passing a list to this
+ keyword argument, such as: `['>=3.14.0', '<=4.1.0']`.
+ These requirements are never met if the version is unknown.
+
+ include_type:
+ type: str
+ default: "'preserve'"
+ since: 0.52.0
+ description: |
+ An enum flag, marking how the dependency
+ flags should be converted. Supported values are `'preserve'`, `'system'` and
+ `'non-system'`. System dependencies may be handled differently on some
+ platforms, for instance, using `-isystem` instead of `-I`, where possible.
+ If `include_type` is set to `'preserve'`, no additional conversion will be
+ performed.
+
+ disabler:
+ type: bool
+ default: false
+ since: 0.49.0
+ description: |
+ Returns a [[disabler]] object instead of a not-found dependency
+ if this kwarg is set to `true` and the dependency couldn't be found.