Skip to main content


The more I learn about Makefiles, the sillier I think it is that we have fucking Autoconf and CMake and (insert other things here) complicating the build process when everything that they do for developers can be implemented in GNU Make.

You can define custom functions in Makefiles by defining a recursively expanded variable (use a bare =) that references $1, $2, etc. Those functions can return build rules or even entire recipes. You can use $(eval) to evaluate arbitrary text as Makefile expressions. There's even a $(let) operator for lexical scoping!

...Now I really want to implement one of those "easier to use" build systems as a Makefile...