An All-in-One DAG Toolkit: The strongly-connected components algorithm
vaibhavsagar.com
vaibhavsagar.com
It can be used like CMake (as a build script generator) or like Ninja. For many projects (including building Ninja), it's faster than Ninja. Chromium is a notable exception: it has a huge set of Ninja files, and the Shake parser is not as fast as Ninja's parser.
From the docs:
> [...] compiling LLVM on Windows under mingw they both take the same time to compile initially, and Ninja takes 0.9s for a nothing to do build vs Shake at 0.8s. Shake is slower at parsing Ninja files, so if you have huge .ninja files (e.g. Chromium) Shake will probably be slower. Shake does less work if you don't specify deps, which is probably why it is faster on LLVM (but you should specify deps -- it makes both Shake and Ninja faster). As people report more results I am sure both Shake and Ninja will be optimised.
https://github.com/ndmitchell/shake/blob/master/docs/Ninja.m...
A Summer of Haskell project is on to migrate GHC to a Shake-based build system.
PS. Wow, Annie Cherkaev's website looks really different now.