8.50. Ninja-1.10.0

Ninja is a small build system with a focus on speed.

Approximate build time: 0.2 SBU
Required disk space: 78 MB
[Tip]

Tip

This section is not strictly required for LFS if not using systemd. On the other hand, ninja associated to meson makes a powerful build system combination, which is expected to be used more and more often. It is required for several packages in the BLFS book.

8.50.1. Installation of Ninja

When run, ninja normally runs a maximum number of processes in parallel. By default this is the number of cores on the system plus two. In some cases this can overheat a CPU or run a system out of memory. If run from the command line, passing a -jN parameter will limit the number of parallel processes, but some packages embed the execution of ninja and do not pass a -j parameter.

Using the optional procedure below allows a user to limit the number of parallel processes via an environment variable, NINJAJOBS. For example, setting:

export NINJAJOBS=4

will limit ninja to four parallel processes.

If desired, add the capability to use the environment variable NINJAJOBS by running:

sed -i '/int Guess/a \
  int   j = 0;\
  char* jobs = getenv( "NINJAJOBS" );\
  if ( jobs != NULL ) j = atoi( jobs );\
  if ( j > 0 ) return j;\
' src/ninja.cc

Build Ninja with:

python3 configure.py --bootstrap

The meaning of the build option:

--bootstrap

This parameter forces ninja to rebuild itself for the current system.

To test the results, issue:

./ninja ninja_test
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots

Install the package:

install -vm755 ninja /usr/bin/
install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
install -vDm644 misc/zsh-completion  /usr/share/zsh/site-functions/_ninja

8.50.2. Contents of Ninja

Installed programs: ninja

Short Descriptions

ninja

is the Ninja build system.