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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
waf_old/build_system_kit
Thomas Nagy 5ac8e882e0
Remove the TaskBase class hierarchy level
8 years ago
..
extpy Initial commit 13 years ago
makefile_dumper Remove the TaskBase class hierarchy level 8 years ago
noscript Accept nested lists as bld(source=...) 8 years ago
nostate Initial commit 13 years ago
overview Initial commit 13 years ago
parser Tuples in startswith/endswith (Python 2.5 feature) 9 years ago
README.txt Api docs 9 years ago

README.txt

The new "concurrent.futures" module from Python 3.2 will make it
even easier to execute tasks concurrently:
http://www.python.org/dev/peps/pep-3148/

It may be tempting to try to create a new build system from it,
but that's only a small part of a build system:

* reinventing a system for handling commands and command-line options
* adding a system of (task) order and dependencies
* creating an extension system for new programming languages
* handling exceptions and errors
* adding support for python versions < 3.2

All this represents a lot of work, and there are of course lots of design
mistakes to avoid. It is so easy to create a system with poor usability,
poor extensibility, and poor performance.

These pitfalls and many others are already solved in the Waf build system, which
also enables the re-use of its components into new build tools. By using these
tested and maintained components, much more time will be left to work
on the interesting problems such as creating an intuitive XML/YAML/JSON schema
or creating a domain-specific programming language (make-like, cmake-like, ...),
or extracting commands and dependencies to create derivated files (Makefiles, Visual studio, ..)

A few examples are provided to illustrate the range of possibilities:
* overview:        how to create a custom file using the waf framework to perform a simple build
* parser:          how to add a parser for a domain-specific language
* noscript:        infer what to build from given files, use no script file
* makefile_dumper: create a makefile corresponding to the current build, extracting as many dependencies as possible
* nostate:         use timestamps only, and no build directory (very make-like)
* extpy:           a custom waf file able to read wscript files having the extension ".py"

Thomas Nagy, 2010-2016