Build systems

In the past weeks, I was looking at several build systems. As it turned out, there is not a single sane generic build system out there.

Autotools: Autotools are ugly, slow, and require an immense amount of code copies in the source tree.

WAF: WAF is not as ugly as autools and it’s faster and does not generate Makefiles or stuff like this. But it has serious issues: It requires one to copy it to the source tarball, has no stable API, and requires Python for building. Furthermore, support for unit testing is broken: It runs the unit tests, but does not abort the build process if the tests fail and does not display why the tests fail.

CMake: The syntax is ugly, it generates Makefiles, and support for pkg-config seems to be very very basic.

So how should a build system look like?

So, why is there no sane build system?

comments powered by Disqus