[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