# # Begin pthreads checking. # # First, decide whether to use multithreading or not. # # Enable multithreading by default on systems where it is known # to work well, and where debugging of multithreaded programs # is supported. # AC_MSG_CHECKING(whether to build with thread support) case $host in *-dec-osf*) use_threads=true ;; [*-solaris2.[0-6]]) # Thread signals are broken on Solaris 2.6; they are sometimes # delivered to the wrong thread. use_threads=false ;; *-solaris*) use_threads=true ;; *-ibm-aix*) use_threads=true ;; *-hp-hpux10*) use_threads=false ;; *-hp-hpux11*) use_threads=true ;; *-sgi-irix*) use_threads=true ;; *-sco-sysv*uw*|*-*-sysv*UnixWare*) # UnixWare use_threads=false ;; *-*-sysv*OpenUNIX*) # UnixWare use_threads=true ;; *-netbsd*) if test -r /usr/lib/libpthread.so ; then use_threads=true else # Socket I/O optimizations introduced in 9.2 expose a # bug in unproven-pthreads; see PR #12650 use_threads=false fi ;; *-openbsd*) # OpenBSD users have reported that named dumps core on # startup when built with threads. use_threads=false ;; *-freebsd*) use_threads=false ;; *-bsdi[234]*) # Thread signals do not work reliably on some versions of BSD/OS. use_threads=false ;; *-bsdi5*) use_threads=true ;; *-linux*) # Threads are disabled on Linux by default because most # Linux kernels produce unusable core dumps from multithreaded # programs, and because of limitations in setuid(). use_threads=false ;; *) use_threads=false ;; esac AC_ARG_ENABLE(threads, [ --enable-threads enable multithreading]) case "$enable_threads" in yes) use_threads=true ;; no) use_threads=false ;; '') # Use system-dependent default ;; *) AC_MSG_ERROR([--enable-threads takes yes or no]) ;; esac if $use_threads then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi if $use_threads then # # Search for / configure pthreads in a system-dependent fashion. # case "$host" in *-netbsd*) # NetBSD has multiple pthreads implementations. The # recommended one to use is "unproven-pthreads". The # older "mit-pthreads" may also work on some NetBSD # versions. The PTL2 thread library does not # currently work with bind9, but can be chosen with # the --with-ptl2 option for those who wish to # experiment with it. CC="gcc" AC_MSG_CHECKING(which NetBSD thread library to use) AC_ARG_WITH(ptl2, [ --with-ptl2 on NetBSD, use the ptl2 thread library (experimental)], use_ptl2="$withval", use_ptl2="no") : ${LOCALBASE:=/usr/pkg} if test "X$use_ptl2" = "Xyes" then AC_MSG_RESULT(PTL2) AC_MSG_WARN( [linking with PTL2 is highly experimental and not expected to work]) CC=ptlgcc else if test -r /usr/lib/libpthread.so then AC_MSG_RESULT(native) LIBS="-lpthread $LIBS" else if test ! -d $LOCALBASE/pthreads then AC_MSG_RESULT(none) AC_MSG_ERROR("could not find thread libraries") fi if $use_threads then AC_MSG_RESULT(mit-pthreads/unproven-pthreads) pkg="$LOCALBASE/pthreads" lib1="-L$pkg/lib -Wl,-R$pkg/lib" lib2="-lpthread -lm -lgcc -lpthread" LIBS="$lib1 $lib2 $LIBS" CPPFLAGS="$CPPFLAGS -I$pkg/include" STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include" fi fi fi ;; *-freebsd*) # We don't want to set -lpthread as that break # the ability to choose threads library at final # link time and is not valid for all architectures. PTHREAD= if test "X$GCC" = "Xyes"; then saved_cc="$CC" CC="$CC -pthread" AC_MSG_CHECKING(for gcc -pthread support); AC_TRY_LINK([#include ], [printf("%x\n", pthread_create);], PTHREAD="yes" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CC="$saved_cc" fi if test "X$PTHREAD" != "Xyes"; then AC_CHECK_LIB(pthread, pthread_create,, AC_CHECK_LIB(thr, thread_create,, AC_CHECK_LIB(c_r, pthread_create,, AC_CHECK_LIB(c, pthread_create,, AC_MSG_ERROR("could not find thread libraries"))))) fi ;; *) AC_CHECK_LIB(pthread, pthread_create,, AC_CHECK_LIB(pthread, __pthread_create,, AC_CHECK_LIB(pthread, __pthread_create_system,, AC_CHECK_LIB(c_r, pthread_create,, AC_CHECK_LIB(c, pthread_create,, AC_MSG_ERROR("could not find thread libraries")))))) ;; esac fi