Skip to main content

ABOUT WAF

Waf is a Python-based framework for configuring, compiling and installing applications. Here are perhaps the most important features of Waf:

  • Automatic build order: the build order is computed from input and output files, among others
  • Automatic dependencies: tasks to execute are detected by hashing files and commands
  • Performance: tasks are executed in parallel automatically, the startup time is meant to be fast (separation between configuration and build)
  • Flexibility: new commands and tasks can be added very easily through subclassing, bottlenecks for specific builds can be eliminated through dynamic method replacement
  • Extensibility: though many programming languages and compilers are already supported by default, many others are available as extensions
  • IDE support: Eclipse, Visual Studio and Xcode project generators (waflib/extras/)
  • Documentation: the application is based on a robust model documented in The Waf Book and in the API docs
  • Python compatibility: cPython 2.7 to 3.x, Jython 2.7 and PyPy

Learn more about Waf by reading The Waf Book. For researchers and build system writers, Waf also provides a framework and examples for creating custom build systems and package distribution systems.

Download the project from our page on waf.io, consult the manual, the API documentation and the showcases and experiments.

HOW TO CREATE THE WAF SCRIPT

python ./waf-light configure build

CUSTOMIZATION

The Waf tools in waflib/extras are not added to the waf script. To add some of them, use the --tools switch. An absolute path can be passed if the module does not exist under the 'extras' folder:

./waf-light --tools=swig

To customize the initialization, pass the parameter 'prelude'. Here is for example how to create a waf file using the compat15 module:

./waf-light --tools=compat15 --prelude=$'\tfrom waflib.extras import compat15\n'

Although any kind of initialization is possible, using the build system kit may be easier (folder build_system_kit):

./waf-light --make-waf --tools=compat15,/comp/waf/aba.py --prelude=$'\tfrom waflib.extras import compat15\n\tprint("ok")'

To avoid regenerating the waf file all the time, just set the WAFDIR environment variable to the directory containing "waflib".

HOW TO RUN THE EXAMPLES

Try this:

cp waf demos/c/
cd demos/c/
./waf configure build

Release files for waflib 2.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for waflib 2.1.4
File Size Uploaded Provenance
waflib-2.1.4.tar.gz 702.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for waflib 2.1.4
File Interpreter ABI Platform
waflib-2.1.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 1.2 MB

Release files / waflib-2.1.4.tar.gz

Download URL waflib-2.1.4.tar.gz
Size 702.0 kB
Tags Source
SHA-256 checksum
How to use checksums
322f82ffc45672577e342c16abbf13ed096bdb8dc5dfded02417ff9e3847feaa
BLAKE2b-256 checksum
How to use checksums
46bd734fa542f98077f994bbca1dbd184cc1e48889b8e0eb49beee5710eda6e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.1

Release files / waflib-2.1.4-py2.py3-none-any.whl

Download URL waflib-2.1.4-py2.py3-none-any.whl
Size 473.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
98736497a85435f17725da3fd69a1e2ebcd748d45b94ecde9df50695ad6e7a7d
BLAKE2b-256 checksum
How to use checksums
134e7cbdb3c1013295f46d6a8f03f56e03b8c22e0dea059c7b14dc4a8d54880c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.1

Security for waflib 2.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

2.1.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page