With multi-socket systems becoming more prevalent, and the continued increase in cores per processors, I thought it would be nice for 'make -j' to gain some automation.
Attached is a patch that makes "-j-" be the same as "-j `sysctl -n kern.smp.cpus`" and "-j=" be twice that. I've also thought that maybe just supporting "-j-" would be better - with a definition of num_core = `sysctl -n kern.smp.cpus` -j => MAX(num_core * 5 / 4, num_core + 1) the idea being one would want a few more jobs than cores, but not a whole lot more. comments? (redirected back to list) -- -- David ([EMAIL PROTECTED]) Index: main.c =================================================================== RCS file: /home/ncvs/src/usr.bin/make/main.c,v retrieving revision 1.160 diff -u -p -r1.160 main.c --- main.c 17 Jul 2006 19:16:12 -0000 1.160 +++ main.c 14 Dec 2006 02:26:15 -0000 @@ -456,11 +456,20 @@ rearg: char *endptr; forceJobs = TRUE; + size_t jLlen = sizeof(jobLimit); jobLimit = strtol(optarg, &endptr, 10); - if (jobLimit <= 0 || *endptr != '\0') { - warnx("illegal number, -j argument -- %s", - optarg); - usage(); + if ((*optarg == '-' || *optarg == '=') && + *endptr != '\0') { + sysctlbyname("kern.smp.cpus", &jobLimit, &jLlen, + NULL, 0); + if (*optarg == '=') + jobLimit *= 2; + } else { + if (jobLimit <= 0 || *endptr != '\0') { + warnx("illegal number, -j argument -- %s", + optarg); + usage(); + } } MFLAGS_append("-j", optarg); break; Index: make.1 =================================================================== RCS file: /home/ncvs/src/usr.bin/make/make.1,v retrieving revision 1.99 diff -u -p -r1.99 make.1 --- make.1 29 Sep 2006 21:17:10 -0000 1.99 +++ make.1 14 Dec 2006 04:19:22 -0000 @@ -218,6 +218,14 @@ may have running at any one time. Turns compatibility mode off, unless the .Fl B flag is also specified. +The special values +.It Ar - +and +.It Ar = +causes +.It Ar max_jobs +to be set to the value returned from the kern.smp.cpus sysctl and twice +kern.smp.cpus respectively. .It Fl k Continue processing after errors are encountered, but only on those targets that do not depend on the target whose creation caused the error. _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"