0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Begin pthreads checking.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# First, decide whether to use multithreading or not.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Enable multithreading by default on systems where it is known
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt# to work well, and where debugging of multithreaded programs
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# is supported.
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark AndrewsAC_MSG_CHECKING(whether to build with thread support)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt[*-solaris2.[0-6]])
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # Thread signals are broken on Solaris 2.6; they are sometimes
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # delivered to the wrong thread.
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt*-hp-hpux10*)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt*-hp-hpux11*)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt*-sco-sysv*uw*|*-*-sysv*UnixWare*)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt*-*-sysv*OpenUNIX*)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt[*-netbsd[1234].*])
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # NetBSD earlier than NetBSD 5.0 has poor pthreads.
2637d30fbd235fe98145f4312b10cc41a13bf7dcJeremy C. Reed # Don't use it by default.
2637d30fbd235fe98145f4312b10cc41a13bf7dcJeremy C. Reed use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # OpenBSD users have reported that named dumps core on
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # startup when built with threads.
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt[*-freebsd[1234567].*])
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # Threads are broken at least up to FreeBSD 4.11.
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # FreeBSD 5, 6 and 7 we have never officially supported threads
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt[*-bsdi[234]*])
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # Thread signals do not work reliably on some versions of BSD/OS.
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt*-darwin[[123456789]].*)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=false ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt use_threads=true ;;
2b8bed6681d1541474f022586cbe728dfce36880Evan HuntAC_ARG_ENABLE(threads,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt [ --enable-threads enable multithreading])
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Huntcase "$enable_threads" in
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Hunt use_threads=true
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Hunt use_threads=false
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Hunt # Use system-dependent default
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Hunt AC_MSG_ERROR([--enable-threads takes yes or no])
3e7aa395774dfb23fe36a30a70b13624487d37b8Evan Huntif $use_threads
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt AC_MSG_RESULT(yes)
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_RESULT(no)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntif $use_threads
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # Search for / configure pthreads in a system-dependent fashion.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt case "$host" in
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # We don't want to set -lpthread as that break
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # the ability to choose threads library at final
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt # link time and is not valid for all architectures.
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt if test "X$GCC" = "Xyes"; then
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt saved_cc="$CC"
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt CC="$CC -pthread"
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_CHECKING(for gcc -pthread support);
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_TRY_LINK([#include <pthread.h>],
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt [printf("%x\n", pthread_create);],
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt PTHREAD="yes"
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_RESULT(yes),
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_RESULT(no))
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt CC="$saved_cc"
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt if test "X$PTHREAD" != "Xyes"; then
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(pthread, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(thr, thread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(c_r, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(c, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_ERROR("could not find thread libraries")))))
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(pthread, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(pthread, __pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(pthread, __pthread_create_system,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(c_r, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_CHECK_LIB(c, pthread_create,,
2b8bed6681d1541474f022586cbe728dfce36880Evan Hunt AC_MSG_ERROR("could not find thread libraries"))))))