Update the configure script as well.
[dahdi/tools.git] / acinclude.m4
1 # Various support functions for configure.ac in asterisk
2 #
3
4 # Helper function to check for gcc attributes.
5 # AST_GCC_ATTRIBUTE([attribute name])
6
7 AC_DEFUN([AST_GCC_ATTRIBUTE],
8 [
9 AC_MSG_CHECKING(for compiler 'attribute $1' support)
10 saved_CFLAGS="$CFLAGS"
11 CFLAGS="$CFLAGS -Werror"
12 AC_COMPILE_IFELSE(
13         AC_LANG_PROGRAM([static void __attribute__(($1)) *test(void *muffin, ...) {}],
14                         []),
15         AC_MSG_RESULT(yes)
16         AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
17         AC_MSG_RESULT(no))
18 ]
19 CFLAGS="$saved_CFLAGS"
20 )
21
22 # Helper function to setup variables for a package.
23 # $1 -> the package name. Used in configure.ac and also as a prefix
24 #       for the variables ($1_DIR, $1_INCLUDE, $1_LIB) in makeopts
25 # $3 -> option name, used in --with-$3 or --without-$3 when calling configure.
26 # $2 and $4 are just text describing the package (short and long form)
27
28 # AST_EXT_LIB_SETUP([package], [short description], [configure option name], [long description])
29
30 AC_DEFUN([AST_EXT_LIB_SETUP],
31 [
32     $1_DESCRIP="$2"
33     $1_OPTION="$3"
34     AC_ARG_WITH([$3], AC_HELP_STRING([--with-$3=PATH],[use $2 files in PATH $4]),
35     [
36         case ${withval} in
37         n|no)
38         USE_$1=no
39         ;;
40         y|ye|yes)
41         ac_mandatory_list="${ac_mandatory_list} $1"
42         ;;
43         *)
44         $1_DIR="${withval}"
45         ac_mandatory_list="${ac_mandatory_list} $1"
46         ;;
47         esac
48     ])
49     PBX_$1=0
50     AC_SUBST([$1_LIB])
51     AC_SUBST([$1_INCLUDE])
52     AC_SUBST([$1_DIR])
53     AC_SUBST([PBX_$1])
54 ])
55
56 # Check whether any of the mandatory modules are not present, and
57 # print error messages in case. The mandatory list is built using
58 # --with-* arguments when invoking configure.
59
60 AC_DEFUN([AST_CHECK_MANDATORY],
61 [
62         AC_MSG_CHECKING([for mandatory modules: ${ac_mandatory_list}])
63         err=0;
64         for i in ${ac_mandatory_list}; do
65                 eval "a=\${PBX_$i}"
66                 if test "x${a}" = "x1" ; then continue; fi
67                 if test ${err} = "0" ; then AC_MSG_RESULT(fail) ; fi
68                 AC_MSG_RESULT()
69                 eval "a=\${${i}_OPTION}"
70                 AC_MSG_NOTICE([***])
71                 AC_MSG_NOTICE([*** The $i installation appears to be missing or broken.])
72                 AC_MSG_NOTICE([*** Either correct the installation, or run configure])
73                 AC_MSG_NOTICE([*** including --without-${a}.])
74                 err=1
75         done
76         if test $err = 1 ; then exit 1; fi
77         AC_MSG_RESULT(ok)
78 ])
79
80 # The next three functions check for the availability of a given package.
81 # AST_C_DEFINE_CHECK looks for the presence of a #define in a header file,
82 # AST_C_COMPILE_CHECK can be used for testing for various items in header files,
83 # AST_EXT_LIB_CHECK looks for a symbol in a given library, or at least
84 #       for the presence of a header file.
85 # AST_EXT_TOOL_CHECK looks for a symbol in using $1-config to determine CFLAGS and LIBS
86 #
87 # They are only run if PBX_$1 != 1 (where $1 is the package),
88 # so you can call them multiple times and stop at the first matching one.
89 # On success, they both set PBX_$1 = 1, set $1_INCLUDE and $1_LIB as applicable,
90 # and also #define HAVE_$1 1 and #define HAVE_$1_VERSION ${last_argument}
91 # in autoconfig.h so you can tell which test succeeded.
92 # They should be called after AST_EXT_LIB_SETUP($1, ...)
93
94 # Check if a given macro is defined in a certain header.
95
96 # AST_C_DEFINE_CHECK([package], [macro name], [header file], [version])
97 AC_DEFUN([AST_C_DEFINE_CHECK],
98 [
99     if test "x${PBX_$1}" != "x1"; then
100         AC_MSG_CHECKING([for $2 in $3])
101         saved_cppflags="${CPPFLAGS}"
102         if test "x${$1_DIR}" != "x"; then
103             $1_INCLUDE="-I${$1_DIR}/include"
104         fi
105         CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
106
107         AC_COMPILE_IFELSE(
108             [ AC_LANG_PROGRAM( [#include <$3>],
109                                [#if defined($2)
110                                 int foo = 0;
111                                 #else
112                                 int foo = bar;
113                                 #endif
114                                 0
115                                ])],
116             [   AC_MSG_RESULT(yes)
117                 PBX_$1=1
118                 AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 headers.])
119                 AC_DEFINE([HAVE_$1_VERSION], $4, [Define $1 headers version])
120             ],
121             [   AC_MSG_RESULT(no) ] 
122         )
123         CPPFLAGS="${saved_cppflags}"
124     fi
125     AC_SUBST(PBX_$1)
126 ])
127
128
129 # Check if a given expression will compile using a certain header.
130
131 # AST_C_COMPILE_CHECK([package], [expression], [header file], [version])
132 AC_DEFUN([AST_C_COMPILE_CHECK],
133 [
134     if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
135         AC_MSG_CHECKING([if "$2" compiles using $3])
136         saved_cppflags="${CPPFLAGS}"
137         if test "x${$1_DIR}" != "x"; then
138             $1_INCLUDE="-I${$1_DIR}/include"
139         fi
140         CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
141
142         AC_COMPILE_IFELSE(
143             [ AC_LANG_PROGRAM( [#include <$3>],
144                                [ $2; ]
145                                )],
146             [   AC_MSG_RESULT(yes)
147                 PBX_$1=1
148                 AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 headers.])
149                 AC_DEFINE([HAVE_$1_VERSION], $4, [Define $1 headers version])
150             ],
151             [       AC_MSG_RESULT(no) ] 
152         )
153         CPPFLAGS="${saved_cppflags}"
154     fi
155 ])
156
157
158 # Check for existence of a given package ($1), either looking up a function
159 # in a library, or, if no function is supplied, only check for the
160 # existence of the header files.
161
162 # AST_EXT_LIB_CHECK([package], [library], [function], [header],
163 #        [extra libs], [extra cflags], [version])
164 AC_DEFUN([AST_EXT_LIB_CHECK],
165 [
166 if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
167    pbxlibdir=""
168    # if --with-$1=DIR has been specified, use it.
169    if test "x${$1_DIR}" != "x"; then
170       if test -d ${$1_DIR}/lib; then
171          pbxlibdir="-L${$1_DIR}/lib"
172       else
173          pbxlibdir="-L${$1_DIR}"
174       fi
175    fi
176    pbxfuncname="$3"
177    if test "x${pbxfuncname}" = "x" ; then   # empty lib, assume only headers
178       AST_$1_FOUND=yes
179    else
180       AC_CHECK_LIB([$2], [${pbxfuncname}], [AST_$1_FOUND=yes], [AST_$1_FOUND=no], ${pbxlibdir} $5)
181    fi
182
183    # now check for the header.
184    if test "${AST_$1_FOUND}" = "yes"; then
185       $1_LIB="${pbxlibdir} -l$2 $5"
186       # if --with-$1=DIR has been specified, use it.
187       if test "x${$1_DIR}" != "x"; then
188          $1_INCLUDE="-I${$1_DIR}/include"
189       fi
190       $1_INCLUDE="${$1_INCLUDE} $6"
191       if test "x$4" = "x" ; then        # no header, assume found
192          $1_HEADER_FOUND="1"
193       else                              # check for the header
194          saved_cppflags="${CPPFLAGS}"
195          CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE} $6"
196          AC_CHECK_HEADER([$4], [$1_HEADER_FOUND=1], [$1_HEADER_FOUND=0])
197          CPPFLAGS="${saved_cppflags}"
198       fi
199       if test "x${$1_HEADER_FOUND}" = "x0" ; then
200          $1_LIB=""
201          $1_INCLUDE=""
202       else
203          if test "x${pbxfuncname}" = "x" ; then         # only checking headers -> no library
204             $1_LIB=""
205          fi
206          PBX_$1=1
207          # XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
208          AC_DEFINE_UNQUOTED([HAVE_$1], 1, [Define this to indicate the ${$1_DESCRIP} library])
209          AC_DEFINE_UNQUOTED([HAVE_$1_VERSION], [$7], [Define to indicate the ${$1_DESCRIP} library version])
210       fi
211    fi
212 fi
213 ])
214
215
216 # Check for a package using $2-config. Similar to AST_EXT_LIB_CHECK,
217 # but use $2-config to determine cflags and libraries to use.
218 # $3 and $4 can be used to replace --cflags and --libs in the request
219
220 # AST_EXT_TOOL_CHECK([package], [tool name], [--cflags], [--libs], [includes], [expression])
221 AC_DEFUN([AST_EXT_TOOL_CHECK],
222 [
223     if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
224         PBX_$1=0
225         AC_CHECK_TOOL(CONFIG_$1, $2-config, No)
226         if test ! "x${CONFIG_$1}" = xNo; then
227             if test x"$3" = x ; then A=--cflags ; else A="$3" ; fi
228             $1_INCLUDE=$(${CONFIG_$1} $A)
229             if test x"$4" = x ; then A=--libs ; else A="$4" ; fi
230             $1_LIB=$(${CONFIG_$1} $A)
231             if test x"$5" != x ; then
232                 saved_cppflags="${CPPFLAGS}"
233                 if test "x${$1_DIR}" != "x"; then
234                     $1_INCLUDE="-I${$1_DIR}/include"
235                 fi
236                 CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
237
238                 saved_ldflags="${LDFLAGS}"
239                 LDFLAGS="${$1_LIB}"
240
241                 AC_LINK_IFELSE(
242                     [ AC_LANG_PROGRAM( [ $5 ],
243                                        [ $6; ]
244                                        )],
245                     [   PBX_$1=1
246                         AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 headers.])
247                     ],
248                     []
249                 )
250                 CPPFLAGS="${saved_cppflags}"
251                 LDFLAGS="${saved_ldflags}"
252             else
253                 PBX_$1=1
254                 AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 libraries.])
255             fi
256         fi
257     fi
258 ])
259
260 AC_DEFUN([AST_CHECK_GNU_MAKE], [AC_CACHE_CHECK([for GNU make], [ac_cv_GNU_MAKE],
261    ac_cv_GNU_MAKE='Not Found' ;
262    ac_cv_GNU_MAKE_VERSION_MAJOR=0 ;
263    ac_cv_GNU_MAKE_VERSION_MINOR=0 ;
264    for a in make gmake gnumake ; do
265       if test -z "$a" ; then continue ; fi ;
266       if ( sh -c "$a --version" 2> /dev/null | grep GNU  2>&1 > /dev/null ) ;  then
267          ac_cv_GNU_MAKE=$a ;
268          ac_cv_GNU_MAKE_VERSION_MAJOR=`$ac_cv_GNU_MAKE --version | grep "GNU Make" | cut -f3 -d' ' | cut -f1 -d'.'`
269          ac_cv_GNU_MAKE_VERSION_MINOR=`$ac_cv_GNU_MAKE --version | grep "GNU Make" | cut -f2 -d'.' | cut -c1-2`
270          break;
271       fi
272    done ;
273 ) ;
274 if test  "x$ac_cv_GNU_MAKE" = "xNot Found"  ; then
275    AC_MSG_ERROR( *** Please install GNU make.  It is required to build Asterisk!)
276    exit 1
277 fi
278 AC_SUBST([GNU_MAKE], [$ac_cv_GNU_MAKE])
279 ])
280
281 AC_DEFUN(
282 [AST_CHECK_PWLIB], [
283 PWLIB_INCDIR=
284 PWLIB_LIBDIR=
285 AC_LANG_PUSH([C++])
286 if test "${PWLIBDIR:-unset}" != "unset" ; then
287   AC_CHECK_HEADER(${PWLIBDIR}/version.h, HAS_PWLIB=1, )
288 fi
289 if test "${HAS_PWLIB:-unset}" = "unset" ; then
290   if test "${OPENH323DIR:-unset}" != "unset"; then
291     AC_CHECK_HEADER(${OPENH323DIR}/../pwlib/version.h, HAS_PWLIB=1, )
292   fi
293   if test "${HAS_PWLIB:-unset}" != "unset" ; then
294     PWLIBDIR="${OPENH323DIR}/../pwlib"
295   else
296     AC_CHECK_HEADER(${HOME}/pwlib/include/ptlib.h, HAS_PWLIB=1, )
297     if test "${HAS_PWLIB:-unset}" != "unset" ; then
298       PWLIBDIR="${HOME}/pwlib"
299     else
300       AC_CHECK_HEADER(/usr/local/include/ptlib.h, HAS_PWLIB=1, )
301       if test "${HAS_PWLIB:-unset}" != "unset" ; then
302         AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/local/bin)
303         if test "${PTLIB_CONFIG:-unset}" = "unset" ; then
304           AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/local/share/pwlib/make)
305         fi
306         PWLIB_INCDIR="/usr/local/include"
307         PWLIB_LIBDIR=`${PTLIB_CONFIG} --pwlibdir`
308         if test "${PWLIB_LIBDIR:-unset}" = "unset"; then
309           if test "x$LIB64" != "x"; then
310             PWLIB_LIBDIR="/usr/local/lib64"
311           else
312             PWLIB_LIBDIR="/usr/local/lib"
313           fi
314         fi
315         PWLIB_LIB=`${PTLIB_CONFIG} --ldflags --libs`
316         PWLIB_LIB="-L${PWLIB_LIBDIR} `echo ${PWLIB_LIB}`"
317       else
318         AC_CHECK_HEADER(/usr/include/ptlib.h, HAS_PWLIB=1, )
319         if test "${HAS_PWLIB:-unset}" != "unset" ; then
320           AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/share/pwlib/make)
321           PWLIB_INCDIR="/usr/include"
322           PWLIB_LIBDIR=`${PTLIB_CONFIG} --pwlibdir`
323           if test "${PWLIB_LIBDIR:-unset}" = "unset"; then
324             if test "x$LIB64" != "x"; then
325               PWLIB_LIBDIR="/usr/lib64"
326             else
327               PWLIB_LIBDIR="/usr/lib"
328             fi
329           fi
330           PWLIB_LIB=`${PTLIB_CONFIG} --ldflags --libs`
331           PWLIB_LIB="-L${PWLIB_LIBDIR} `echo ${PWLIB_LIB}`"
332         fi
333       fi
334     fi
335   fi
336 fi
337
338 #if test "${HAS_PWLIB:-unset}" = "unset" ; then
339 #  echo "Cannot find pwlib - please install or set PWLIBDIR and try again"
340 #  exit
341 #fi
342
343 if test "${HAS_PWLIB:-unset}" != "unset" ; then
344   if test "${PWLIBDIR:-unset}" = "unset" ; then
345     if test "${PTLIB_CONFIG:-unset}" != "unset" ; then
346       PWLIBDIR=`$PTLIB_CONFIG --prefix`
347     else
348       echo "Cannot find ptlib-config - please install and try again"
349       exit
350     fi
351   fi
352
353   if test "x$PWLIBDIR" = "x/usr" -o "x$PWLIBDIR" = "x/usr/"; then
354     PWLIBDIR="/usr/share/pwlib"
355     PWLIB_INCDIR="/usr/include"
356     if test "x$LIB64" != "x"; then
357       PWLIB_LIBDIR="/usr/lib64"
358     else
359       PWLIB_LIBDIR="/usr/lib"
360     fi
361   fi
362   if test "x$PWLIBDIR" = "x/usr/local" -o "x$PWLIBDIR" = "x/usr/"; then
363     PWLIBDIR="/usr/local/share/pwlib"
364     PWLIB_INCDIR="/usr/local/include"
365     if test "x$LIB64" != "x"; then
366       PWLIB_LIBDIR="/usr/local/lib64"
367     else
368       PWLIB_LIBDIR="/usr/local/lib"
369     fi
370   fi
371
372   if test "${PWLIB_INCDIR:-unset}" = "unset"; then
373     PWLIB_INCDIR="${PWLIBDIR}/include"
374   fi
375   if test "${PWLIB_LIBDIR:-unset}" = "unset"; then
376     PWLIB_LIBDIR="${PWLIBDIR}/lib"
377   fi
378
379   AC_SUBST([PWLIBDIR])
380   AC_SUBST([PWLIB_INCDIR])
381   AC_SUBST([PWLIB_LIBDIR])
382 fi
383   AC_LANG_POP([C++])
384 ])
385
386
387 AC_DEFUN(
388 [AST_CHECK_OPENH323_PLATFORM], [
389 PWLIB_OSTYPE=
390 case "$host_os" in
391   linux*)          PWLIB_OSTYPE=linux ;
392                 ;;
393   freebsd* )       PWLIB_OSTYPE=FreeBSD ;
394                 ;;
395   openbsd* )       PWLIB_OSTYPE=OpenBSD ;
396                                    ENDLDLIBS="-lossaudio" ;
397                 ;;
398   netbsd* )        PWLIB_OSTYPE=NetBSD ;
399                                    ENDLDLIBS="-lossaudio" ;
400                 ;;
401   solaris* | sunos* ) PWLIB_OSTYPE=solaris ;
402                 ;;
403   darwin* )            PWLIB_OSTYPE=Darwin ;
404                 ;;
405   beos*)           PWLIB_OSTYPE=beos ;
406                    STDCCFLAGS="$STDCCFLAGS -D__BEOS__"
407                 ;;
408   cygwin*)         PWLIB_OSTYPE=cygwin ;
409                 ;;
410   mingw*)              PWLIB_OSTYPE=mingw ;
411                            STDCCFLAGS="$STDCCFLAGS -mms-bitfields" ;
412                            ENDLDLIBS="-lwinmm -lwsock32 -lsnmpapi -lmpr -lcomdlg32 -lgdi32 -lavicap32" ;
413                 ;;
414   * )                  PWLIB_OSTYPE="$host_os" ;
415                            AC_MSG_WARN("OS $PWLIB_OSTYPE not recognized - proceed with caution!") ;
416                 ;;
417 esac
418
419 PWLIB_MACHTYPE=
420 case "$host_cpu" in
421    x86 | i686 | i586 | i486 | i386 ) PWLIB_MACHTYPE=x86
422                    ;;
423
424    x86_64)         PWLIB_MACHTYPE=x86_64 ;
425                    P_64BIT=1 ;
426                    LIB64=1 ;
427                    ;;
428
429    alpha | alphaev56 | alphaev6 | alphaev67 | alphaev7) PWLIB_MACHTYPE=alpha ;
430                    P_64BIT=1 ;
431                    ;;
432
433    sparc )         PWLIB_MACHTYPE=sparc ;
434                    ;;
435
436    powerpc )       PWLIB_MACHTYPE=ppc ;
437                    ;;
438
439    ppc )           PWLIB_MACHTYPE=ppc ;
440                    ;;
441
442    powerpc64 )     PWLIB_MACHTYPE=ppc64 ;
443                    P_64BIT=1 ;
444                    LIB64=1 ;
445                    ;;
446
447    ppc64 )         PWLIB_MACHTYPE=ppc64 ;
448                    P_64BIT=1 ;
449                    LIB64=1 ;
450                    ;;
451
452    ia64)           PWLIB_MACHTYPE=ia64 ;
453                    P_64BIT=1 ;
454                    ;;
455
456    s390x)          PWLIB_MACHTYPE=s390x ;
457                    P_64BIT=1 ;
458                    LIB64=1 ;
459                    ;;
460
461    s390)           PWLIB_MACHTYPE=s390 ;
462                    ;;
463
464    * )             PWLIB_MACHTYPE="$host_cpu";
465                    AC_MSG_WARN("CPU $PWLIB_MACHTYPE not recognized - proceed with caution!") ;;
466 esac
467
468 PWLIB_PLATFORM="${PWLIB_OSTYPE}_${PWLIB_MACHTYPE}"
469
470 AC_SUBST([PWLIB_PLATFORM])
471 ])
472
473
474 AC_DEFUN(
475 [AST_CHECK_OPENH323], [
476 OPENH323_INCDIR=
477 OPENH323_LIBDIR=
478 AC_LANG_PUSH([C++])
479 if test "${OPENH323DIR:-unset}" != "unset" ; then
480   AC_CHECK_HEADER(${OPENH323DIR}/version.h, HAS_OPENH323=1, )
481 fi
482 if test "${HAS_OPENH323:-unset}" = "unset" ; then
483   AC_CHECK_HEADER(${PWLIBDIR}/../openh323/version.h, OPENH323DIR="${PWLIBDIR}/../openh323"; HAS_OPENH323=1, )
484   if test "${HAS_OPENH323:-unset}" != "unset" ; then
485     OPENH323DIR="${PWLIBDIR}/../openh323"
486     saved_cppflags="${CPPFLAGS}"
487     CPPFLAGS="${CPPFLAGS} -I${PWLIB_INCDIR}/openh323 -I${PWLIB_INCDIR}"
488     AC_CHECK_HEADER(${OPENH323DIR}/include/h323.h, , OPENH323_INCDIR="${PWLIB_INCDIR}/openh323"; OPENH323_LIBDIR="${PWLIB_LIBDIR}", [#include <ptlib.h>])
489     CPPFLAGS="${saved_cppflags}"
490   else
491     saved_cppflags="${CPPFLAGS}"
492     CPPFLAGS="${CPPFLAGS} -I${HOME}/openh323/include -I${PWLIB_INCDIR}"
493     AC_CHECK_HEADER(${HOME}/openh323/include/h323.h, HAS_OPENH323=1, )
494     CPPFLAGS="${saved_cppflags}"
495     if test "${HAS_OPENH323:-unset}" != "unset" ; then
496       OPENH323DIR="${HOME}/openh323"
497     else
498       saved_cppflags="${CPPFLAGS}"
499       CPPFLAGS="${CPPFLAGS} -I/usr/local/include/openh323 -I${PWLIB_INCDIR}"
500       AC_CHECK_HEADER(/usr/local/include/openh323/h323.h, HAS_OPENH323=1, )
501       CPPFLAGS="${saved_cppflags}"
502       if test "${HAS_OPENH323:-unset}" != "unset" ; then
503         OPENH323DIR="/usr/local/share/openh323"
504         OPENH323_INCDIR="/usr/local/include/openh323"
505         if test "x$LIB64" != "x"; then
506           OPENH323_LIBDIR="/usr/local/lib64"
507         else
508           OPENH323_LIBDIR="/usr/local/lib"
509         fi
510       else
511         saved_cppflags="${CPPFLAGS}"
512         CPPFLAGS="${CPPFLAGS} -I/usr/include/openh323 -I${PWLIB_INCDIR}"
513         AC_CHECK_HEADER(/usr/include/openh323/h323.h, HAS_OPENH323=1, , [#include <ptlib.h>])
514         CPPFLAGS="${saved_cppflags}"
515         if test "${HAS_OPENH323:-unset}" != "unset" ; then
516           OPENH323DIR="/usr/share/openh323"
517           OPENH323_INCDIR="/usr/include/openh323"
518           if test "x$LIB64" != "x"; then
519             OPENH323_LIBDIR="/usr/lib64"
520           else
521             OPENH323_LIBDIR="/usr/lib"
522           fi
523         fi
524       fi
525     fi
526   fi
527 fi
528
529 if test "${HAS_OPENH323:-unset}" != "unset" ; then
530   if test "${OPENH323_INCDIR:-unset}" = "unset"; then
531     OPENH323_INCDIR="${OPENH323DIR}/include"
532   fi
533   if test "${OPENH323_LIBDIR:-unset}" = "unset"; then
534     OPENH323_LIBDIR="${OPENH323DIR}/lib"
535   fi
536
537   OPENH323_LIBDIR="`cd ${OPENH323_LIBDIR}; pwd`"
538   OPENH323_INCDIR="`cd ${OPENH323_INCDIR}; pwd`"
539   OPENH323DIR="`cd ${OPENH323DIR}; pwd`"
540
541   AC_SUBST([OPENH323DIR])
542   AC_SUBST([OPENH323_INCDIR])
543   AC_SUBST([OPENH323_LIBDIR])
544 fi
545   AC_LANG_POP([C++])
546 ])
547
548
549 AC_DEFUN(
550 [AST_CHECK_PWLIB_VERSION], [
551         if test "${HAS_$2:-unset}" != "unset"; then
552                 $2_VERSION=`grep "$2_VERSION" ${$2_INCDIR}/$3 | cut -f2 -d ' ' | sed -e 's/"//g'`
553                 $2_MAJOR_VERSION=`echo ${$2_VERSION} | cut -f1 -d.`
554                 $2_MINOR_VERSION=`echo ${$2_VERSION} | cut -f2 -d.`
555                 $2_BUILD_NUMBER=`echo ${$2_VERSION} | cut -f3 -d.`
556                 let $2_VER=${$2_MAJOR_VERSION}*10000+${$2_MINOR_VERSION}*100+${$2_BUILD_NUMBER}
557                 let $2_REQ=$4*10000+$5*100+$6
558
559                 AC_MSG_CHECKING(if $1 version ${$2_VERSION} is compatible with chan_h323)
560                 if test ${$2_VER} -lt ${$2_REQ}; then
561                         AC_MSG_RESULT(no)
562                         unset HAS_$2
563                 else
564                         AC_MSG_RESULT(yes)
565                 fi
566         fi
567 ])
568
569
570 AC_DEFUN(
571 [AST_CHECK_PWLIB_BUILD], [
572         if test "${HAS_$2:-unset}" != "unset"; then
573            AC_MSG_CHECKING($1 installation validity)
574
575            saved_cppflags="${CPPFLAGS}"
576            saved_libs="${LIBS}"
577            if test "${$2_LIB:-unset}" != "unset"; then
578               LIBS="${LIBS} ${$2_LIB} $7"
579            else
580               LIBS="${LIBS} -L${$2_LIBDIR} -l${PLATFORM_$2} $7"
581            fi
582            CPPFLAGS="${CPPFLAGS} -I${$2_INCDIR} $6"
583
584            AC_LANG_PUSH([C++])
585
586            AC_LINK_IFELSE(
587                 [AC_LANG_PROGRAM([$4],[$5])],
588                 [       AC_MSG_RESULT(yes) 
589                         ac_cv_lib_$2="yes" 
590                 ],
591                 [       AC_MSG_RESULT(no) 
592                         ac_cv_lib_$2="no" 
593                 ]
594                 )
595
596            AC_LANG_POP([C++])
597
598            LIBS="${saved_libs}"
599            CPPFLAGS="${saved_cppflags}"
600
601            if test "${ac_cv_lib_$2}" = "yes"; then
602               if test "${$2_LIB:-undef}" = "undef"; then
603                  if test "${$2_LIBDIR}" != "" -a "${$2_LIBDIR}" != "/usr/lib"; then
604                     $2_LIB="-L${$2_LIBDIR} -l${PLATFORM_$2}"
605                  else
606                     $2_LIB="-l${PLATFORM_$2}"
607                  fi
608               fi
609               if test "${$2_INCDIR}" != "" -a "${$2_INCDIR}" != "/usr/include"; then
610                  $2_INCLUDE="-I${$2_INCDIR}"
611               fi
612                   PBX_$2=1
613                   AC_DEFINE([HAVE_$2], 1, [$3])
614            fi
615         fi
616 ])
617
618 AC_DEFUN(
619 [AST_CHECK_OPENH323_BUILD], [
620         if test "${HAS_OPENH323:-unset}" != "unset"; then
621                 AC_MSG_CHECKING(OpenH323 build option)
622                 OPENH323_SUFFIX=
623                 prefixes="h323_${PWLIB_PLATFORM}_ h323_ openh323"
624                 for pfx in $prefixes; do
625                         files=`ls -l ${OPENH323_LIBDIR}/lib${pfx}*.so* 2>/dev/null`
626                         libfile=
627                         if test -n "$files"; then
628                                 for f in $files; do
629                                         if test -f $f -a ! -L $f; then
630                                                 libfile=`basename $f`
631                                                 break;
632                                         fi
633                                 done
634                         fi
635                         if test -n "$libfile"; then
636                                 OPENH323_PREFIX=$pfx
637                                 break;
638                         fi
639                 done
640                 if test "${libfile:-unset}" != "unset"; then
641                         OPENH323_SUFFIX=`eval "echo ${libfile} | sed -e 's/lib${OPENH323_PREFIX}\(@<:@^.@:>@*\)\..*/\1/'"`
642                 fi
643                 case "${OPENH323_SUFFIX}" in
644                         n)
645                                 OPENH323_BUILD="notrace";;
646                         r)
647                                 OPENH323_BUILD="opt";;
648                         d)
649                                 OPENH323_BUILD="debug";;
650                         *)
651                                 if test "${OPENH323_PREFIX:-undef}" = "openh323"; then
652                                         notrace=`eval "grep NOTRACE ${OPENH323DIR}/openh323u.mak | grep = | sed -e 's/@<:@A-Z0-9_@:>@*@<:@      @:>@*=@<:@      @:>@*//'"`
653                                         if test "x$notrace" = "x"; then
654                                                 notrace="0"
655                                         fi
656                                         if test "$notrace" -ne 0; then
657                                                 OPENH323_BUILD="notrace"
658                                         else
659                                                 OPENH323_BUILD="opt"
660                                         fi
661                                         OPENH323_LIB="-l${OPENH323_PREFIX}"
662                                 else
663                                         OPENH323_BUILD="notrace"
664                                 fi
665                                 ;;
666                 esac
667                 AC_MSG_RESULT(${OPENH323_BUILD})
668
669                 AC_SUBST([OPENH323_SUFFIX])
670                 AC_SUBST([OPENH323_BUILD])
671         fi
672 ])
673
674
675 # AST_FUNC_FORK
676 # -------------
677 AN_FUNCTION([fork],  [AST_FUNC_FORK])
678 AN_FUNCTION([vfork], [AST_FUNC_FORK])
679 AC_DEFUN([AST_FUNC_FORK],
680 [AC_REQUIRE([AC_TYPE_PID_T])dnl
681 AC_CHECK_HEADERS(vfork.h)
682 AC_CHECK_FUNCS(fork vfork)
683 if test "x$ac_cv_func_fork" = xyes; then
684   _AST_FUNC_FORK
685 else
686   ac_cv_func_fork_works=$ac_cv_func_fork
687 fi
688 if test "x$ac_cv_func_fork_works" = xcross; then
689   case $host in
690     *-*-amigaos* | *-*-msdosdjgpp* | *-*-uclinux* | *-*-linux-uclibc* )
691       # Override, as these systems have only a dummy fork() stub
692       ac_cv_func_fork_works=no
693       ;;
694     *)
695       ac_cv_func_fork_works=yes
696       ;;
697   esac
698   AC_MSG_WARN([result $ac_cv_func_fork_works guessed because of cross compilation])
699 fi
700 ac_cv_func_vfork_works=$ac_cv_func_vfork
701 if test "x$ac_cv_func_vfork" = xyes; then
702   _AC_FUNC_VFORK
703 fi;
704 if test "x$ac_cv_func_fork_works" = xcross; then
705   ac_cv_func_vfork_works=$ac_cv_func_vfork
706   AC_MSG_WARN([result $ac_cv_func_vfork_works guessed because of cross compilation])
707 fi
708
709 if test "x$ac_cv_func_vfork_works" = xyes; then
710   AC_DEFINE(HAVE_WORKING_VFORK, 1, [Define to 1 if `vfork' works.])
711 else
712   AC_DEFINE(vfork, fork, [Define as `fork' if `vfork' does not work.])
713 fi
714 if test "x$ac_cv_func_fork_works" = xyes; then
715   AC_DEFINE(HAVE_WORKING_FORK, 1, [Define to 1 if `fork' works.])
716 fi
717 ])# AST_FUNC_FORK
718
719
720 # _AST_FUNC_FORK
721 # -------------
722 AC_DEFUN([_AST_FUNC_FORK],
723   [AC_CACHE_CHECK(for working fork, ac_cv_func_fork_works,
724     [AC_RUN_IFELSE(
725       [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
726         [
727           /* By Ruediger Kuhlmann. */
728           return fork () < 0;
729         ])],
730       [ac_cv_func_fork_works=yes],
731       [ac_cv_func_fork_works=no],
732       [ac_cv_func_fork_works=cross])])]
733 )# _AST_FUNC_FORK
734
735 # AST_PROG_LD
736 # ----------
737 # find the pathname to the GNU or non-GNU linker
738 AC_DEFUN([AST_PROG_LD],
739 [AC_ARG_WITH([gnu-ld],
740     [AC_HELP_STRING([--with-gnu-ld],
741         [assume the C compiler uses GNU ld @<:@default=no@:>@])],
742     [test "$withval" = no || with_gnu_ld=yes],
743     [with_gnu_ld=no])
744 AC_REQUIRE([AST_PROG_SED])dnl
745 AC_REQUIRE([AC_PROG_CC])dnl
746 AC_REQUIRE([AC_CANONICAL_HOST])dnl
747 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
748 ac_prog=ld
749 if test "$GCC" = yes; then
750   # Check if gcc -print-prog-name=ld gives a path.
751   AC_MSG_CHECKING([for ld used by $CC])
752   case $host in
753   *-*-mingw*)
754     # gcc leaves a trailing carriage return which upsets mingw
755     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
756   *)
757     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
758   esac
759   case $ac_prog in
760     # Accept absolute paths.
761     [[\\/]]* | ?:[[\\/]]*)
762       re_direlt='/[[^/]][[^/]]*/\.\./'
763       # Canonicalize the pathname of ld
764       ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
765       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
766         ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
767       done
768       test -z "$LD" && LD="$ac_prog"
769       ;;
770   "")
771     # If it fails, then pretend we aren't using GCC.
772     ac_prog=ld
773     ;;
774   *)
775     # If it is relative, then search for the first ld in PATH.
776     with_gnu_ld=unknown
777     ;;
778   esac
779 elif test "$with_gnu_ld" = yes; then
780   AC_MSG_CHECKING([for GNU ld])
781 else
782   AC_MSG_CHECKING([for non-GNU ld])
783 fi
784 AC_CACHE_VAL(lt_cv_path_LD,
785 [if test -z "$LD"; then
786   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
787   for ac_dir in $PATH; do
788     IFS="$lt_save_ifs"
789     test -z "$ac_dir" && ac_dir=.
790     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
791       lt_cv_path_LD="$ac_dir/$ac_prog"
792       # Check to see if the program is GNU ld.  I'd rather use --version,
793       # but apparently some variants of GNU ld only accept -v.
794       # Break only if it was the GNU/non-GNU ld that we prefer.
795       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
796       *GNU* | *'with BFD'*)
797         test "$with_gnu_ld" != no && break
798         ;;
799       *)
800         test "$with_gnu_ld" != yes && break
801         ;;
802       esac
803     fi
804   done
805   IFS="$lt_save_ifs"
806 else
807   lt_cv_path_LD="$LD" # Let the user override the test with a path.
808 fi])
809 LD="$lt_cv_path_LD"
810 if test -n "$LD"; then
811   AC_MSG_RESULT($LD)
812 else
813   AC_MSG_RESULT(no)
814 fi
815 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
816 AST_PROG_LD_GNU
817 ])# AST_PROG_LD
818
819
820 # AST_PROG_LD_GNU
821 # --------------
822 AC_DEFUN([AST_PROG_LD_GNU],
823 [AC_REQUIRE([AST_PROG_EGREP])dnl
824 AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
825 [# I'd rather use --version here, but apparently some GNU lds only accept -v.
826 case `$LD -v 2>&1 </dev/null` in
827 *GNU* | *'with BFD'*)
828   lt_cv_prog_gnu_ld=yes
829   ;;
830 *)
831   lt_cv_prog_gnu_ld=no
832   ;;
833 esac])
834 with_gnu_ld=$lt_cv_prog_gnu_ld
835 ])# AST_PROG_LD_GNU
836
837 # AST_PROG_EGREP
838 # -------------
839 m4_ifndef([AST_PROG_EGREP], [AC_DEFUN([AST_PROG_EGREP],
840 [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
841    [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
842     then ac_cv_prog_egrep='grep -E'
843     else ac_cv_prog_egrep='egrep'
844     fi])
845  EGREP=$ac_cv_prog_egrep
846  AC_SUBST([EGREP])
847 ])]) # AST_PROG_EGREP
848
849 # AST_PROG_SED
850 # -----------
851 # Check for a fully functional sed program that truncates
852 # as few characters as possible.  Prefer GNU sed if found.
853 AC_DEFUN([AST_PROG_SED],
854 [AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED,
855     [dnl ac_script should not contain more than 99 commands (for HP-UX sed),
856      dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed.
857      ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
858      for ac_i in 1 2 3 4 5 6 7; do
859        ac_script="$ac_script$as_nl$ac_script"
860      done
861      echo "$ac_script" | sed 99q >conftest.sed
862      $as_unset ac_script || ac_script=
863      _AC_PATH_PROG_FEATURE_CHECK(SED, [sed gsed],
864         [_AC_FEATURE_CHECK_LENGTH([ac_path_SED], [ac_cv_path_SED],
865                 ["$ac_path_SED" -f conftest.sed])])])
866  SED="$ac_cv_path_SED"
867  AC_SUBST([SED])dnl
868  rm -f conftest.sed
869 ])# AST_PROG_SED
870
871 dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
872 dnl
873 dnl @summary figure out how to build C programs using POSIX threads
874 dnl
875 dnl This macro figures out how to build C programs using POSIX threads.
876 dnl It sets the PTHREAD_LIBS output variable to the threads library and
877 dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
878 dnl C compiler flags that are needed. (The user can also force certain
879 dnl compiler flags/libs to be tested by setting these environment
880 dnl variables.)
881 dnl
882 dnl Also sets PTHREAD_CC to any special C compiler that is needed for
883 dnl multi-threaded programs (defaults to the value of CC otherwise).
884 dnl (This is necessary on AIX to use the special cc_r compiler alias.)
885 dnl
886 dnl NOTE: You are assumed to not only compile your program with these
887 dnl flags, but also link it with them as well. e.g. you should link
888 dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
889 dnl $LIBS
890 dnl
891 dnl If you are only building threads programs, you may wish to use
892 dnl these variables in your default LIBS, CFLAGS, and CC:
893 dnl
894 dnl        LIBS="$PTHREAD_LIBS $LIBS"
895 dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
896 dnl        CC="$PTHREAD_CC"
897 dnl
898 dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
899 dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
900 dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
901 dnl
902 dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
903 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
904 dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
905 dnl default action will define HAVE_PTHREAD.
906 dnl
907 dnl Please let the authors know if this macro fails on any platform, or
908 dnl if you have any other suggestions or comments. This macro was based
909 dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
910 dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
911 dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
912 dnl We are also grateful for the helpful feedback of numerous users.
913 dnl
914 dnl @category InstalledPackages
915 dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
916 dnl @version 2006-05-29
917 dnl @license GPLWithACException
918
919 AC_DEFUN([ACX_PTHREAD],
920 [
921 AC_REQUIRE([AC_CANONICAL_HOST])
922 AC_LANG_SAVE
923 AC_LANG_C
924 acx_pthread_ok=no
925
926 # We used to check for pthread.h first, but this fails if pthread.h
927 # requires special compiler flags (e.g. on True64 or Sequent).
928 # It gets checked for in the link test anyway.
929
930 # First of all, check if the user has set any of the PTHREAD_LIBS,
931 # etcetera environment variables, and if threads linking works using
932 # them:
933 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
934         save_CFLAGS="$CFLAGS"
935         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
936         save_LIBS="$LIBS"
937         LIBS="$PTHREAD_LIBS $LIBS"
938         AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
939         AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
940         AC_MSG_RESULT($acx_pthread_ok)
941         if test x"$acx_pthread_ok" = xno; then
942                 PTHREAD_LIBS=""
943                 PTHREAD_CFLAGS=""
944         fi
945         LIBS="$save_LIBS"
946         CFLAGS="$save_CFLAGS"
947 fi
948
949 # We must check for the threads library under a number of different
950 # names; the ordering is very important because some systems
951 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
952 # libraries is broken (non-POSIX).
953
954 # Create a list of thread flags to try.  Items starting with a "-" are
955 # C compiler flags, and other items are library names, except for "none"
956 # which indicates that we try without any flags at all, and "pthread-config"
957 # which is a program returning the flags for the Pth emulation library.
958
959 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
960
961 # The ordering *is* (sometimes) important.  Some notes on the
962 # individual items follow:
963
964 # pthreads: AIX (must check this before -lpthread)
965 # none: in case threads are in libc; should be tried before -Kthread and
966 #       other compiler flags to prevent continual compiler warnings
967 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
968 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
969 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
970 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
971 # -pthreads: Solaris/gcc
972 # -mthreads: Mingw32/gcc, Lynx/gcc
973 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
974 #      doesn't hurt to check since this sometimes defines pthreads too;
975 #      also defines -D_REENTRANT)
976 #      ... -mt is also the pthreads flag for HP/aCC
977 # pthread: Linux, etcetera
978 # --thread-safe: KAI C++
979 # pthread-config: use pthread-config program (for GNU Pth library)
980
981 case "${host_cpu}-${host_os}" in
982         *solaris*)
983
984         # On Solaris (at least, for some versions), libc contains stubbed
985         # (non-functional) versions of the pthreads routines, so link-based
986         # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
987         # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
988         # a function called by this macro, so we could check for that, but
989         # who knows whether they'll stub that too in a future libc.)  So,
990         # we'll just look for -pthreads and -lpthread first:
991
992         acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
993         ;;
994 esac
995
996 if test x"$acx_pthread_ok" = xno; then
997 for flag in $acx_pthread_flags; do
998
999         case $flag in
1000                 none)
1001                 AC_MSG_CHECKING([whether pthreads work without any flags])
1002                 ;;
1003
1004                 -*)
1005                 AC_MSG_CHECKING([whether pthreads work with $flag])
1006                 PTHREAD_CFLAGS="$flag"
1007                 ;;
1008
1009                 pthread-config)
1010                 AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
1011                 if test x"$acx_pthread_config" = xno; then continue; fi
1012                 PTHREAD_CFLAGS="`pthread-config --cflags`"
1013                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
1014                 ;;
1015
1016                 *)
1017                 AC_MSG_CHECKING([for the pthreads library -l$flag])
1018                 PTHREAD_LIBS="-l$flag"
1019                 ;;
1020         esac
1021
1022         save_LIBS="$LIBS"
1023         save_CFLAGS="$CFLAGS"
1024         LIBS="$PTHREAD_LIBS $LIBS"
1025         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1026
1027         # Check for various functions.  We must include pthread.h,
1028         # since some functions may be macros.  (On the Sequent, we
1029         # need a special flag -Kthread to make this header compile.)
1030         # We check for pthread_join because it is in -lpthread on IRIX
1031         # while pthread_create is in libc.  We check for pthread_attr_init
1032         # due to DEC craziness with -lpthreads.  We check for
1033         # pthread_cleanup_push because it is one of the few pthread
1034         # functions on Solaris that doesn't have a non-functional libc stub.
1035         # We try pthread_create on general principles.
1036         AC_TRY_LINK([#include <pthread.h>],
1037                     [pthread_t th; pthread_join(th, 0);
1038                      pthread_attr_init(0); pthread_cleanup_push(0, 0);
1039                      pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
1040                     [acx_pthread_ok=yes])
1041
1042         LIBS="$save_LIBS"
1043         CFLAGS="$save_CFLAGS"
1044
1045         AC_MSG_RESULT($acx_pthread_ok)
1046         if test "x$acx_pthread_ok" = xyes; then
1047                 break;
1048         fi
1049
1050         PTHREAD_LIBS=""
1051         PTHREAD_CFLAGS=""
1052 done
1053 fi
1054
1055 # Various other checks:
1056 if test "x$acx_pthread_ok" = xyes; then
1057         save_LIBS="$LIBS"
1058         LIBS="$PTHREAD_LIBS $LIBS"
1059         save_CFLAGS="$CFLAGS"
1060         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1061
1062         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
1063         AC_MSG_CHECKING([for joinable pthread attribute])
1064         attr_name=unknown
1065         for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
1066             AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
1067                         [attr_name=$attr; break])
1068         done
1069         AC_MSG_RESULT($attr_name)
1070         if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
1071             AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
1072                                [Define to necessary symbol if this constant
1073                                 uses a non-standard name on your system.])
1074         fi
1075
1076         AC_MSG_CHECKING([if more special flags are required for pthreads])
1077         flag=no
1078         case "${host_cpu}-${host_os}" in
1079             *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
1080             *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
1081         esac
1082         AC_MSG_RESULT(${flag})
1083         if test "x$flag" != xno; then
1084             PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
1085         fi
1086
1087         LIBS="$save_LIBS"
1088         CFLAGS="$save_CFLAGS"
1089
1090         # More AIX lossage: must compile with xlc_r or cc_r
1091         if test x"$GCC" != xyes; then
1092           AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
1093         else
1094           PTHREAD_CC=$CC
1095         fi
1096 else
1097         PTHREAD_CC="$CC"
1098 fi
1099
1100 AC_SUBST(PTHREAD_LIBS)
1101 AC_SUBST(PTHREAD_CFLAGS)
1102 AC_SUBST(PTHREAD_CC)
1103
1104 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
1105 if test x"$acx_pthread_ok" = xyes; then
1106         ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
1107         :
1108 else
1109         acx_pthread_ok=no
1110         $2
1111 fi
1112 AC_LANG_RESTORE
1113 ])dnl ACX_PTHREAD