The project I'm working on inherited some code that uses Cons instead of Make (not to confused with SCons in Greg Hewgill's answer).
Cons is written in Perl, much like SCons is written in Python. It manages dependencies automatically, and you can use any Perl code inside the build script to handle complex build sequences.
The main disadvantage (and the main reason I'm sorry my project uses it) is that Cons doesn't do parallel builds in the style of make -j. If you're compiling a number of files that don't depend on each other Cons will compile them one at a time, while make -j will compile them in parallel, which is great if you have multiple cores and threads on your machine.