| Waf is a Python-based framework for configuring, compiling and installing applications. It derives from the concepts of other build tools such as Scons, Autotools, CMake or Ant. |
Features
- Easy to use: Waf configuration files are written in the mainstream scripting language Python
- Easy to install and to distribute: Waf fits entirely in a single 75KB redistributable file which does not require any installation to run
- Portable: Waf only depends on Python which is ported onto most operating systems
- Reliable: Waf uses hash-based dependency calculation dependencies to compute the targets to rebuild
- User-friendly: The output can be displayed in colors, filtered, displayed with progress bars or output all the commands that get executed
- Documented: The Waf book sums up the essential concepts
- Flexible: Because Waf has a carefully designed object oriented architecture it is very easy to add new features
- Fast: Because of its carefully designed architecture, Waf is able to distribute the jobs on multi-core hardware (-j), it is able to reuse targets compiled already (ccache), and its runtime footprint is pretty small compared to other build tools
- Broad support for languages and tools: Waf is already used for C, C++, C#, D, java, ocaml, python project, and provides various tools for processing docbook, man pages, intltool, msgfmt
Documentation
The documentation can be found at the following places
- The Waf book
- Wiki
- Example projects which show how to use Waf for different languages and projects
Contact
Google Groups / Mailing list
The mailing list is located at waf-users
IRC
Join us to the #waf channel on irc.freenode.org
Contributing
Contributions may be provided in several different ways by:
- Filling feature requests on the Issue Tracker
- Contributing documentation on the Wiki
- Using Waf to build your own software
- Improving Waf itself by changing its Source code
- Browsing the most recent changes
Screenshots
Waf console output
The progress bar when the -p option is used
