Sure, I agree, mostly. Make doesn't suck. I use it, works well.
But then why do most users of make actually use it like a compiler's intermediate code pass with some program generating makefiles automatically? Those makefiles suck big time. I rarely see hand written but when I do I find they build fast and are easy to maintain.
Is it really necessary to track every last dependency of every last blasted header file? We all know the result, all the world depends on *.h anyway. Just go to the top and do a clean build. You know that is the only thing you will really trust. My current bit of work is 240,000 lines, clean build in 9 seconds on a good computer. (Is make -j 6 on a six core cheating? Then 22 seconds for non-parallel.) Just what are people doing to turn this in to such a problem?
Is it by refusing to modularise code and building 240,000,000 lines as one cohesive unit? Or is it by using C++ and making a million tiny .cpp files so the header universe gets recompiled a million times? Autotools? They seem to take a year and a day. No, don't tell me, there are many answers.