|
|
|
name: project
|
|
|
|
returns: void
|
|
|
|
description: |
|
|
|
|
The first function called in each project, to initialize Meson.
|
|
|
|
|
|
|
|
The first argument to this function must be a string defining the name
|
|
|
|
of this project.
|
|
|
|
|
|
|
|
The project name can be any string you want, it's not used for
|
|
|
|
anything except descriptive purposes. However since it is written to
|
|
|
|
e.g. the dependency manifest is usually makes sense to have it be the
|
|
|
|
same as the project tarball or pkg-config name. So for example you
|
|
|
|
would probably want to use the name _libfoobar_ instead of _The Foobar
|
|
|
|
Library_.
|
|
|
|
|
|
|
|
It may be followed by the list of programming languages that the project uses.
|
|
|
|
|
|
|
|
*(since 0.40.0)* The list of languages is optional.
|
|
|
|
|
|
|
|
These languages may be used both for `native: false` (the default)
|
|
|
|
(host machine) targets and for `native: true` (build machine) targets.
|
|
|
|
*(since 0.56.0)* The build machine compilers for the specified
|
|
|
|
languages are not required.
|
|
|
|
|
|
|
|
Supported values for languages are `c`, `cpp` (for `C++`), `cuda`,
|
|
|
|
`cython`, `d`, `objc`, `objcpp`, `fortran`, `java`, `cs` (for `C#`),
|
|
|
|
`vala` and `rust`.
|
|
|
|
|
|
|
|
posargs:
|
|
|
|
project_name:
|
|
|
|
type: str
|
|
|
|
description: The name of the project.
|
|
|
|
|
|
|
|
varargs:
|
|
|
|
name: language
|
|
|
|
type: str
|
|
|
|
description: The languages that Meson should initialize.
|
|
|
|
|
|
|
|
kwargs:
|
|
|
|
default_options:
|
|
|
|
type: list[str]
|
|
|
|
description: |
|
|
|
|
Accepts strings in the form `key=value`
|
|
|
|
which have the same format as options to `meson configure`.
|
|
|
|
For example to set the default project type you would
|
|
|
|
set this: `default_options : ['buildtype=debugoptimized']`. Note
|
|
|
|
that these settings are only used when running Meson for the first
|
|
|
|
time. Global options such as `buildtype` can only be specified in
|
|
|
|
the master project, settings in subprojects are ignored. Project
|
|
|
|
specific options are used normally even in subprojects.
|
|
|
|
|
|
|
|
version:
|
|
|
|
type: str | file
|
|
|
|
description: |
|
|
|
|
A free form string describing the version of this project.
|
|
|
|
You can access the value in your Meson build files
|
|
|
|
with [[meson.project_version]]. *(Since 0.57.0)* this can also be a
|
|
|
|
[[@file]] object pointing to a file that contains exactly one line of
|
|
|
|
text.
|
|
|
|
|
|
|
|
meson_version:
|
|
|
|
type: str
|
|
|
|
description: |
|
|
|
|
Takes a string describing which Meson version the project requires.
|
|
|
|
Usually something like `>=0.28.0`.
|
|
|
|
|
|
|
|
license:
|
|
|
|
type: str | list[str]
|
|
|
|
description: |
|
|
|
|
Takes a string or array of strings describing the license(s) the code is under.
|
|
|
|
|
|
|
|
This *should* be an [SPDX license expression](https://spdx.dev/ids/),
|
|
|
|
using the standardized license identifier from the [SPDX license
|
|
|
|
list](https://spdx.org/licenses/). Usually this would be something like
|
|
|
|
`license : 'GPL-2.0-or-later'`. If there are multiple licenses you can use the
|
|
|
|
`AND` and `OR` operators to join them: `license : 'Apache-2.0 OR GPL-2.0'`.
|
|
|
|
|
|
|
|
For backwards compatibility reasons you can also pass an array of
|
|
|
|
licenses here. This is not recommended, as it is ambiguous: `license :
|
|
|
|
['Apache-2.0', 'GPL-2.0-only']` instead use an SPDX espression: `license
|
|
|
|
: 'Apache-2.0 OR GPL-2.0-only'`, which makes it clear that the license
|
|
|
|
mean OR, not AND.
|
|
|
|
|
|
|
|
Note that the text is informal and is only written to the dependency
|
|
|
|
manifest. Meson does not do any license validation, you are responsible
|
|
|
|
for verifying that you abide by all licensing terms. You can access the
|
|
|
|
value in your Meson build files with `meson.project_license()`.
|
|
|
|
|
|
|
|
license_files:
|
|
|
|
type: str | list[str]
|
|
|
|
since: 1.1.0
|
|
|
|
description: |
|
|
|
|
Takes a string or array of strings with the paths to the license file(s)
|
|
|
|
the code is under.
|
|
|
|
|
|
|
|
This enhances the value of the `license` kwarg by allowing to specify both
|
|
|
|
the short license name and the full license text. Usually this would be
|
|
|
|
something like `license_files: ['COPYING']`.
|
|
|
|
|
|
|
|
Note that the files are informal and are only installed with the dependency
|
|
|
|
manifest. Meson does not do any license validation, you are responsible
|
|
|
|
for verifying that you abide by all licensing terms. You can access the
|
|
|
|
value in your Meson build files with [[meson.project_license_files]].
|
|
|
|
|
|
|
|
subproject_dir:
|
|
|
|
type: str
|
|
|
|
default: "'subprojects'"
|
|
|
|
description: |
|
|
|
|
Specifies the top level directory name that holds Meson subprojects.
|
|
|
|
This is only meant as a compatibility option
|
|
|
|
for existing code bases that house their embedded source code in a
|
|
|
|
custom directory. All new projects should not set this but instead
|
|
|
|
use the default value. It should be noted that this keyword
|
|
|
|
argument is ignored inside subprojects. There can be only one
|
|
|
|
subproject dir and it is set in the top level Meson file.
|