Hello!

This post is an announcement releasing makes version 2.0.

makes is a minimal build tool that cleanly separates the user interface from the core algorithm that actually performs the build. It supports incremental, parallel builds with dependency resolution.

makes takes on standard input a tab separated values stream of 'build rules' with the following format: <output> \t <input-1> \t ... -- <build command>. These TSV build scripts can be generated using a shell script, python script, a new build UI tool, anything.

The tool has been proven by building jq and sbase with it. It can also be seen as a generalization of gnu parallel, sabotage jobflow this was tested by converting a directory tree of flacs to mp3s.

The repo is here: https://github.com/rain-1/makes
and some example uses can be found here: https://gist.github.com/rain-1/f3434f4b12147d5ef62369e511a184de

Justification for a new build tool: makes improves upon POSIX make and other build systems like waf, cmake, meson etc. in several ways. Unlike make it does not require reimplementation of an incompatible version of shell language. It is also implemented in 1/1000th the amount of code. Unlike make which tries to do everything and falls short (resulting in stuff like automake, autoconf, ./configure, etc.), it fulfills the UNIX philosophy of doing one thing well by separating concerns. By using an incredible simple TSV input format it gives programmers complete freedom and power to specify builds using any toolkit they wish, m4, shell, python.

Reply via email to