While we’re still 30s behind hand-written make, I totally would use any of the two over hand-written Makefiles.
As you might have noticed, meson is the new kid on the block. Step by step I am currently converting some projects to it, spearheading Shotwell. Since Shotwell only “recently” became an autotools project, you may ask why. Shotwell had a hand-written makefile system. This made some tasks that would have been incredibly easy with autotools, such as mallard documentation handling, more complicated than it should be. Since autotools provides all the nice features that you want for your GNOME environment, it made sense to leverage that.
Here are some numbers from the various transition phases. All taken on my i5 X201 laptop.
- We build from a fresh git checkout (or git clean -dxf)
- All builds are generated on the same machine with
make -j $(($(nproc) + 2))
- In the case of Meson, the ccache cache was emptied before
Shotwell’s makefile had a subtle rule issue that caused the plugins to be compiled several times over with valac. Also it was calling pkg-config with each compiler call, so after fixing that, we get these numbers for the compile step:
autogen.sh (including configure run):
mkdir build && meson build
ninja -C build