Batch analysis-build concatenation into a maximum number of analyses, then let the make threads work at the job pool
rivet-build is relatively smart, dividing up a plugin compilation into subcompilations to allow use of multiple cores. But the "buckets" used for this batching are said by the number of make threads: a single-thread build will still attempt to compile the concatenation of hundreds of analyses at a time. Smarter would be to limit the number of analyses concatenated per bucket, or the length of the concatenated C++ file. This should help reduce the RAM required during the main Rivet build.