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
Configure: real 0m0,011s user 0m0,004s sys 0m0,004s Compile: real 5m15,892s user 17m30,392s sys 1m10,984s
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:
real 2m1,760s user 6m31,788s sys 0m26,788s
autogen.sh (including configure run):
real 0m32,315s user 0m26,900s sys 0m0,984s
real 2m25,164s user 7m47,380s sys 0m29,028s
mkdir build && meson build
real 0m1,529s user 0m1,056s sys 0m0,304s
ninja -C build
real 2m9,369s user 7m17,276s sys 0m33,660s