
== Glossary

[glossary]
Build Order::
	The build order is the sequence in which tasks must be executed. Because tasks can be executed in parallel, several build orders can be computed depending on the constraints between the tasks. When a build order cannot be computed (usually by contradictory order constraints), the build is said to be in a deadlock.
Dependency::
	A dependency represents the conditions by which a task can be considered up-to-date or not (execution status). The dependencies can be explicit (file inputs and outputs) or abstract (dependency on a value for example).
Task generator::
	A task generator is an object instance of the class Task.task_gen. The task generators encapsulate the creation of various task instances at a time, and simplify the creation of ordering constraints between them (for example, compilation tasks are executed before link tasks).
Task::
	A Waf task is an object instance of the class Task.TaskBase. Waf tasks may be simple (Task.TaskBase) or related to the filesystem (Task.Task). Tasks represent the production of something during the build (files in general), and may be executed in sequence (with ordering constraints) or in parallel.
Tool::
	A Waf tool is a python module containing Waf-specific extensions. The Waf tools are located in the folder +waflib/Tools/+ and usually contain a global variable 'configure' which may reference functions to execute in the configuration.
Node::
	The Node class is a data structure used to represent the filesystem in an efficient manner. The node objects may represent files or folders. File nodes are associated to signatures objects. The signature can be hashes of the file contents (source files) or task signatures (build files).
Command::
	Function present in the top-level project file (wscript) and accepting a 'waflib.Context.Context' instance as unique input parameter. The function is executed when its name is given on the command-line (for example running 'waf configure' will execute the function 'configure')
Variant::
	Additional output directory used to enable several (build) commands to create the same targets with different compilation flags.
