aboutsummaryrefslogtreecommitdiff
path: root/docs/yaml/functions/project.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/yaml/functions/project.yaml')
-rw-r--r--docs/yaml/functions/project.yaml90
1 files changed, 90 insertions, 0 deletions
diff --git a/docs/yaml/functions/project.yaml b/docs/yaml/functions/project.yaml
new file mode 100644
index 0000000..801ce8a
--- /dev/null
+++ b/docs/yaml/functions/project.yaml
@@ -0,0 +1,90 @@
+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`, `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: |
+ Accecpts 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.
+ To avoid ambiguity it is recommended to use a standardized
+ license identifier from the [SPDX license list](https://spdx.org/licenses/).
+ Usually this would be something like `license : 'GPL-2.0-or-later'`, but if
+ the code has multiple licenses you can specify them as an array like this:
+ `license : ['proprietary', 'GPL-3.0-only']`. 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()`.
+
+ 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.