> > 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@xxxxxxxxxx> > Signed-off-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> Acked-by: Frediano Ziglio <fziglio@xxxxxxxxxx> 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 > ... _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel