https://www.gnu.org/software/make/manual/html_node/Catalogue...
If you only use plain rules and maybe simple pattern rules, avoid configure step, etc. Makefiles are simple, pretty and very generic.
Why do all other build systems have so much magic?
Why not declare rules and input/output in a pure functional manner?