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