cmake has been suggested a few times above. I recently(ish) rewrote a nasty old imake-based build system on a program into cmake, and found it a reasonable pleasant experience; managing and expanding it since then has failed to be totally miserable. I also replaced another custom make-based build system with cmake, and that went smoothly.
Of course, cmake is both much more and somewhat less than a make replacement, so depending on just what you're doing, it may be a godsend or a nightmare. If you're looking purely as a building-this-software-package system, it's probably pretty well suited. If you're using make as a more general scripting / automation solution, maybe not so much.