[Spice-devel] [PATCH spice-server v5 1/2] Add support for building with meson/ninja

Frediano Ziglio fziglio at redhat.com
Tue Aug 7 07:48:35 UTC 2018


> 
> In a comparison with current autotools build system, meson/ninja
> provides a huge improvement in build speed, while keeping the same
> functionalities currently available and being considered more user
> friendly.
> 
> The new system coexists within the same repository with the current one,
> so we can do more extensive testing of its functionality before deciding
> if the old system can be removed, or for some reason, has to stay for
> good.
> 
> - Meson: https://mesonbuild.com
> 
>   This is the equivalent of autogen/configure step in autotools. It
>   generates the files that will be used by ninja to actually build the
>   source code.
> 
>   The project has received lots of traction recently, with many GNOME
>   projects willing to move to this new build system. The following wiki
>   page has more details of the status of the many projects being ported:
> 
>     https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
> 
>   Meson has a python-like syntax, easy to read, and the documentation
>   on the project is very complete, with a dedicated page on how to port
>   from autotools, explaining how most common use cases can be
>   implemented using meson.
> 
>     http://mesonbuild.com/Porting-from-autotools.html
> 
>   Other important sources of information:
> 
>     http://mesonbuild.com/howtox.html
>     http://mesonbuild.com/Syntax.html
>     http://mesonbuild.com/Reference-manual.html
> 
> - Ninja: https://ninja-build.org
> 
>   Ninja is the equivalent of make in an autotools setup, which actually
>   builds the source code. It has being used by large and complex
>   projects such as Google Chrome, Android and LLVM. There is not much to
>   say about ninja (other than it is much faster than make) because we
>   won't interact directly with it as much, as meson does the middle man
>   job here. The reasoning for creating ninja in the first place is
>   explained on the following post:
> 
>     http://neugierig.org/software/chromium/notes/2011/02/ninja.html
> 
>   Also its manual provides more in-depth information about the design
>   principles:
> 
>     https://ninja-build.org/manual.html
> 
> - Basic workflow:
> 
>   Meson package is available for most if not all distros, so, taking
>   Fedora as an example, we only need to run:
> 
>     # dnf -y install meson ninja-build.
> 
>   With Meson, building in-tree is not possible at all, so we need to
>   pass a directory as argument to meson where we want the build to be
>   done. This has the advantage of creating builds with different options
>   under the same parent directory, e.g.:
> 
>     $ meson ./build --prefix=/usr
>     $ meson ./build-extra -Dextra-checks=true -Dalignment-checks=true
> 
>   After configuration is done, we call ninja to actually do the build.
> 
>     $ ninja -C ./build
>     $ ninja -C ./build install
> 
>   Ninja defaults to parallel builds, and this can be changed with the -j
>   flag.
> 
>     $ ninja -j 10 -C ./build
> 
> - Hacking:
> 
>   * meson.build: Mandatory for the project root and usually found under
>                  each directory you want something to be built.
> 
>   * meson_options.txt: Options that can interfere with the result of the
>                        build.
> 
> Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
> Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>

Acked-by: Frediano Ziglio <fziglio at redhat.com>

Frediano

> ---
>  Makefile.am                        |   3 +
>  build-aux/meson/check-spice-common |   5 +
>  docs/Makefile.am                   |   1 +
>  docs/manual/Makefile.am            |   1 +
>  docs/manual/meson.build            |  18 +++
>  docs/meson.build                   |  14 +++
>  meson.build                        | 226
>  +++++++++++++++++++++++++++++++++++++
>  meson_options.txt                  |  47 ++++++++
>  server/Makefile.am                 |   1 +
>  server/meson.build                 | 188 ++++++++++++++++++++++++++++++
>  server/tests/Makefile.am           |   1 +
>  server/tests/meson.build           |  90 +++++++++++++++
>  subprojects/spice-common           |   2 +-
>  tools/Makefile.am                  |   4 +
>  tools/meson.build                  |   4 +
>  15 files changed, 604 insertions(+), 1 deletion(-)
>  create mode 100755 build-aux/meson/check-spice-common
>  create mode 100644 docs/manual/meson.build
>  create mode 100644 docs/meson.build
>  create mode 100644 meson.build
>  create mode 100644 meson_options.txt
>  create mode 100644 server/meson.build
>  create mode 100644 server/tests/meson.build
>  create mode 100644 tools/meson.build
> 
...


More information about the Spice-devel mailing list