Even though ninja
isn’t make
, its ebuild should recognize and respect any -j
parameter specified in the MAKEOPTS
environment variable. That means you should be able to force a maximum of one job via MAKEOPTS=-j1
. You can do this on a one-time basis:
MAKEOPTS=-j1 emerge -a llvm
You can also set this change globally/permenantly for all packages on your system by editing the MAKEOPTS=
line in /etc/portage/make.conf
.
However, if you set MAKEOPTS=-j1
via your shell or make.conf
, the parallelization settings will be applied to all packages which emerge
installs. If you want to apply it to just that one package, you can create the file called /etc/portage/env/sys-devel/llvm
(create any missing directories if necessary) and place these contents in it:
MAKEOPTS=-j1
This will apply the variable only to the llvm package itself.
How to do this in the shell:
mkdir -p /etc/portage/env/sys-devel
echo MAKEOPTS=-j1>>/etc/portage/env/sys-devel/llvm
Ninja and MAKEOPTS
In Gentoo, because people rely on MAKEOPTS=-j«n»
to control the number of jobs, various eclasses and ebuilds will map this variable’s -j
parameter to the equivalent for the acutal build system in use. You can see this in eclass/ninja-utils.eclass
(which is used by cmake-utils.eclass
which is used by llvm
). That snippet extracts just the -j
parameter and passes it to ninja
because ninja
supports that parameter while it might not support other things people place in MAKEOPTS
.
Disclaimer: I haven’t actually tested this with the latest llvm
ebuild. Please comment if there are issues with this answer!