summaryrefslogtreecommitdiff
path: root/usr.sbin/bind/config.threads.in
blob: c1c113b937267f9341d0e5c1d12e4556cc78f5d4 (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#
# 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 <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