one of the most widely reported sources of suck are the autotools that gives you the (in)ability to compile programs from source. ./configure, automake, autoconf, autoreconf, m4, intltool, libtoolize, etc.

the best practice used in suckless projects is generally to have a main makefile that imports a config.mk that allows for customization. Still people created tools like scons, cmake, waf, boost build, raft, rebar, rake and more. I have often heard it reported that working with these is worse than simply using makefiles, it certainly requires extra dependencies.

The reason people want these build systems despite the suckless approach working so well is they want config.mk to be filled in automatically (based on which libraries are available on the system and similar).

Here's how a suckless configure tool could subsume all the GNU autotools stuff in a fraction of the code without giving any control over build configuration up:

There would be a single tool 'slconfigure' which is able to parse a standard format for config.mk files. It will parse these in to know what can be configured then it will process the command lines args to allow customization, it can automatically detect which libraries are needed based on the options inside config.mk and then it will overwrite the config.mk file.

So to build a project you go slconfigure ; make ; make install. If you wanted to edit the config.mk file manually (like we have been doing) you would simply not invoke (maybe not even install slconfigure) just run make.

All the old GNU software could be patched to use this new build system format and the autoreconf stuff deleted.

Reply via email to