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 a047f7c..e5000a6 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