I like SCons. It is constructed in such a way that every build script (a SConstruct
file) is also a syntactically valid Python program. So, you can build arbitrary Python logic into your build script if you need to.
It's also much faster than make
and calculates many kinds of dependencies automatically.