Hi Eduardo, Thanks for sharing. Out of curiosity, I understand why you want to add Meson, but why remove autotools right away? In my c3d build branch, I made sure both make and autotools could coexist. > ddd@ptitpuce[c3d-build] spice> make help > Specific top-level target: > make gitclean : Cleanup recursively using git clean > make restore : Restore the c3d/build build system > Using autoconf: > ./autogen.sh : Run autoconf in all submodules > ./autogen.sh 'make -j' : Run autogen and make submodules > (After this, 'make' builds using auto-generated makefiles) > Available targets: > make : Build default target (TARGET=opt) > make all : Same > make debug : Debug build > make opt : Optimized build with debug info > make release : Release build without debug info > make profile : Profile build I believe it’s desirable to keep the historical system at least for a while. Any reason not to (except as a proof of concept that you can build without)? Thanks > On 22 Mar 2018, at 18:18, Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> wrote: > > Here is the result of work in progress with replacing autotools with > Meson. I am sending the patches on the ML for easier visualization, but > if you want to try it, I would really recommend pulling from my gitlab > repositories, e.g.: > > $ git remote add etrunko https://gitlab.com/etrunko/spice-protocol > $ git remote add etrunko https://gitlab.com/etrunko/spice-common > $ git remote add etrunko https://gitlab.com/etrunko/spice-server > > The development branch is named meson for all repositories. > > - Requirements: > > Python >= 3.5, as required by meson itself. > > The required Meson version is 0.45.0, which includes some interesting > features for the specific use case of subprojects, just like > spice-common. > > Recent distros are probably still lagging behind on the package version, > but there is an easy way to upgrade meson, by installing a new version > on your $HOME/.local directory with python 'pip'. > > $ pip3 install --upgrade --user meson > > After downloading the meson package, it is necessary to tell python > where to find it, via the PYTHONPATH environment variable. > > $ export PYTHONPATH='$HOME/.local/lib/python3.6/site-packages > > Then you are ready to go. > > - Basic workflow: > > 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 > > This is equivalent to the autogen/configure step in autotools. Meson > itself is only responsible for the configure phase, where it creates > the files that will be used by another lower level build-system, which > will actually do the build. The default one is ninja. > > $ 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 > > - Done: > > Protocol, common and server. > > - Missing: > > * Server: > - tests need to be adjusted so the executable can run in a path > other than the source files. > - version generation with git-version-gen if building from tarball. > IMHO, git-version-gen could be removed. > - Checks (syntax, etc), in maint.mk and cfg.mk, that are done whith > make distcheck. > > * Spice Gtk: > - Work in progress, but it will not interfere as much with other > projects, especially spice-common, as server did. When ready to be > used I will follow the same structure as others. > > - Hacking: > > Meson has a python-like syntax and it is very well documented. The key > files are: > > * 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. > > For more details, please refer to the websites of each project: > > http://mesonbuild.com > http://ninja-build.org > > -- > Eduardo de Barros Lima (Etrunko) > Software Engineer - RedHat > etrunko@xxxxxxxxxx > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel