.. -*- rst -*-

.. module:: soclib_builder

=========================
The soclib builder module
=========================

.. index:: builder

Overview
========

The ``soclib_builder`` module is responsible for recording the actions
(commands, file creation, directory creation, etc.) involved in a
build, scheduling them, running them in an parallel way.

This module is split in different modules. Each build
:py:class:`~soclib_builder.action.Action` is associated to:

* a set of :py:class:`~soclib_builder.bblock.BBlock` that are
  prerequisites

* a set of :py:class:`~soclib_builder.bblock.BBlock` that are
  products

* a list of :py:class:`~soclib_builder.command.Command` to run in
  order to complete the action

All the actions of a build are regrouped in a
:py:class:`~soclib_builder.todo.ToDo` object responsible for
dependency tracking and scheduling of actions.

``soclib_builder`` also contains an utility :py:class:`Makefile rule
parser <soclib_builder.mfparser.MfRule>` which permits to reintegrade
dependency tracking makefile snippets generated by GCC in
``soclib_builder``.

Topics
======

.. toctree::
   :maxdepth: 2

   todo
   bblock
   action
   command
   mfparser
