The Waf approach

Build systems make assumptions on software it is trying to build, and are typically limited where it comes to processing other languages or different projects. For example, Ant is better suited than Make for managing Java projects, but is more limited than Make for managing simple c projects.

There are so many different languages that creating a build system to support all the possible kind of projects out-of-the-box is likely to be difficult. It looks much more interesting to create one which can be extended easily.

The Waf approach is to provide a minimalistic and very flexible framework, which is packaged it with a significant amount of default build rules to be usable for most projects, and many recipes for the most complicated scenarios.