# meson plugin

## meson - Meson build element

This is a BuildElement implementation for using Meson build scripts.

You will often want to pass additional arguments to `meson`. This should be done on a per-element basis by setting the `meson-local` variable. Here is an example:

    variables:
      meson-local: |
        -Dmonkeys=yes

If you want to pass extra options to `meson` for every element in your project, set the `meson-global` variable in your project.conf file. Here is an example of that:

    elements:
      meson:
        variables:
          meson-global: |
            -Dmonkeys=always

Here is the default configuration for the `meson` element in full:

>     #  Licensed under the Apache License, Version 2.0 (the "License");
>     #  you may not use this file except in compliance with the License.
>     #  You may obtain a copy of the License at
>     #
>     #      http://www.apache.org/licenses/LICENSE-2.0
>     #
>     #  Unless required by applicable law or agreed to in writing, software
>     #  distributed under the License is distributed on an "AS IS" BASIS,
>     #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>     #  See the License for the specific language governing permissions and
>     #  limitations under the License.

>     # Meson default configuration

>     variables:

>       build-dir: _builddir

>       # Project-wide extra arguments to be passed to `meson`
>       meson-global: ''

>       # Element-specific extra arguments to be passed to `meson`.
>       meson-local: ''

>       meson-args: |

>         --prefix=%{prefix} \
>         --bindir=%{bindir} \
>         --sbindir=%{sbindir} \
>         --sysconfdir=%{sysconfdir} \
>         --datadir=%{datadir} \
>         --includedir=%{includedir} \
>         --libdir=%{libdir} \
>         --libexecdir=%{libexecdir} \
>         --localstatedir=%{localstatedir} \
>         --sharedstatedir=%{sharedstatedir} \
>         --mandir=%{mandir} \
>         --infodir=%{infodir} %{meson-global} %{meson-local}

>       meson: meson setup %{conf-root} %{build-dir} %{meson-args}

>       meson-build: |
>         ninja -v -j ${JOBS} -C %{build-dir}

>       meson-install: |
>         env DESTDIR="%{install-root}" meson install -C %{build-dir} --no-rebuild

>       # Set this if the sources cannot handle parallelization.
>       #
>       # notparallel: True

>     config:

>       # Commands for configuring the software
>       #
>       configure-commands:
>       - |
>         %{meson}

>       # Commands for building the software
>       #
>       build-commands:
>       - |
>         %{meson-build}

>       # Commands for installing the software into a
>       # destination folder
>       #
>       install-commands:
>       - |
>         %{meson-install}

>       # Commands for stripping debugging information out of
>       # installed binaries
>       #
>       strip-commands:
>       - |
>         %{strip-binaries}

>     # Use max-jobs CPUs for building
>     environment:
>       JOBS: |
>         %{max-jobs}

>     # And dont consider JOBS as something which may
>     # affect build output.
>     environment-nocache:
>     - JOBS

See built-in functionality documentation for details on common configuration options for build elements.