The WCT build system is based on Waf. The parts of the build system include:
- the
wcb
command provided bywire-cell-build
which is a bundled version of Waf’swaf
command. - a number of Waf tools provide instructions for finding the required and optional software dependencies
- the main
wscript
and per-packagewscript_build
files provide the high-level instructions for building WCT (ie, they are like old fashionedMakefile
files).
The wcb
command bundles some optional Waf tools which are not included in the default version of the waf
command. In case new versions of Waf or new tools are needed it can be recreated like this:
$ git clone https://github.com/waf-project/waf.git $ cd waf/ $ ./waf-light --tools=compat15,doxygen,boost,bjam $ cp waf /path/to/wire-cell-build/wcb $ cd /path/to/wire-cell-build $ git commit [...]
A number of Waf tools are provided in the waftools submodule. This provides a Python module for each software package which is a required or optional dependency and which is not already covered by Waf itself. New dependencies can be added by using existing modules as examples. It is the smplpkgs.py
module which handles the building of the WCT packages themselves. The wcb.py
module is used as a simple aggregate of all the other modules. It is this that is loaded by the main wscript
.