Annotation of embedaddon/php/TSRM/threads.m4, revision 1.1.1.1.2.1
1.1 misho 1: dnl Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved.
2: dnl
3: dnl Redistribution and use in source and binary forms, with or without
4: dnl modification, are permitted provided that the following conditions
5: dnl are met:
6: dnl
7: dnl 1. Redistributions of source code must retain the above copyright
8: dnl notice, this list of conditions and the following disclaimer.
9: dnl
10: dnl 2. Redistributions in binary form must reproduce the above copyright
11: dnl notice, this list of conditions and the following disclaimer in
12: dnl the documentation and/or other materials provided with the
13: dnl distribution.
14: dnl
15: dnl THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY
16: dnl EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17: dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18: dnl PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SASCHA SCHUMANN OR
19: dnl HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20: dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21: dnl NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22: dnl LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23: dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24: dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25: dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
26: dnl OF THE POSSIBILITY OF SUCH DAMAGE.
27:
28: dnl
29: dnl PTHREADS_FLAGS
30: dnl
31: dnl Set some magic defines to achieve POSIX threads conformance
32: dnl
33: AC_DEFUN([PTHREADS_FLAGS],[
34: if test -z "$host_alias" && test -n "$host"; then
35: host_alias=$host
36: fi
37: if test -z "$host_alias"; then
38: AC_MSG_ERROR(host_alias is not set. Make sure to run config.guess)
39: fi
40: case $host_alias in
41: *solaris*)
42: PTHREAD_FLAGS="-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT";;
43: *freebsd*)
44: PTHREAD_FLAGS="-D_REENTRANT -D_THREAD_SAFE";;
45: *linux*)
46: PTHREAD_FLAGS=-D_REENTRANT;;
47: *aix*)
48: PTHREAD_FLAGS=-D_THREAD_SAFE;;
49: *irix*)
50: PTHREAD_FLAGS=-D_POSIX_THREAD_SAFE_FUNCTIONS;;
51: *hpux*)
52: PTHREAD_FLAGS=-D_REENTRANT;;
53: *sco*)
54: PTHREAD_FLAGS=-D_REENTRANT;;
55: dnl Solves sigwait() problem, creates problems with u_long etc.
56: dnl PTHREAD_FLAGS="-D_REENTRANT -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199506 -D_XOPEN_SOURCE_EXTENDED=1";;
57: esac
58:
59: if test -n "$PTHREAD_FLAGS"; then
60: CPPFLAGS="$CPPFLAGS $PTHREAD_FLAGS"
61: fi
62: ])dnl
63: dnl
64: dnl PTHREADS_CHECK_COMPILE
65: dnl
66: dnl Check whether the current setup can use POSIX threads calls
67: dnl
68: AC_DEFUN([PTHREADS_CHECK_COMPILE], [
69: AC_TRY_RUN( [
70: #include <pthread.h>
71: #include <stddef.h>
72:
73: void *thread_routine(void *data) {
74: return data;
75: }
76:
77: int main() {
78: pthread_t thd;
79: pthread_mutexattr_t mattr;
80: int data = 1;
81: pthread_mutexattr_init(&mattr);
1.1.1.1.2.1! misho 82: return pthread_create(&thd, NULL, thread_routine, &data);
1.1 misho 83: } ], [
84: pthreads_working=yes
85: ], [
86: pthreads_working=no
87: ], [
88: dnl For cross compiling running this test is of no use. NetWare supports pthreads
89: pthreads_working=no
90: case $host_alias in
91: *netware*)
92: pthreads_working=yes
93: esac
94: ]
95: ) ] )dnl
96: dnl
97: dnl PTHREADS_CHECK()
98: dnl
99: dnl Try to find a way to enable POSIX threads
100: dnl
101: dnl Magic flags
102: dnl -kthread gcc (FreeBSD)
103: dnl -Kthread UDK cc (UnixWare)
104: dnl -mt WorkShop cc (Solaris)
105: dnl -mthreads gcc (AIX)
106: dnl -pthread gcc (Linux, FreeBSD, NetBSD, OpenBSD)
107: dnl -pthreads gcc (Solaris)
108: dnl -qthreaded AIX cc V5
109: dnl -threads gcc (HP-UX)
110: dnl
111: AC_DEFUN([PTHREADS_CHECK],[
112:
113: if test "$beos_threads" = "1"; then
114: pthreads_working="yes"
115: ac_cv_pthreads_cflags=""
116: else
117: save_CFLAGS=$CFLAGS
118: save_LIBS=$LIBS
119: PTHREADS_ASSIGN_VARS
120: PTHREADS_CHECK_COMPILE
121: LIBS=$save_LIBS
122: CFLAGS=$save_CFLAGS
123:
124: AC_CACHE_CHECK(for pthreads_cflags,ac_cv_pthreads_cflags,[
125: ac_cv_pthreads_cflags=
126: if test "$pthreads_working" != "yes"; then
127: for flag in -kthread -pthread -pthreads -mthreads -Kthread -threads -mt -qthreaded; do
128: ac_save=$CFLAGS
129: CFLAGS="$CFLAGS $flag"
130: PTHREADS_CHECK_COMPILE
131: CFLAGS=$ac_save
132: if test "$pthreads_working" = "yes"; then
133: ac_cv_pthreads_cflags=$flag
134: break
135: fi
136: done
137: fi
138: fi
139: ])
140:
141: AC_CACHE_CHECK(for pthreads_lib, ac_cv_pthreads_lib,[
142: ac_cv_pthreads_lib=
143: if test "$pthreads_working" != "yes"; then
144: for lib in pthread pthreads c_r; do
145: ac_save=$LIBS
146: LIBS="$LIBS -l$lib"
147: PTHREADS_CHECK_COMPILE
148: LIBS=$ac_save
149: if test "$pthreads_working" = "yes"; then
150: ac_cv_pthreads_lib=$lib
151: break
152: fi
153: done
154: fi
155: ])
156:
157: if test "$pthreads_working" = "yes"; then
158: threads_result="POSIX-Threads found"
159: else
160: threads_result="POSIX-Threads not found"
161: fi
162: ])dnl
163: dnl
164: dnl
165: AC_DEFUN([PTHREADS_ASSIGN_VARS],[
166: if test -n "$ac_cv_pthreads_lib"; then
167: LIBS="$LIBS -l$ac_cv_pthreads_lib"
168: fi
169:
170: if test -n "$ac_cv_pthreads_cflags"; then
171: CFLAGS="$CFLAGS $ac_cv_pthreads_cflags"
172: fi
173: ])dnl
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>