Ninja is enough build system
bernsteinbear.com
bernsteinbear.com
It is technically a Haskell DSL, but supports Ninja files, time estimates and has tools for linting and profiling.
> This tiny little implementation[0] in Python!
345 lines of well-commented Python. Cute as a button! It doesn't seem to re-use already-built files, though.
I wonder how many lines that would add. I actually have a bit of Python in my build pipeline that basically just goes `if os.path.getmtime(src) > os.path.getmtime(target)` and it works fine for that one file (and took far less effort than trying to shoehorn that build step into my Makefile).
The only support I miss is globs, as the Ninja files are quite redundant without them. In some of those cases I use a few lines of Python to regenerate a list of Ninja targets.
https://github.com/michaelforney/samurai
Edit: It someone writes a ninja-compatible tool in Rust, they must call it "ronin."
and then:
> There are tools like CMake and Meson that can generate Ninja files
So ninja is not enough. You need Meson, CMake and finally, make.