Annotation of embedaddon/php/TSRM/threads.m4, revision 1.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);
! 82: return 0;
! 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>