autogen.sh: Detect number of processors and run parallel make.
authorAndre Noll <maan@systemlinux.org>
Tue, 15 Feb 2011 07:28:43 +0000 (08:28 +0100)
committerAndre Noll <maan@systemlinux.org>
Wed, 6 Apr 2011 14:40:34 +0000 (16:40 +0200)
On multi-core machines a parallel make is often much faster than a
sequential make. This patch teaches autogen.sh to detect the number
of processing units available on the build system. It first tries to
execute the nproc utility (part of the coreutils package) and falls
back to /proc/cpuinfo if nproc was unavailable.

If both methods don't work, which is usually the case on non-Linux
systems where coreutils are not installed and /proc/cpuinfo does not
exist, we use the safe default of n=1.

autogen.sh

index a047f7c4d9f0bc704ade2ed049118c0eb3e02f7f..e5000a6fd70cddc63b1f2a2dc21f54bc760641bc 100755 (executable)
@@ -1,7 +1,13 @@
 #!/bin/sh
-echo preparing...
+# check if we have multiple processors/cores
+n=$(nproc 2>/dev/null)
+if [ -z "$n" ]; then
+       n=$(grep ^processor /proc/cpuinfo 2>/dev/null | wc -l)
+       [ $n -eq 0 ] && n=1
+fi
+echo preparing, parallel=$n...
 if test -f Makefile; then
-       make maintainer-clean > /dev/null
+       make maintainer-clean > /dev/null 2>&1
 fi
 aclocal -I . > /dev/null 2>&1
 autoconf
@@ -10,4 +16,4 @@ echo configuring...
 ./configure $@ > /dev/null
 echo compiling...
 make clean2 > /dev/null 2>&1
-make > /dev/null
+make -j $n > /dev/null