.. _build_targets:

=============
Build Targets
=============

When you build with ``mach build``, there are some special targets that can be
built. This page attempts to document them.

Partial Tree Targets
====================

The targets in this section only build part of the tree. Please note that
partial tree builds can be unreliable. Use at your own risk.

export
   Build the *export* tier. The *export* tier builds everything that is
   required for C/C++ compilation. It stages all header files, processes
   IDLs, etc.

compile
   Build the *compile* tier. The *compile* tier compiles all C/C++ files.

libs
   Build the *libs* tier. The *libs* tier performs linking and performs
   most build steps which aren't related to compilation.

tools
   Build the *tools* tier. The *tools* tier mostly deals with supplementary
   tools and compiled tests. It will link tools against libXUL, including
   compiled test binaries.

binaries:
   Recompiles and relinks C/C++ files. Only works after a complete normal
   build, but allows for much faster rebuilds of C/C++ code. For performance
   reasons, however, it skips nss, nspr, icu and ffi. This is targeted to
   improve local developer workflow when touching C/C++ code.

install-manifests
   Process install manifests. Install manifests handle the installation of
   files into the object directory.

   Unless ``NO_REMOVE=1`` is defined in the environment, files not accounted
   in the install manifests will be deleted from the object directory.

install-tests
   Processes the tests install manifest.

Common Actions
==============

The targets in this section correspond to common build-related actions. Many
of the actions in this section are effectively frontends to shell scripts.
These actions will likely all be replaced by mach commands someday.

buildsymbols
   Create a symbols archive for the current build.

   This must be performed after a successful build.

check
   Run build system tests.
