summaryrefslogtreecommitdiff
path: root/config.threads.in
blob: 3f1c936fd5214acd7d9c87468e1264bd75861b2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#
# 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[1234].*])
	# NetBSD earlier than NetBSD 5.0 has poor pthreads.
	#  Don't use it by default.
	use_threads=false ;;
*-netbsd*)
	use_threads=true ;;
*-openbsd*)
	# OpenBSD users have reported that named dumps core on
	# startup when built with threads.
	use_threads=false ;;
[*-freebsd[1234567].*])
	# Threads are broken at least up to FreeBSD 4.11.
	# FreeBSD 5, 6 and 7 we have never officially supported threads
	# on. YMMV
	use_threads=false ;;
*-freebsd*)
	use_threads=true ;;
[*-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 ;;	
*-darwin[[123456789]].*)
	use_threads=false ;;
*-darwin*.*)
	use_threads=true ;;
*)
	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
		*-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 <pthread.h>],
					    [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