From: Jonathan Stowe Date: Wed, 7 Feb 2007 11:56:17 +0000 (+0000) Subject: libdb may require pthread X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5d3df70f5debb91e49b4e0e6c1dec152e98e3220;p=p5sagit%2Fp5-mst-13.2.git libdb may require pthread Message-Id: <1170849377.13207.14.camel@coriolanus.gellyfish.com> p4raw-id: //depot/perl@30155 --- diff --git a/hints/linux.sh b/hints/linux.sh index 2415136..bd6afd2 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @@ -311,9 +311,12 @@ cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) ccflags="-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS $ccflags" - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` - shift - libswanted="$*" + if echo $libswanted | grep -v pthread >/dev/null + then + set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` + shift + libswanted="$*" + fi # Somehow at least in Debian 2.2 these manage to escape # the #define forest of and so that @@ -372,3 +375,37 @@ case "$cc" in d_dlerror='define' ;; esac + +# Under some circumstances libdb can get built in such a way as to +# need pthread explicitly linked. + +libdb_needs_pthread="N" + +if echo " $libswanted " | grep -v " pthread " >/dev/null +then + if echo " $libswanted " | grep " db " >/dev/null + then + for DBDIR in $glibpth + do + DBLIB="$DBDIR/libdb.so" + if [ -f $DBLIB ] + then + if nm -u $DBLIB | grep pthread >/dev/null + then + if ldd $DBLIB | grep pthread >/dev/null + then + libdb_needs_pthread="N" + else + libdb_needs_pthread="Y" + fi + fi + fi + done + fi +fi + +case "$libdb_needs_pthread" in + "Y") + libswanted="$libswanted pthread" + ;; +esac