Annotation of embedaddon/php/TSRM/threads.m4, revision 1.1.1.2

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.2 ! 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>