tl;dr — This patch may make your builds faster. This tool collects all your build errors and summarizes them after the build finishes.

Currently, when you build Firefox with make -jN, the build system parallelizes only within the current directory (*). So if you build with -j8 and a directory has 9 files, seven of your CPUs will be idle half the time.

About nine months ago, I wrote a patch which adds more parallelism to the build. I ran make through strace and parsed the results to figure out which top-level directories could be built independently of others. We haven't been able to check this in for a variety of reasons (primarily because it's an awful hack, see bug 620285), but since I'm keeping this patch up-to-date for myself, I thought I'd share it with others.

Machines with more cores are likely to benefit more from this patch. A build on Mounir's 8-core machine went from 11m to 7.5m, a 1.5x improvement. I saw a 1.2x improvement on my 4-core machine (12m to 10m).

If you want to try the patch out for yourself, you can grab it from my patch queue. I haven't had any problems with randomly-failing builds locally or on tryserver, although if you have a weird mozconfig, things might not work.

It's easy for error messages to get lost in the scrollback with this patch, so I wrote a tool which intercepts make's output and will report your build errors to the console after the top-level make process quits. Just put the script in your ~/bin and run rse make.

The tool works best if you have the termcolor package installed.

Of course, the Right Way to increase parallelism in the build is to derecursify the build system. Godspeed, Joey!

(*) There are a few exceptions, notably within the content directory.