Blame config.threads.in

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