Tup – A file-based build system for Linux, OS X, and Windows
Tup's main problem is it's unusual, and it doesn't have a library of build rules.  But it's fast!<p>On a related note, I've always wondered if it was possible to have a build system based on dynamic library injection / strace.<p>The idea would be that you just write your build rules in shell script.  Then, you run it with a special shell that catches open(), etc. in child processes (via library injection, etc).  These system calls get tracked, and stored in a special build table.  One that you <i>don't</i> have to edit.<p>Then, when you want to run the build again, you just re-run the magic shell.  It catches the various commands, and checks their inputs / outputs, and then <i>skips running the command</i> if the targets are up to date.<p>e.g.<p><pre><code>  $(CC) -c foo.c -o foo.o
</code></pre>
Hmm... "foo.o" is up to date with "foo.c", so I don't need to run the compiler.  I just return "success!"<p>That would get rid of <i>all</i> magic build systems.  All build syntax.  All dependency ordering.  The build system would just take care of it itself.<p>I've played with this before, enough to note that it's likely possible.  But I haven't got far enough to publish it.