ninja – Ninja Buildcloth Syntax Layer

ninja provides the main interface for managing Makefile output, and is a thin wrapper around the basic functionality for BuildCloth().

class ninja.NinjaFileCloth(indent=2, ninjafile=None)

NinjaFileCloth wraps BuildCloth() to provide an interface for specifying Ninja-based build systems.

add_rule(name, command, description, depfile=None, generator=False, restat=False, rsp=None, pool=None, block='_all')
Parameters:
  • name (string) – Required. Holds the name of the rule. build() targets must refer to a rules using this name.
  • command (list) – Required. The shell command or commands. Must present commands as a list, even if there is only one item.
  • description (string) – Required. A description of the command’s operation, to be included in Ninja’s output.
;param string depfile: Optional; defaults to None. Specify a
Makefile with dependencies, such as what gcc or other tool chain might generate.
;param boolean generator: Optional; defaults to False. Specifies a
special generator rule, signifiying that this rule generates Ninja files.
;param boolean restat: Optional; defaults to False. When True
specifies a rule where Ninja will check the mtime of the file and remove dependencies of this target if the file didn’t change.
;param tuple rsp: Optional; defaults to disabled. The first value holds
the path to the file, and the second value holds the content (typically $in.)
Parameters:
  • pool (string) – Optional; defaults to disabled. Specify the name of a worker pool to use for these build targets.
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

Consider ninja’s rule reference for more information about these options.

build(path, rule, dep=[], vars={}, order_only=[], implicit=[], block='_all')
Parameters:
  • path (string) – A path for the build target.
  • rule (string) – The name of build rule.
  • dep (list) – A list of explicit dependencies.
  • vars (dict) – A mapping of variable names to their values.
  • order_only (list) – A list of order-only dependencies.
  • implicit (list) – A list of implicit dependencies
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

Consider ninja’s rule statement reference for more information about these options.

default(rule, block='_all')
Parameters:
  • rule (string) – The name of the default rule.
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

See ninja’s documentation on the default rule for more information.

phony(name, dependency, block='_all')
Parameters:
  • name (string) – The name of a phony rule.
  • dependency (string) – The build targets which are “phony.”
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

See ninja’s documentation on phony rules for more information.

pool(name, depth, block='_all')
Parameters:
  • name (string) – The name of the worker pool for building
  • depth (int) – The size of the worker pool. This cannot exceed the default parallelism specified by -j to ninja on the command line.
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

Pools provide a way to control and limit concurrency for specific jobs. See ninja’s documentation of pools for more information.

Note

Pools are an experimental feature of Ninja that may be removed in a future release.

rule(name, rule_dict, block='_all')
Parameters:
  • name (string) – The name of the build rule. This string will identify the rule when you specify a builder.
  • rule_dict (dict) – A dictionary that contains a complete Ninja build rule.
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

rule() parses rule_dict for the following fields and constructs a corresponding ninja rule:

  • command (required; a list.)
  • depfile (a path.)
  • description` (required. a string.)
  • generator
  • restat
  • rspfile (requires corresponding rsp_content field)

Internally, rule() wraps add_rule().

var(variable, value, block='_all')
Parameters:
  • variable (string) – The name of the variable.
  • value (string) – The value of the variable.
  • block (string) – Optional; defaults to _all. Specify the name of the block in builder.

Adds a variable assignment to a build system block.

ninja.process_command(command)
Parameters:command (list) – A list of commands.

Helper function to take a list of commands and transform the command into a ; `` separated list of commands to support multi-operation build commands. If ``command is not a list, raises buildcloth.err.MalformedContent.