That being said, I absolutely hate make, there are so many footguns and weird quirks and implicit behavior that always end up biting me.
I find that 90% of the time what I actually want is a command runner like Just (https://github.com/casey/just) and have the make file contain the absolute sheer minimum required to build code.
While we’re at it, CMake is another build tool with the same problems as make - powerful, with an ugly syntax, unintuitive semantics, hidden dragons, and a manual that’s torturous to read.
For example, in CI pipelines, I can use my own plain. Makefile to replace different yaml tasks across different languages, from shell scripts to python scripts to npm scripts.
With LLM, we might have a chance to explore the capabilities and deeper ideas in them. If I have enough LLM budget (time and money wise), I might spend more on using awk to build super agents. GNU manuals are perfect context for these kinds of usages.
I’ve been reading through https://cliutils.gitlab.io/modern-cmake/README.html to try and get my head around CMake best practices and the book is just line after line of “Don’t do it the old way or the obvious way, because you will end up accidentally doing the wrong thing due to A Hidden Footgun.” That’s bad design*!