X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/f43579d10c48a2a21c8f418a2a1a7de118b52429..cfe0526e097983680ce7c3675bbf77f735675e9d:/buildlib/tools.m4?ds=sidebyside diff --git a/buildlib/tools.m4 b/buildlib/tools.m4 index de9c8a103..9a8d744f2 100644 --- a/buildlib/tools.m4 +++ b/buildlib/tools.m4 @@ -13,32 +13,47 @@ AC_DEFUN(ah_HAVE_GETCONF, AC_SUBST(GETCONF) ]) -AC_DEFUN(ah_NUM_CPUS, +dnl ah_GET_CONF(variable, value ..., [default]) +AC_DEFUN(ah_GET_GETCONF, [AC_REQUIRE([ah_HAVE_GETCONF]) - AC_MSG_CHECKING([number of cpus]) + if test ! -z "$GETCONF";then + old_args="[$]@" + set -- $2 + while eval test -z \"\$$1\" -a ! -z \"[$]1\";do + eval $1=`$GETCONF "[$]1" 2>/dev/null` + shift + done + fi + if eval test -z \"\$$1\" -o \"\$$1\" = "-1";then + eval $1="$3" + fi +]) +AC_DEFUN(ah_NUM_CPUS, + [AC_MSG_CHECKING([number of cpus]) AC_ARG_WITH(cpus, [ --with-cpus The number of cpus to be used for building(see --with-procs, default 1)], - [if test "$withval" = "yes"; then - if test "$GETCONF";then - NUM_CPUS=`$GETCONF _NPROCESSORS_ONLN 2>/dev/null` - else - NUM_CPUS=1 - fi + [ + if test "$withval" = "yes"; then + ah_GET_GETCONF(NUM_CPUS, SC_NPROCESSORS_ONLN _NPROCESSORS_ONLN, 1) elif test ! "$withval" = "no";then NUM_CPUS=$withval - fi], - [if test "$GETCONF";then - NUM_CPUS=`$GETCONF _NPROCESSORS_ONLN 2>/dev/null` - else + elif test "$withval" = "no";then NUM_CPUS=1 - fi] + fi], + [ah_GET_GETCONF(NUM_CPUS, SC_NPROCESSORS_ONLN _NPROCESSORS_ONLN, 1)] ) + ah_NUM_CPUS_msg="$NUM_CPUS" + if test "$NUM_CPUS" = "0"; then + # broken getconf, time to bitch. + ah_NUM_CPUS_msg="found 0 cpus. Has someone done a lobotomy?" + NUM_CPUS=1 + fi if test $NUM_CPUS = 1 ;then default_PROC_MULTIPLY=1 else default_PROC_MULTIPLY=2 fi - AC_MSG_RESULT([$NUM_CPUS]) + AC_MSG_RESULT([$ah_NUM_CPUS_msg]) AC_SUBST(NUM_CPUS) ]) AC_DEFUN(ah_PROC_MULTIPLY, @@ -64,12 +79,82 @@ AC_DEFUN(ah_NUM_PROCS, AC_ARG_WITH(procs, [ --with-procs The number of processes to run in parallel during make(num_cpus * multiplier).], [if test "$withval" = "yes"; then - let "NUM_PROCS=$NUM_CPUS*$PROC_MULTIPLY" + NUM_PROCS=`expr $NUM_CPUS \* $PROC_MULTIPLY` elif test ! "$withval" = "no";then NUM_PROCS=$withval fi], - [let "NUM_PROCS=$NUM_CPUS*$PROC_MULTIPLY"] + [NUM_PROCS=`expr $NUM_CPUS \* $PROC_MULTIPLY`] ) AC_MSG_RESULT([$NUM_PROCS]) AC_SUBST(NUM_PROCS) ]) + +AC_DEFUN(rc_GLIBC_VER, + [AC_MSG_CHECKING([glibc version]) + AC_CACHE_VAL(ac_cv_glibc_ver, + dummy=if$$ + cat <<_GLIBC_>$dummy.c +#include +#include +#include +int main(int argc, char **argv) { printf("libc6.%d",__GLIBC_MINOR__); exit(0); } +_GLIBC_ + ${CC-cc} $dummy.c -o $dummy > /dev/null 2>&1 + if test "$?" = 0; then + GLIBC_VER=`./$dummy` + AC_MSG_RESULT([$GLIBC_VER]) + ac_cv_glibc_ver=$GLIBC_VER + else + AC_MSG_WARN([cannot determine GNU C library minor version number]) + fi + rm -f $dummy $dummy.c + ) + GLIBC_VER="-$ac_cv_glibc_ver" + AC_SUBST(GLIBC_VER) +]) + +AC_DEFUN(rc_LIBSTDCPP_VER, + [AC_MSG_CHECKING([libstdc++ version]) + dummy=if$$ + cat <<_LIBSTDCPP_>$dummy.cc +#include +#include +#include +int main(int argc, char **argv) { exit(0); } +_LIBSTDCPP_ + ${CXX-c++} $dummy.cc -o $dummy > /dev/null 2>&1 + + if test "$?" = 0; then + soname=`objdump -p ./$dummy |grep NEEDED|grep libstd` + LIBSTDCPP_VER=`echo $soname | sed -e 's/.*NEEDED.*libstdc++\(-libc.*\(-.*\)\)\?.so.\(.*\)/\3\2/'` + fi + rm -f $dummy $dummy.cc + + if test -z "$LIBSTDCPP_VER"; then + AC_MSG_WARN([cannot determine standard C++ library version number]) + else + AC_MSG_RESULT([$LIBSTDCPP_VER]) + LIBSTDCPP_VER="-$LIBSTDCPP_VER" + fi + AC_SUBST(LIBSTDCPP_VER) +]) + +AC_DEFUN(ah_GCC3DEP,[ + AC_MSG_CHECKING(if $CXX -MD works) + touch gcc3dep.cc + ${CXX-c++} -MD -o gcc3dep_test.o -c gcc3dep.cc + rm -f gcc3dep.cc gcc3dep_test.o + if test -e gcc3dep.d; then + rm -f gcc3dep.d + GCC_MD=input + GCC3DEP= + elif test -e gcc3dep_test.d; then + rm -f gcc3dep_test.d + GCC_MD=output + GCC3DEP=yes + else + AC_MSG_ERROR(no) + fi + AC_MSG_RESULT([yes, for $GCC_MD]) + AC_SUBST(GCC3DEP) +])