The Waf build system https://waf.io/
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Waf Project d39f99e531 Do not raise errors on missing qt_vars (previous behaviour)
Also:
- remove unused variables
- consolidate pkg-config detection and remove qt_check_pkg_config
- rename find_single_qt5_lib to configure_single_qt_lib because it is too different from the original
19 hours ago
.pipelines Update the CI pipelines 3 years ago
build_system_kit Fix a few deprecation warnings 6 years ago
demos Detect required -fPIC flag for Qt6 2 weeks ago
docs docs 5 days ago
playground Improve cuda detection logs 1 month ago
tests Sort visual studio versions by version number #2352 3 years ago
utils Remove old __future references__ 3 weeks ago
waflib Do not raise errors on missing qt_vars (previous behaviour) 19 hours ago
zip iso8859-1 -> latin-1 8 years ago
.gitignore Ignore VIM temporary files and Windows waf unpacks 5 years ago
ChangeLog waf-2.1.4 3 weeks ago
DEVEL Minor docs improvement 8 months ago
LICENSE Duplicate the license to a file #2357 1 year ago
README.md Due to arparse, Python >= 2.7 is now required 7 months ago
TODO waf-2.1.0 7 months ago
configure Update use_config - Issue 1608 9 years ago
waf-light waf-2.1.4 3 weeks ago
wscript waf-2.1.4 3 weeks ago

README.md

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