GNU parallel has a "-j" option quite like GNU make. But it also allows to specify the number of jobs relative to the number of CPU cores present:
--jobs N -j N Number of jobslots on each machine. Run up to N jobs in parallel. 0 means as many as possible. Default is 100% which will run one job per CPU core on each machine. In my experience, that's what I almost always do when running parallel jobs (either 100%, or even something like 150% or 200% for I/O intensive and not very memory hungry jobs). Of couse, with make I can compute the number of cores myself (e.g. in a wrapper script by reading /proc/cpuinfo), but that's not very portable and rather cumbersome to do in various places, so it would seem useful for make to support this in a centralized location and more portable than anyone's individual solution. The implementation is hopefully not too difficult. Under Linux you can use "sysconf (_SC_NPROCESSORS_ONLN)", and other systems probably have similar methods. The implemention of GNU parallel can serve as an example. In the worst case, it can always default to 1. Regards, Frank