waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

README.md (3312B)


      1 ## ABOUT WAF
      2 
      3 Waf is a Python-based framework for configuring, compiling and installing applications. Here are perhaps the most important features of Waf:
      4 
      5   * *Automatic build order*: the build order is computed from input and output files, among others
      6   * *Automatic dependencies*: tasks to execute are detected by hashing files and commands
      7   * *Performance*: tasks are executed in parallel automatically, the startup time is meant to be fast (separation between configuration and build)
      8   * *Flexibility*: new commands and tasks can be added very easily through subclassing, bottlenecks for specific builds can be eliminated through dynamic method replacement
      9   * *Extensibility*: though many programming languages and compilers are already supported by default, many others are available as extensions
     10   * *IDE support*: Eclipse, Visual Studio and Xcode project generators (`waflib/extras/`)
     11   * *Documentation*: the application is based on a robust model documented in [The Waf Book](https://waf.io/book/) and in the [API docs](https://waf.io/apidocs/)
     12   * *Python compatibility*: cPython 2.5 to 3.x, Jython 2.5, IronPython, and Pypy
     13 
     14 Waf is used in particular by innovative companies such as [Avalanche Studios](http://www.avalanchestudios.se) and by open-source projects such as [RTEMS](https://www.rtems.org/). Learn more about Waf by reading [The Waf Book](https://waf.io/book/).
     15 
     16 For researchers and build system writers, Waf also provides a framework for creating [custom build systems](https://gitlab.com/ita1024/waf/tree/master/build_system_kit) and [package distribution systems](https://gitlab.com/ita1024/waf/blob/master/playground/distnet/README.rst).
     17 
     18 Download the project from our page on [waf.io](https://waf.io/) or from a mirror on [freehackers.org](http://www.freehackers.org/~tnagy/release/), consult the [manual](https://waf.io/book/), the [API documentation](https://waf.io/apidocs/) and the [showcases](https://gitlab.com/ita1024/waf/tree/master/demos) and [experiments](https://gitlab.com/ita1024/waf/tree/master/playground).
     19 
     20 ## HOW TO CREATE THE WAF SCRIPT
     21 
     22 Python >= 2.6 is required to generate the waf script, and the resulting file can then run on Python 2.5.
     23 Just run:
     24 ```sh
     25 $ python ./waf-light configure build
     26 ```
     27 Or, if several python versions are installed:
     28 ```sh
     29 $ python3 ./waf-light configure build
     30 ```
     31 
     32 ## CUSTOMIZATION
     33 
     34 The Waf tools in waflib/extras are not added to the waf script. To add
     35 some of them, use the --tools switch. An absolute path can be passed
     36 if the module does not exist under the 'extras' folder:
     37 ```sh
     38 $ ./waf-light --tools=swig
     39 ```
     40 
     41 To customize the initialization, pass the parameter 'prelude'. Here is for example
     42 how to create a waf file using the compat15 module:
     43 ```sh
     44 $ ./waf-light --tools=compat15 --prelude=$'\tfrom waflib.extras import compat15\n'
     45 ```
     46 
     47 Although any kind of initialization is possible, using the build system kit
     48 may be easier (folder build\_system\_kit):
     49 ```sh
     50 $ ./waf-light --make-waf --tools=compat15,/comp/waf/aba.py --prelude=$'\tfrom waflib.extras import compat15\n\tprint("ok")'
     51 ```
     52 
     53 To avoid regenerating the waf file all the time, just set the `WAFDIR` environment variable to the directory containing "waflib".
     54 
     55 ## HOW TO RUN THE EXAMPLES
     56 
     57 Try this:
     58 ```sh
     59 cp waf demos/c/
     60 cd demos/c/
     61 ./waf configure build
     62 ```
     63