Anyone who finds make unreasonably effective must be working with GNU Make.
If I had to use some barely POSIX conforming thing from BSD thing or wherever, I'd instead write a write a top-to-bottom linear shell script full of conditionals.
GNU Make is so prevalent that nobody seems to bother with this. I can't recall the last time I've seen a GNUmakefile. (Note the lower case 'm', according to the manual.)
It makes sense if you ship both a GNUmakefile and a Makefile.
I agree. I try to stick to just POSIX make when that's easy to do, but POSIX make is so impoverished that it usually isn't worth trying to stick to just POSIX make.
In general, for most people, make is GNU make. And GNU make is actually pretty decent at a lot of tasks.
Many ridiculous makefile problems I see stem from not using it well. I suggest:
* Use compiler dependency generators (generate .d files and "include" them via make). This eliminates many lines and errors.
* Don't use recursive makefiles.
* Set macros with := or ::=
* Use substitutions so definitions can be changed in just one place and the rest automatically works.
There is no perfect tool for all circumstances. But GNU make is still useful for many circumstances.
Here is an odd thing: GNU Make looks for the file in this order (according to the manual): GNUmakefile, makefile, Makefile.
The last time I saw a lower case 'm' makefile was eons ago.
The manual itself recommends Makefile rather than makefile, right in the same paragraphs where it tells you makefile is checked first.
Why look for makefile before Makefile, a file next to nobody has.
Maybe lower-case makefile was a predecessor to GNUmakefile; a way of having a GNU-specific makefile. (If so, that's a noteworthy thing the manual ought to mention.)
If I had to use some barely POSIX conforming thing from BSD thing or wherever, I'd instead write a write a top-to-bottom linear shell script full of conditionals.