From: Gary V. Vaughan Date: Thu, 8 Dec 2011 10:01:56 +0000 (+0700) Subject: libtool: minimise forks per invocation under bash. X-Git-Tag: v2.4.2.418~203 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4099c121a131784d3ab103bee848e971d8bfafcb;p=thirdparty%2Flibtool.git libtool: minimise forks per invocation under bash. * build-aux/general.m4sh (lt_HAVE_PLUSEQ_OP, lt_HAVE_ARITH_OP) (lt_HAVE_XSI_OPS): Set these without forking a test script when running under bash, to avoid a few unnecessary forks. Signed-off-by: Gary V. Vaughan --- diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh index 252b2d2c0..e96c0e4bf 100644 --- a/build-aux/general.m4sh +++ b/build-aux/general.m4sh @@ -74,12 +74,21 @@ dirname='s|/[^/]*$||' basename='s|^.*/||' +# We should try to minimise forks, especially on Windows where they are +# unreasonably slow, so skip the feature probes when bash is being used: +if test set = "${BASH_VERSION+set}"; then + : ${lt_HAVE_ARITH_OP="yes"} + : ${lt_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + test -z "$lt_HAVE_PLUSEQ_OP" \ + && test 3000 -lt "$((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]}))" \ + && lt_HAVE_PLUSEQ_OP=yes +fi + + # lt_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is useable # or anything else if += does not work. -# NOTE: You can short-circuit the fork and test on every invocation (e.g. -# on Windows where fork emulations are unreasonably slow) by setting this -# in the environment of this script. test -z "$lt_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && lt_HAVE_PLUSEQ_OP=yes @@ -117,9 +126,6 @@ fi # lt_HAVE_ARITH_OP # Can be empty, in which case the shell is probed, "yes" if $((...)) is # useable or anything else if it does not work. -# NOTE: You can short-circuit the fork and test on every invocation (e.g. -# on Windows where fork emulations are unreasonably slow) by setting this -# in the environment of this script. test -z "$lt_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && lt_HAVE_ARITH_OP=yes @@ -141,9 +147,6 @@ fi # lt_HAVE_XSI_OPS # Can be empty, in which case the shell is probed, "yes" if XSI length # and matching operators are useable or anything else if they do not work. -# NOTE: You can short-circuit the fork and test on every invocation (e.g. -# on Windows where fork emulations are unreasonably slow) by setting this -# in the environment of this script. test -z "$lt_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \