summaryrefslogtreecommitdiff
path: root/net/freeradius2/files/patch-pthread
blob: 8ccf0b6362a2e71d74b5953713d04206ec1eb838 (plain) (blame)
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
--- configure.in	Tue May 15 13:48:04 2007
+++ configure.in	Fri Jul 27 18:43:56 2007
@@ -475,14 +475,25 @@
 dnl # On Some systems, we need extra pre-processor flags, to get them to
 dnl # to do the threading properly.
 dnl # 
-  AC_CHECK_LIB(pthread, pthread_create,
-		[ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
-                  LIBS="$LIBS -lpthread" ],
-		AC_CHECK_LIB(c_r, pthread_create,
-			    [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
-			    [ WITH_THREADS="no" ]
-			    )
-		)
+dnl # On FreeBSD, check the pthread_create function with -pthread in $CFLAGS
+dnl # but WITHOUT -lpthread (see FreeBSD Porter's Handbook, section 12.12
+dnl # at http://tinyurl.com/34cya8 )
+  case "$host" in
+  *-freebsd*)
+    CFLAGS="$CFLAGS -pthread"
+    AC_CHECK_FUNC(pthread_create, , [ WITH_THREADS="no" ])
+  ;;
+  *)
+    AC_CHECK_LIB(pthread, pthread_create,
+		  [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
+                    LIBS="$LIBS -lpthread" ],
+		  AC_CHECK_LIB(c_r, pthread_create,
+			      [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
+			      [ WITH_THREADS="no" ]
+			      )
+		  )
+  ;;
+  esac
 fi
 
 dnl # 
--- src/modules/rlm_ldap/configure.in	Fri Jul 27 17:51:33 2007
+++ src/modules/rlm_ldap/configure.in	Fri Jul 27 18:10:51 2007
@@ -77,14 +77,27 @@
 
 	dnl pthread stuff is usually in -lpthread
 	dnl or in -lc_r, on *BSD
+	dnl FreeBSD uses -pthread
 	if test "x$rlm_ldap_with_threads" = "xyes"; then
-	    AC_CHECK_LIB(pthread, pthread_create,
-			 [ LIBS="-lpthread $LIBS" ],
-			 AC_CHECK_LIB(c_r, pthread_create,
-				      [ LIBS="-lc_r $LIBS" ],
-				      [ rlm_ldap_with_threads="no" ]
-				      )
-			 )
+	    case "$host" in
+	    *-freebsd*)
+	        old_CFLAGS=$CFLAGS
+	        CFLAGS="$CFLAGS -pthread"
+	        AC_CHECK_FUNC(pthread_create, , [ rlm_ldap_with_threads="no" ])
+	        if test "x$rlm_ldap_with_threads" = "xno"; then
+	            CFLAGS=$old_CFLAGS
+	        fi
+	    ;;
+	    *)
+	        AC_CHECK_LIB(pthread, pthread_create,
+			     [ LIBS="-lpthread $LIBS" ],
+			     AC_CHECK_LIB(c_r, pthread_create,
+				          [ LIBS="-lc_r $LIBS" ],
+				          [ rlm_ldap_with_threads="no" ]
+				          )
+			     )
+	    ;;
+	    esac
 	fi
 
 	dnl Try only "-lldap_r" or "-lldap"
--- src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.in	Fri Nov 25 20:31:54 2005
+++ src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.in	Fri Jul 27 19:11:33 2007
@@ -61,14 +61,27 @@
 
     dnl pthread stuff is usually in -lpthread
     dnl or in -lc_r, on *BSD
+    dnl FreeBSD uses -pthread
     if test "x$mysql_with_threads" = "xyes"; then
-	AC_CHECK_LIB(pthread, pthread_create,
-		     [ LIBS="-lpthread $LIBS" ],
-		     AC_CHECK_LIB(c_r, pthread_create,
-				  [ LIBS="-lc_r $LIBS" ],
-				  [ mysql_with_threads=no ]
-				  )
-		     )
+	case "$host" in
+	*-freebsd*)
+	    old_CFLAGS=$CFLAGS
+	    CFLAGS="$CFLAGS -pthread"
+	    AC_CHECK_FUNC(pthread_create, , [ mysql_with_threads="no" ])
+	    if test "x$mysql_with_threads" = "xno"; then
+	        CFLAGS=$old_CFLAGS
+	    fi
+	;;
+	*)
+	    AC_CHECK_LIB(pthread, pthread_create,
+		         [ LIBS="-lpthread $LIBS" ],
+		         AC_CHECK_LIB(c_r, pthread_create,
+				      [ LIBS="-lc_r $LIBS" ],
+				      [ mysql_with_threads=no ]
+				      )
+		         )
+	;;
+	esac
     fi
 
     if test "x$mysql_with_threads" = "xyes"; then
--- src/modules/rlm_python/configure.in	Thu May 15 15:52:02 2003
+++ src/modules/rlm_python/configure.in	Thu Aug  2 12:43:47 2007
@@ -84,6 +84,44 @@
 		AC_SMART_CHECK_LIB(python${PY_VERSION}, Py_Initialize)
 		LIBS=$old_LIBS
 
+dnl # If that check fails, try it again having identified threading libraries
+dnl # in case libpython is threaded
+
+		if test "x$smart_lib" = "x"; then
+		    AC_MSG_NOTICE([Checking to see if libpython may be threaded.])
+		    dnl pthread stuff is usually in -lpthread
+		    dnl or in -lc_r, on *BSD
+		    dnl FreeBSD uses -pthread
+		    libpython_with_threads="yes"
+		    case "$host" in
+		    *-freebsd*)
+		        old_CFLAGS=$CFLAGS
+		        CFLAGS="$CFLAGS -pthread"
+		        AC_CHECK_FUNC(pthread_create, , [ libpython_with_threads="no" ])
+		        if test "x$libpython_with_threads" = "xno"; then
+		            CFLAGS=$old_CFLAGS
+		        fi
+		    ;;
+		    *)
+		        AC_CHECK_LIB(pthread, pthread_create,
+				     [ LIBS="-lpthread $LIBS" ],
+				     AC_CHECK_LIB(c_r, pthread_create,
+					          [ LIBS="-lc_r $LIBS" ],
+					          [ libpython_with_threads="no" ]
+					          )
+				     )
+		    ;;
+		    esac
+
+		    if test "x$libpython_with_threads" = "xyes"; then
+		        old_LIBS=$LIBS
+		        LIBS="$LIBS $PY_LIB_LOC $PY_EXTRA_LIBS -lm"
+		        smart_try_dir=$PY_LIB_DIR
+		        AC_SMART_CHECK_LIB(python${PY_VERSION}, Py_Initialize)
+		        LIBS=$old_LIBS
+		    fi
+		fi
+
 		eval t=\${ac_cv_lib_${sm_lib_safe}_${sm_func_safe}}
 		if test "x$t" = "xyes"; then
 			python_ldflags="$PY_LIB_LOC $PY_EXTRA_LIBS -lpython${PY_VERSION} -lm"