1AC_INIT(include/ptlib.h)
2
3AC_CONFIG_SUBDIRS(plugins)
4
5PKG_PROG_PKG_CONFIG()
6if test -z "$PKG_CONFIG" ; then
7  AC_MSG_ERROR(PTLib must have pkg-config installed, 1)
8fi
9
10AC_PROG_CC
11AC_PROG_CXX
12
13AC_LANG(C++)
14
15m4_include(ptlib.m4)
16
17dnl ########################################################################
18dnl set the PREFIX accordingly
19if test "x$prefix" = "xNONE"; then
20   if test "x$PTLIBDIR" = "x"; then
21      prefix="/usr/local"
22   else
23      prefix="$PTLIBDIR"
24      AC_MSG_NOTICE(PTLIBDIR detected - setting install prefix to ${PTLIBDIR})
25   fi
26fi
27
28
29dnl ########################################################################
30dnl set the PTLIB directory to the current directory
31
32if test "x$PTLIBDIR" = "x"; then
33  PTLIBDIR=`pwd`
34fi
35
36AC_SUBST(PTLIBDIR)
37
38dnl set the PTLib installation dir for ptlib-config
39AC_SUBST(PTINSTDIR)
40
41
42dnl ########################################################################
43dnl extract the PTLib version
44dnl MSWIN_DISPLAY version,Version
45dnl MSWIN_VERSION version,PTLIB_MAJOR=MAJOR_VERSION
46dnl MSWIN_VERSION version,PTLIB_MINOR=MINOR_VERSION
47dnl MSWIN_VERSION version,PTLIB_BUILD=BUILD_NUMBER
48dnl MSWIN_VERSION version,PTLIB_VERSION=VERSION
49
50MAJOR_VERSION=`cat ${PTLIBDIR}/version.h | grep MAJOR_VERSION | cut -f3 -d' '`
51MINOR_VERSION=`cat ${PTLIBDIR}/version.h | grep MINOR_VERSION | cut -f3 -d' '`
52BUILD_NUMBER=`cat ${PTLIBDIR}/version.h | grep BUILD_NUMBER | cut -f3 -d' '`
53PTLIB_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${BUILD_NUMBER}"
54BUILD_TYPE=`cat ${PTLIBDIR}/version.h | grep BUILD_TYPE | cut -f 3 -d ' ' | sed 's/BetaCode/-beta/' | sed 's/AlphaCode/-alpha/' | sed 's/ReleaseCode/\./'`
55
56AC_SUBST(MAJOR_VERSION)
57AC_SUBST(MINOR_VERSION)
58AC_SUBST(BUILD_NUMBER)
59AC_SUBST(PTLIB_VERSION)
60AC_SUBST(BUILD_TYPE)
61AC_SUBST(MAJOR_VERSION, $MAJOR_VERSION)
62AC_SUBST(MINOR_VERSION, $MINOR_VERSION)
63AC_SUBST(BUILD_NUMBER, $BUILD_NUMBER)
64
65AC_MSG_NOTICE(PTLib version is ${PTLIB_VERSION});
66
67AC_DEFINE_UNQUOTED([PTLIB_MAJOR],   [$MAJOR_VERSION], [Major version])
68AC_DEFINE_UNQUOTED([PTLIB_MINOR],   [$MINOR_VERSION], [Minor version])
69AC_DEFINE_UNQUOTED([PTLIB_BUILD],   [$BUILD_NUMBER], [Build number])
70AC_DEFINE_UNQUOTED([PTLIB_VERSION], ["$PTLIB_VERSION"], [PTLib version])
71
72dnl ########################################################################
73dnl check for minimum sizing
74
75AC_ARG_ENABLE(minsize,AS_HELP_STRING([--enable-minsize],[Minimise the size of the lib by disabling least used options]))
76
77dnl these are the default configure settings
78HAS_SAMPLES=no
79default_tracing=yes
80default_resolver=yes
81default_openldap=yes
82default_openssl=yes
83default_expat=yes
84default_sdl=yes
85default_sasl=yes
86default_mlib=no
87HAS_PLUGINS=1
88HAS_TTS=1
89HAS_ASN=1
90HAS_STUN=1
91HAS_PIPECHAN=1
92HAS_DTMF=1
93HAS_WAVFILE=1
94HAS_SOCKS=1
95HAS_FTP=1
96HAS_SNMP=1
97HAS_TELNET=1
98HAS_REMCONN=1
99HAS_SERIAL=1
100HAS_POP3SMTP=1
101HAS_AUDIO=1
102HAS_VIDEO=1
103HAS_URL=1
104HAS_HTTP=1
105HAS_HTTPFORMS=1
106HAS_HTTPSVC=1
107HAS_SOAP=1
108HAS_XMLRPC=1
109HAS_JABBER=1
110HAS_CONFIG_FILE=1
111default_ipv6=no
112HAS_QOS=1
113HAS_VIDFILE=1
114HAS_FFVDEV=1
115HAS_APPSHARE=
116HAS_SHM_VIDEO=1
117HAS_VXML=1
118HAS_LUA=1
119HAS_EXCEPTIONS=
120HAS_VFW_CAPTURE=
121
122if test "${enable_minsize}x" = "yesx" ; then
123  default_resolver=no
124  default_openldap=no
125  default_openssl=no
126  default_expat=no
127  default_sdl=no
128  default_sasl=no
129  default_mlib=no
130  HAS_PLUGINS=1
131  HAS_TTS=
132  HAS_ASN=1
133  HAS_STUN=1
134  HAS_PIPECHAN=
135  HAS_DTMF=
136  HAS_WAVFILE=
137  HAS_SOCKS=
138  HAS_FTP=
139  HAS_SNMP=
140  HAS_TELNET=
141  HAS_REMCONN=
142  HAS_SERIAL=
143  HAS_POP3SMTP=
144  HAS_AUDIO=1
145  HAS_VIDEO=1
146  HAS_URL=1
147  HAS_HTTP=1
148  HAS_HTTPFORMS=
149  HAS_HTTPSVC=
150  HAS_SOAP=
151  HAS_XMLRPC=
152  HAS_JABBER=
153  HAS_CONFIG_FILE=0
154  default_ipv6=no
155  HAS_QOS=
156  HAS_VIDFILE=
157  HAS_FFVDEV=
158  HAS_APPSHARE=
159  HAS_VXML=
160  HAS_SHM_VIDEO=
161  HAS_EXCEPTIONS=
162  HAS_VFW_CAPTURE=
163  HAS_LUA=
164fi
165
166dnl ########################################################################
167dnl set the OSTYPE and MACHTYPE
168
169dnl MSWIN_DISPLAY winver,Advanced Windows API
170dnl MSWIN_DEFINE  winver,WINVER=0x502
171
172
173AC_CANONICAL_TARGET()
174
175
176TARGETDIR=unix
177OSTYPE=
178NEEDS_PTHREADS=yes
179
180case "$target_os" in
181  linux*)          OSTYPE=linux ;
182                   OSRELEASE="\"`uname -r`\"";
183		   OS_TAG="P_LINUX" ;
184                   need_pragma=yes ;
185		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
186		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
187                   ;;
188
189  gnu*)            OSTYPE=gnu ;
190                   OSRELEASE="\"`uname -r`\"";
191		   OS_TAG="P_GNU_HURD" ;
192                   need_pragma=yes ;
193		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
194		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
195                   ;;
196
197  freebsd*|kfreebsd*)       OSTYPE=FreeBSD ;
198		   OS_TAG="P_FREEBSD" ;
199                   if test "x$OSRELEASE" = "x"; then
200                     OSRELEASE="`sysctl -n kern.osreldate`" ;
201                   fi
202                   need_pragma=yes ;
203		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
204		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
205		   ;;
206
207  openbsd* )       OSTYPE=OpenBSD ;
208		   OS_TAG="P_OPENBSD" ;
209                   OSRELEASE="`sysctl -n kern.osrevision`" ;
210		   ENDLDLIBS="-lossaudio" ;
211                   need_pragma=yes ;
212		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
213		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
214		   ;;
215
216  netbsd* )        OSTYPE=NetBSD ;
217		   OS_TAG="P_NETBSD" ;
218                   OSRELEASE="`/sbin/sysctl -n kern.osrevision`" ;
219		   ENDLDLIBS="-lossaudio" ;
220                   need_pragma=yes ;
221		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
222		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
223		   ;;
224
225  solaris* | sunos* ) OSTYPE=solaris ;
226		   OS_TAG="P_SOLARIS" ;
227                   OSRELEASE=`uname -r | sed "s/5\.//g"` ;
228                   STDCCFLAGS="$STDCCFLAGS -D__inline=inline -DSOLARIS"
229                   need_pragma=yes ;
230		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
231                   dnl According to Andre Schulze <as8@rncmm2.urz.tu-dresden.de>
232                   dnl Solaris swab should not be used
233                   PTLIB_CHECK_UPAD128( [AC_DEFINE(P_HAS_UPAD128_T)] )
234                   PTLIB_CHECK_FDSIZE()
235		   ;;
236
237  darwin* )	   OSTYPE=Darwin ;
238		   OS_TAG="P_MACOSX" ;
239		   OS_MAJOR=`uname -r | sed 's/\..*$//'`
240		   OS_MAJOR=`expr $OS_MAJOR \* 100`
241		   OS_MINOR=[`uname -r | sed -e 's/[0-9][0-9]*\.//' -e 's/\..*$//'`]
242		   OSRELEASE=`expr $OS_MAJOR + $OS_MINOR`
243                   SHAREDLIBEXT="dylib";
244		   AC_DEFINE(P_PTHREADS, 1, "PThreads found")
245		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
246		   ;;
247
248  beos*)           OSTYPE=beos ;
249                   OS_TAG="P_BEOS" ;
250                   OSRELEASE=`uname -r` ;
251                   STDCCFLAGS="$STDCCFLAGS -D__BEOS__"
252                   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
253		   ;;
254
255  cygwin*)         OSTYPE=cygwin ;
256                   OS_TAG="P_CYGWIN" ;
257                   OSRELEASE="`uname -r`";
258                   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
259                   HAS_SHM_VIDEO=
260		   ;;
261
262  mingw*)	   OSTYPE=mingw ;
263		   OS_TAG="P_MINGW" ;
264		   OSRELEASE=`uname -r` ;
265		   TARGETDIR=msos ;
266		   SHAREDLIBEXT="dll" ;
267		   STDCCFLAGS="$STDCCFLAGS -mms-bitfields" ;
268		   ENDLDLIBS="-lwinmm -lwsock32 -lws2_32 -lsnmpapi -lmpr -lcomdlg32 -lgdi32 -lavicap32 -liphlpapi -lole32" ;
269		   NEEDS_PTHREADS=no ;
270		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
271		   HAS_SHM_VIDEO=
272		   ;;
273
274  * )		   OSTYPE="$target_os" ;
275		   OS_TAG="P_UNKNOWN_OS" ;
276  		   OSRELEASE="\"${OSTYPE}_`uname -r`\"" ;
277  		   AC_CHECK_FUNC([swab], [AC_DEFINE([USE_SYSTEM_SWAB], [], [Use system swab()] )] )
278		   AC_MSG_WARN("OS $target_os not recognized - proceed with caution!") ;
279		   ;;
280esac
281
282MACHTYPE=
283P_64BIT=0
284
285case "$target_cpu" in
286   x86 | i686 | i586 | i486 | i386 )
287	AC_COMPILE_IFELSE(
288          [AC_LANG_SOURCE([[int t = __amd64__;]])],
289	  [[MACHTYPE=x86_64
290	    P_64BIT=1]],
291	  [[MACHTYPE=x86]]
292        )
293	PBYTE_ORDER=PLITTLE_ENDIAN
294	;;
295
296   x86_64 | amd64)
297	MACHTYPE=$target_cpu
298	P_64BIT=1
299        LIB64=1
300	;;
301
302   alpha | alphaev56 | alphaev6 | alphaev67 | alphaev7)
303	MACHTYPE=alpha
304	P_64BIT=1
305	;;
306
307   hppa )
308	MACHTYPE=hppa
309	;;
310
311   hppa64 )
312	MACHTYPE=hppa64
313	P_64BIT=1
314        LIB64=1
315	;;
316
317   sparc | sparc64 )
318	MACHTYPE=sparc
319	P_64BIT=1
320        LIB64=1
321	;;
322
323   ppc | powerpc )
324	MACHTYPE=ppc
325	;;
326
327   ppc64 | powerpc64 )
328	MACHTYPE=ppc64
329	P_64BIT=1
330        LIB64=1
331	;;
332
333   ia64 )
334	MACHTYPE=ia64
335	P_64BIT=1
336	;;
337
338   s390x )
339	MACHTYPE=s390x
340	P_64BIT=1
341        LIB64=1
342	;;
343
344   s390 )
345	MACHTYPE=s390
346	;;
347
348   * )
349	MACHTYPE=$target_cpu
350	AC_MSG_WARN("CPU $target_cpu not recognized - proceed with caution!")
351	;;
352esac
353
354
355AC_ARG_ENABLE(force32, AS_HELP_STRING([--enable-force32],[Force 32-bit x86 build]))
356if test "$MACHTYPE" = "x86_64" -a "${enable_force32}" = "yes" ; then
357  if test "$OSTYPE" = "Darwin"; then
358    STDCCFLAGS="$STDCCFLAGS -arch i386"
359    LDFLAGS="$LDFLAGS -arch i386"
360  else
361    STDCCFLAGS="$STDCCFLAGS -m32"
362    LDFLAGS="$LDFLAGS -m32"
363  fi
364
365  MACHTYPE=x86
366  P_64BIT=0
367  LIB64=0
368  AC_MSG_NOTICE(Forcing 32 bit x86 compile)
369fi
370
371
372AC_MSG_NOTICE(OSTYPE set to $OSTYPE);
373AC_MSG_NOTICE(OSRELEASE set to $OSRELEASE);
374AC_MSG_NOTICE(MACHTYPE set to $MACHTYPE);
375
376AC_SUBST(MACHTYPE,  $MACHTYPE)
377AC_SUBST(OSTYPE,    $OSTYPE)
378AC_SUBST(OSRELEASE, $OSRELEASE)
379AC_SUBST(TARGETDIR, $TARGETDIR)
380
381AC_DEFINE_UNQUOTED($OS_TAG, $OSRELEASE)
382
383if test "$P_64BIT" = "1" ; then
384  AC_DEFINE([P_64BIT], [1], [64bit architecture])
385  STDCCFLAGS="$STDCCFLAGS -DP_64BIT"
386fi
387
388if test "$target_os" = "linux-gnulp" ; then
389  AC_DEFINE([P_LPIA], [1], [Low Power Intel Architecture])
390fi
391
392
393dnl ########################################################################
394dnl set LIBDIR accordingly
395if test "$prefix" = "$PTLIBDIR"; then
396   LIBDIR=${libdir}_${OSTYPE}_${MACHTYPE}
397else
398   LIBDIR=${libdir}
399fi
400AC_SUBST(LIBDIR)
401
402
403dnl ########################################################################
404dnl get the gcc version
405
406USE_GCC=
407USE_PCH=
408
409if test x$GXX = xyes ; then
410  USE_GCC=yes
411  gcc_version=`$CXX -dumpversion`
412  AC_MSG_NOTICE(gcc version is $gcc_version);
413  GXX_MAJOR=`echo $gcc_version | sed 's/\..*$//'`
414  GXX_MINOR=[`echo $gcc_version | sed -e 's/[0-9][0-9]*\.//' -e 's/\..*$//'`]
415  GXX_PATCH=[`echo $gcc_version | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.//' -e 's/\..*$//'`]
416
417  dnl only enable pragma for gcc 4.0 and later
418  AC_MSG_CHECKING(checking if pragma implementation should be used)
419  if test ${GXX_MAJOR} -lt 4 ; then
420    if test "${need_pragma}" = "yes" ; then
421      STDCCFLAGS="$STDCCFLAGS -DP_USE_PRAGMA"
422      AC_MSG_RESULT(yes)
423    else
424      AC_MSG_RESULT(no)
425    fi
426  else
427    AC_MSG_RESULT(no)
428  fi
429
430  dnl only enable PCH for gcc 4.0 and later
431  AC_MSG_CHECKING(checking if precompiled headers available)
432  if test ${GXX_MAJOR} -lt 4 ; then
433    enable_pch=no
434  else
435    AC_ARG_ENABLE(pch, AS_HELP_STRING([--enable-pch],[Enable precompiled headers]))
436  fi
437  if test "${enable_pch}" = "yes" ; then
438    AC_MSG_RESULT(yes)
439    USE_PCH=1
440  else
441    AC_MSG_RESULT(no)
442  fi
443else
444  USE_GCC=no
445fi
446
447AC_SUBST(USE_GCC)
448AC_SUBST(USE_PCH)
449
450dnl ########################################################################
451dnl check if precompiled headers available, or disabled
452
453dnl ########################################################################
454dnl set the shared library extension, if not already set
455
456if test "x${SHAREDLIBEXT}" = "x" ; then
457  SHAREDLIBEXT="so"
458fi
459AC_SUBST(SHAREDLIBEXT, $SHAREDLIBEXT)
460AC_DEFINE([P_SHAREDLIBEXT], [$SHAREDLIBEXT], [shared library extension])
461
462dnl ########################################################################
463dnl check the endianness
464
465dnl MSWIN_DISPLAY byteorder,Byte Order
466dnl MSWIN_DEFINE  byteorder,PBYTE_ORDER=PLITTLE_ENDIAN
467
468if test ${OSTYPE} != "Darwin" ; then
469  AC_C_BIGENDIAN()
470  if test ${ac_cv_c_bigendian} = yes ; then
471    PBYTE_ORDER=PBIG_ENDIAN
472  else
473    PBYTE_ORDER=PLITTLE_ENDIAN
474  fi
475
476  AC_DEFINE_UNQUOTED(PBYTE_ORDER, $PBYTE_ORDER, "byte order")
477fi
478
479AC_MSG_NOTICE(Default extension for C++ files is $ac_ext)
480
481dnl ########################################################################
482dnl look for compile flags
483AC_LANG_PUSH(C++)
484
485AC_MSG_CHECKING(if compiler accepts -felide-constructors)
486AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]],[[]])])
487$CXX $CXXFLAGS -felide-constructors conftest.$ac_ext > /dev/null 2>&1
488if test $? = 0 ; then
489  AC_MSG_RESULT(yes)
490  STDCXXFLAGS="$STDCXXFLAGS -felide-constructors"
491else
492  AC_MSG_RESULT(no)
493fi
494
495AC_MSG_CHECKING(if linker accepts -Wreorder)
496AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]],[[]])])
497$CXX $CXXFLAGS -Wreorder conftest.$ac_ext > /dev/null 2>&1
498if test $? = 0 ; then
499  AC_MSG_RESULT(yes)
500  STDCXXFLAGS="$STDCXXFLAGS -Wreorder"
501else
502  AC_MSG_RESULT(no)
503fi
504
505
506dnl add additional information for the debugger to ensure the user can indeed
507dnl debug coredumps and macros.
508
509AC_MSG_CHECKING(if debug build accepts -g3 -ggdb -O0)
510AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]],[[]])])
511$CXX  $CXXFLAGS  -g3 -ggdb -O0 conftest.$ac_ext > /dev/null 2>&1
512if test $? = 0 ; then
513  AC_MSG_RESULT(yes)
514  DEBUG_FLAG="-g3 -ggdb -O0"
515else
516  AC_MSG_RESULT(no)
517  DEBUG_FLAG="-g"
518fi
519
520
521AC_MSG_CHECKING(if compiler uses RTTI by default)
522AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <typeinfo>]],
523[[ class A
524  {
525    public:
526      virtual void fred() { }
527  };
528  class B : public A
529  {
530    public:
531      void fred() { }
532  };
533  B t;
534  A * p = dynamic_cast<A *>(&t);
535  return 0;
536]])],DEFAULT_RTTI=1, DEFAULT_RTTI=0)
537if test "$DEFAULT_RTTI" = "1" ; then
538  AC_MSG_RESULT(yes)
539else
540  AC_MSG_RESULT(no)
541  STDCXXFLAGS="$STDCCFLAGS -frtti"
542fi
543
544AC_LANG_POP(C++)
545
546dnl ########################################################################
547dnl check for the size of int
548AC_CHECK_SIZEOF(int)
549
550dnl ########################################################################
551dnl check for long double
552
553AC_C_LONG_DOUBLE
554if test $ac_cv_c_long_double != yes ; then
555  AC_DEFINE([PNO_LONG_DOUBLE], [], [No long double])
556fi
557
558dnl if test ${OSTYPE} = Darwin ; then
559dnl   STDCCFLAGS="$STDCCFLAGS -Wno-long-double"
560dnl fi
561
562dnl ########################################################################
563dnl we need flex, so we better make sure it's there
564AC_PATH_PROG(FLEX, flex)
565if test -z "$FLEX" ; then
566        AC_MSG_ERROR(PTLib needs the GNU Project fast lexical analyzer generator flex, 1)
567fi
568
569dnl ########################################################################
570dnl most systems have "ar", but some use "gar"
571AC_CHECK_TOOL(AR, ar)
572if test -z "$AR" ; then
573  AC_CHECK_TOOL(AR, gar)
574fi
575
576dnl ########################################################################
577dnl we need bison, so we better make sure it's there
578AC_PATH_PROG(BISON, bison)
579if test -z "$BISON" ; then
580        AC_MSG_ERROR(PTLib needs the GNU Project parser generator bison, 1)
581fi
582
583dnl ########################################################################
584dnl check for number of parms to readdir
585AC_MSG_CHECKING(if readdir_r has 2 parms)
586AC_TRY_COMPILE([#define _POSIX_PTHREAD_SEMANTICS
587                #include <dirent.h>],
588               [DIR *s; struct dirent * e; readdir_r(s, e);], P_HAS_POSIX_READDIR_R=2, P_HAS_POSIX_READDIR_R=0)
589if test ${P_HAS_POSIX_READDIR_R} = 2 ; then
590  AC_MSG_RESULT(yes)
591else
592  AC_MSG_RESULT(no)
593  AC_MSG_CHECKING(if readdir_r has 3 parms)
594  AC_TRY_COMPILE([#include <dirent.h>],
595                 [DIR *s; struct dirent * e; struct dirent * p; readdir_r(s, e, &p);], P_HAS_POSIX_READDIR_R=3, P_HAS_POSIX_READDIR_R=0)
596  if test ${P_HAS_POSIX_READDIR_R} = 3 ; then
597    AC_MSG_RESULT(yes)
598  else
599    AC_MSG_RESULT(no)
600  fi
601fi
602AC_DEFINE_UNQUOTED(P_HAS_POSIX_READDIR_R, ${P_HAS_POSIX_READDIR_R})
603
604
605
606dnl ########################################################################
607dnl check for tracing
608dnl
609
610AC_ARG_ENABLE(tracing, AS_HELP_STRING([--disable-tracing],[Remove PTRACE and all trace logging]))
611
612if test "x${enable_tracing}" = "xno" ; then
613  AC_MSG_NOTICE(PTRACE and all trace logging removed)
614  STDCCFLAGS="$STDCCFLAGS -DPTRACING=0 -DPASN_NOPRINTON -DPASN_LEANANDMEAN"
615else
616  AC_MSG_NOTICE(PTRACE and all trace logging included)
617  STDCCFLAGS="$STDCCFLAGS -DPTRACING=1"
618fi
619
620
621dnl ########################################################################
622dnl check for Windows-like integer BOOL
623dnl
624dnl MSWIN_DISPLAY ansi-bool,ANSI C++ bool
625dnl MSWIN_DEFINE  ansi-bool,P_USE_STANDARD_CXX_BOOL
626
627AC_ARG_ENABLE(ansi-bool,AS_HELP_STRING([--disable-ansi-bool],[Use Windows-like integer BOOL over ANSI C++ bool]))
628
629if test "x${enable_ansi_bool}" = "xno" ; then
630  AC_MSG_NOTICE(Using Windows-like integer BOOL for PBoolean: (PFalse=0 PTrue=1))
631else
632  AC_MSG_NOTICE(Using ANSI C++ bool for PBoolean: (PFalse=false PTrue=true))
633  AC_DEFINE(P_USE_STANDARD_CXX_BOOL)
634fi
635
636
637dnl ########################################################################
638dnl check for recvmsg
639
640P_HAS_RECVMSG=
641AC_MSG_CHECKING(for recvmsg)
642AC_TRY_COMPILE([#include <sys/types.h>
643                #include <sys/socket.h>
644                #include <netinet/in.h>],
645               [int t = SOL_IP; t = IP_PKTINFO; struct msghdr *msg; recvmsg(0, msg, 0);], P_HAS_RECVMSG=1)
646if test "x${P_HAS_RECVMSG}" = "x1" ; then
647  AC_MSG_RESULT(yes)
648  AC_DEFINE(P_HAS_RECVMSG, 1)
649else
650  AC_MSG_RESULT(no)
651fi
652
653dnl ########################################################################
654dnl check for IPV6_ADD_MEMBERSHIP
655
656P_HAS_IPV6_ADD_MEMBERSHIP=
657AC_MSG_CHECKING(for IPV6_ADD_MEMBERSHIP)
658AC_TRY_COMPILE([#include <netinet/in.h>],
659               [int x = IPV6_ADD_MEMBERSHIP;],
660               P_HAS_IPV6_ADD_MEMBERSHIP=1)
661if test "x${P_HAS_IPV6_ADD_MEMBERSHIP}" = "x1" ; then
662  AC_MSG_RESULT(yes)
663  AC_DEFINE(P_HAS_IPV6_ADD_MEMBERSHIP, 1)
664else
665  AC_MSG_RESULT(no)
666fi
667
668dnl ########################################################################
669dnl check for NetLink support
670
671P_HAS_NETLINK=0
672AC_MSG_CHECKING(for NetLink support)
673AC_TRY_COMPILE([#include <asm/types.h>
674                #include <sys/socket.h>
675                #include <linux/netlink.h>
676                #include <linux/rtnetlink.h>
677                #include <linux/genetlink.h>
678                #include <memory.h>],
679               [struct sockaddr_nl sa; memset(&sa, 0, sizeof(sa));
680                sa.nl_family = AF_NETLINK; sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;
681                int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);], P_HAS_NETLINK=1)
682if test "${P_HAS_NETLINK}" = "1" ; then
683  AC_MSG_RESULT(yes)
684  AC_DEFINE(P_HAS_NETLINK, 1)
685else
686  AC_MSG_RESULT(no)
687fi
688
689dnl ########################################################################
690dnl check for streams types
691
692P_HAS_STL_STREAMS=0
693AC_MSG_CHECKING(if using STL streams)
694AC_TRY_COMPILE([#include <iostream>],
695               [int v = (int)std::ios_base::seekdir();], P_HAS_STL_STREAMS=1)
696if test "${P_HAS_STL_STREAMS}" = 1 ; then
697  AC_MSG_RESULT(yes)
698else
699  AC_MSG_RESULT(no)
700fi
701AC_DEFINE_UNQUOTED(P_HAS_STL_STREAMS, ${P_HAS_STL_STREAMS})
702
703dnl ########################################################################
704dnl see if using GNU glibc++, because then we have atomic integer operations
705
706AC_ARG_ENABLE(atomicity,AS_HELP_STRING([--disable-atomicity],[Do not use atomicity.h]))
707
708P_HAS_ATOMIC_INT=0
709P_NEEDS_GNU_CXX_NAMESPACE=0
710AC_MSG_CHECKING(if atomic integer available)
711if test "${enable_atomicity}" = "no" ; then
712  AC_MSG_RESULT(disabled)
713else
714  AC_TRY_COMPILE([#include <bits/atomicity.h>],
715                 [_Atomic_word val;], P_HAS_ATOMIC_INT=1,
716                 AC_TRY_COMPILE([#include <ext/atomicity.h>],
717                                [_Atomic_word val;], P_HAS_ATOMIC_INT=2)
718  )
719  if test ${P_HAS_ATOMIC_INT} != 0 ; then
720    AC_MSG_RESULT(yes)
721    AC_MSG_CHECKING(if __exchange_and_add is in __gnu_cxx namespace)
722    if test ${P_HAS_ATOMIC_INT} = 1 ; then
723      AC_TRY_COMPILE([#include <bits/atomicity.h>],
724                     [_Atomic_word val; __gnu_cxx::__exchange_and_add(&val, 1)],
725                     P_NEEDS_GNU_CXX_NAMESPACE=1)
726    else
727      P_HAS_ATOMIC_INT=1
728      AC_TRY_COMPILE([#include <ext/atomicity.h>],
729                     [_Atomic_word val; __gnu_cxx::__exchange_and_add(&val, 1)],
730                     P_NEEDS_GNU_CXX_NAMESPACE=1)
731    fi
732    if test ${P_NEEDS_GNU_CXX_NAMESPACE} = 1 ; then
733      AC_MSG_RESULT(yes)
734    else
735      AC_MSG_RESULT(no)
736    fi
737  else
738    AC_MSG_RESULT(no)
739  fi
740fi
741
742AC_DEFINE_UNQUOTED(P_HAS_ATOMIC_INT, ${P_HAS_ATOMIC_INT})
743AC_DEFINE_UNQUOTED(P_NEEDS_GNU_CXX_NAMESPACE, ${P_NEEDS_GNU_CXX_NAMESPACE})
744
745dnl ########################################################################
746dnl check for Unix semaphores
747
748# mingw implements itself the semaphores in src/ptlib/msos/win32.cxx
749if test ${OSTYPE} != mingw ; then
750
751dnl posix unnamed semaphore support in darwin/macosx is broken
752if test ${OSTYPE} != Darwin ; then
753  AC_TRY_COMPILE([#include <semaphore.h>],
754                 [sem_t *s; sem_init(s, 0, 0);], P_HAS_SEMAPHORES=1)
755  AC_MSG_CHECKING(if Unix semaphores are available)
756  if test "${P_HAS_SEMAPHORES}x" != "x" ; then
757    AC_DEFINE(P_HAS_SEMAPHORES)
758    AC_MSG_RESULT(yes)
759  else
760    AC_MSG_RESULT(no)
761  fi
762fi
763
764if test "${P_HAS_SEMAPHORES}x" = "x" ; then
765
766  AC_TRY_COMPILE([#include <semaphore.h>],
767                 [sem_t *s = sem_open("test", O_CREAT)],
768                 P_HAS_NAMED_SEMAPHORES=1 )
769  AC_MSG_CHECKING(if named semaphores are available)
770  if test "${P_HAS_NAMED_SEMAPHORES}x" != "x"; then
771    AC_DEFINE(P_HAS_NAMED_SEMAPHORES)
772    AC_MSG_RESULT(yes)
773  else
774    AC_MSG_RESULT(no)
775    AC_MSG_WARN(This host does not support semaphores which are essential)
776    AC_MSG_WARN(to implement 'critical sections'. This feature was added)
777    AC_MSG_WARN(in PWLib 1.7.0 and improves the stability of multithreaded)
778    AC_MSG_WARN(programs. This feature has been disabled for this host)
779  fi
780fi
781
782fi  # mingw
783
784dnl ########################################################################
785dnl check for pthreads library
786
787dnl MSWIN_DISPLAY semaphore,Semaphore Support
788dnl MSWIN_DEFINE  semaphore,P_HAS_SEMAPHORES
789
790dnl Linux, Mac OS X use libpthread and -lpthread
791dnl FreeBSD uses the -pthread compiler option and uses libc_r
792
793AC_CHECK_LIB(pthread, pthread_create, HAS_PTHREADS=yes, HAS_PTHREADS=no)
794if test ${HAS_PTHREADS} = yes ; then
795  ENDLDLIBS="$ENDLDLIBS -lpthread"
796  STDCCFLAGS="$STDCCFLAGS -D_REENTRANT"
797else
798  if test ${OSTYPE} = FreeBSD ; then
799    HAS_PTHREADS=yes
800    ENDLDLIBS="$ENDLDLIBS -pthread"
801    STDCCFLAGS="$STDCCFLAGS -D_REENTRANT -pthread"
802  fi
803fi
804
805
806if test ${HAS_PTHREADS} != yes -a ${NEEDS_PTHREADS} = yes; then
807  AC_MSG_ERROR(must have pthreads!)
808fi
809
810dnl ########################################################################
811dnl check for rt library
812
813AC_CHECK_LIB(rt, clock_gettime, HAS_RT=yes, HAS_RT=no)
814if test ${HAS_RT} = yes ; then
815  ENDLDLIBS="$ENDLDLIBS -lrt"
816fi
817
818
819if test ${HAS_PTHREADS} != yes -a ${NEEDS_PTHREADS} = yes; then
820  AC_MSG_ERROR(must have pthreads!)
821fi
822
823dnl ########################################################################
824dnl check for XPG6 compliant pthreads (timed spinlocks)
825
826if test ${HAS_PTHREADS} = yes ; then
827  AC_MSG_CHECKING(if pthread_mutex_timedlock is available)
828  AC_TRY_COMPILE([#include <pthread.h>],
829                  [pthread_mutex_timedlock(NULL, NULL);], HAS_PTHREADS_XPG6=yes, HAS_PTHREADS_XPG6=no)
830  if test ${HAS_PTHREADS_XPG6} = yes ; then
831    AC_MSG_RESULT(yes)
832    AC_DEFINE(P_PTHREADS_XPG6, 1, "XPG6 compliant pthreads found")
833  else
834    AC_MSG_RESULT(no)
835  fi
836
837  AC_CHECK_LIB(pthread, sem_timedwait, HAS_SEMAPHORES_XPG6=yes, HAS_SEMAPHORES_XPG6=no)
838  if test ${HAS_SEMAPHORES_XPG6} = yes ; then
839    AC_MSG_CHECKING(if sem_timedwait is compilable)
840    AC_TRY_COMPILE([#include <semaphore.h>],
841                    [sem_t *s; const struct timespec * t; sem_timedwait(s, t);], HAS_SEMAPHORES_XPG6=yes, HAS_SEMAPHORES_XPG6=no)
842    if test ${HAS_SEMAPHORES_XPG6} = yes ; then
843      AC_DEFINE(P_HAS_SEMAPHORES_XPG6, 1, "Supports XPG6 Semaphores")
844      AC_MSG_RESULT(yes)
845    else
846      AC_MSG_RESULT(no)
847    fi
848  fi
849fi
850
851dnl ########################################################################
852dnl check for recursive mutexes
853P_HAS_RECURSIVE_MUTEX=0
854AC_MSG_CHECKING(if recursive mutexes are available)
855AC_TRY_COMPILE([#include <pthread.h>],
856               [pthread_mutexattr_t attr; pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);], P_HAS_RECURSIVE_MUTEX=1)
857if test ${P_HAS_RECURSIVE_MUTEX} = 1 ; then
858  AC_MSG_RESULT(PTHREAD_MUTEX_RECURSIVE_NP)
859else
860  AC_TRY_COMPILE([#include <pthread.h>],
861	   [pthread_mutexattr_t attr; pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);], P_HAS_RECURSIVE_MUTEX=2)
862  if test ${P_HAS_RECURSIVE_MUTEX} = 2 ; then
863    AC_MSG_RESULT(PTHREAD_MUTEX_RECURSIVE)
864  else
865    AC_MSG_RESULT(no)
866  fi
867fi
868AC_DEFINE_UNQUOTED(P_HAS_RECURSIVE_MUTEX, ${P_HAS_RECURSIVE_MUTEX})
869
870
871dnl ########################################################################
872dnl check if setpgrp takes non or two arguments
873P_SETPGRP_SYSTEMV=0
874P_SETPGRP_NOPARM=0
875AC_MSG_CHECKING(if setpgrp takes no parameters)
876AC_TRY_COMPILE([#include <unistd.h>],
877               [pid_t p = setpgrp();], P_SETPGRP_NOPARM=1)
878if test ${P_SETPGRP_NOPARM} = 1 ; then
879  AC_MSG_RESULT(yes)
880else
881  AC_MSG_RESULT(no)
882fi
883AC_DEFINE_UNQUOTED(P_SETPGRP_NOPARM, ${P_SETPGRP_NOPARM})
884
885
886dnl ########################################################################
887dnl check for regex library
888
889dnl yes this test needs to be outside the if below
890dnl because autoconf needs to initialise stuff. without this
891dnl all sorts of strange things happen
892AC_CHECK_HEADERS(regex.h, HAS_REGEX=yes)
893
894AC_ARG_ENABLE(internalregex,
895        AS_HELP_STRING([--enable-internalregex],[Force internal regex library]),
896        internalregex=$enableval)
897if test "$internalregex" = "yes" ; then
898  AC_MSG_NOTICE(Forcing use of internal regex library)
899else
900  if test "$HAS_REGEX" = "yes" ; then
901    AC_CHECK_FUNC(regcomp, HAS_REGEX=yes)
902    if test "$HAS_REGEX" = "yes" ; then
903      AC_SUBST(HAS_REGEX, 1)
904      AC_DEFINE(P_REGEX, 1, "Regex library found")
905      if test ${OSTYPE} = mingw ; then
906        ENDLDLIBS="$ENDLDLIBS -lregex"
907      fi
908    fi
909  fi
910fi
911
912
913dnl ########################################################################
914dnl check for dynamic library code (dlopen and friends)
915
916dnl MSWIN DLL Support,,P_DYNALINK
917
918case "$target_os" in
919  cygwin* | mingw* )
920    PTLIB_SIMPLE_OPTION([plugins], [PLUGINS], [enable plugin support])
921    AC_DEFINE(P_DYNALINK, 1, "Support for dynamic loading of libraries")
922    ;;
923  *)
924    PTLIB_FIND_LIBDL([HAS_LIBDL=1], [HAS_LIBDL=])
925    if test "x$HAS_LIBDL" = "x1" ; then
926      AC_DEFINE(P_DYNALINK, 1, "Support for dynamic loading of libraries")
927      dnl The rest is done further down...
928    fi
929
930    dnl #########################################################################
931    dnl check to see if plugins enabled
932    dnl MSWIN_DISPLAY plugins,Plugin Support
933    dnl MSWIN_DEFINE  plugins,P_PLUGINS
934
935    PTLIB_SIMPLE_OPTION([plugins], [PLUGINS], [enable plugin support], [HAS_LIBDL])
936    ;;
937esac
938
939AC_MSG_CHECKING(where plugins are being installed)
940AC_ARG_WITH([plugin-installdir],
941             AS_HELP_STRING([--with-plugin-installdir=DIR],[Location where plugins are installed, starting at the lib dir]),
942             [PLUGIN_DIR="$withval"],
943             [PLUGIN_DIR="ptlib-${PTLIB_VERSION}"]
944           )
945
946EXPANDED_PLUGIN_DIR="${LIBDIR}/${PLUGIN_DIR}"
947if test "x${exec_prefix}" = "xNONE" ; then
948  if test "x${prefix}" = "xNONE" ; then
949    EXPANDED_PLUGIN_DIR=`echo ${EXPANDED_PLUGIN_DIR} | sed s#\\${exec_prefix}#/usr/local#`
950  else
951    EXPANDED_PLUGIN_DIR=`echo ${EXPANDED_PLUGIN_DIR} | sed s#\\${exec_prefix}#${prefix}#`
952  fi
953else
954  EXPANDED_PLUGIN_DIR=`echo ${EXPANDED_PLUGIN_DIR} | sed s#\\${exec_prefix}#${exec_prefix}#`
955fi
956
957case "$target_os" in
958  cygwin* | mingw* )
959    EXPANDED_PLUGIN_DIR="plugins"
960  ;;
961esac
962
963AC_MSG_RESULT(${EXPANDED_PLUGIN_DIR})
964
965AC_DEFINE_UNQUOTED([P_DEFAULT_PLUGIN_DIR], ["${EXPANDED_PLUGIN_DIR}"], [Default plugin directory])
966
967DEV_PLUGIN_DIR="${PLUGIN_DIR}/devices"
968AC_SUBST(DEV_PLUGIN_DIR)
969
970dnl #########################################################################
971dnl check to see if samples are enabled
972
973PTLIB_SIMPLE_OPTION([samples], [SAMPLES], [enable samples build])
974
975dnl ########################################################################
976dnl look for DNS resolver code (must be done before OpenLDAP)
977dnl on some systems, the resolver is in libc
978dnl but needs resolv.h included which defines res_search as __res_search
979
980dnl MSWIN_DISPLAY    resolver,DNS Resolver
981dnl MSWIN_CHECK_FILE resolver,include\windns.h,P_DNS=1
982
983AC_ARG_ENABLE([resolver],
984	      AS_HELP_STRING([--disable-resolver],[disable DNS resolver support]),
985	      [enable_resolver=$enableval],
986	      [enable_resolver=$default_resolver]
987	     )
988
989HAS_RESOLVER=
990if test "$enable_resolver" = "no" ; then
991  AC_MSG_NOTICE(DNS resolver disabled)
992else
993  PTLIB_FIND_RESOLVER([HAS_RESOLVER=1], [HAS_RESOLVER=])
994
995  if test "x${HAS_RESOLVER}" = "x1" ; then
996    AC_DEFINE(P_DNS, 1, "resolver libraries found")
997    if test "${HAS_RES_NINIT}z" != "z" ; then
998      AC_DEFINE(P_HAS_RES_NINIT)
999    fi
1000  fi
1001fi
1002
1003AC_SUBST(HAS_RESOLVER)
1004
1005dnl ########################################################################
1006dnl Look for SASL
1007
1008dnl MSWIN_DISPLAY    sasl,Cyrus SASL
1009dnl MSWIN_CHECK_FILE sasl,include\sasl.h,P_SASL=1
1010dnl MSWIN_DIR_SYMBOL sasl,SASL_DIR
1011dnl MSWIN_CHECK_DIR  sasl,..\sasl\
1012dnl MSWIN_CHECK_DIR  sasl,..\cyrus-sasl\
1013dnl MSWIN_CHECK_DIR  sasl,..\external\sasl\
1014dnl MSWIN_CHECK_DIR  sasl,..\external\cyrus-sasl\
1015dnl MSWIN_CHECK_DIR  sasl,\sasl\
1016dnl MSWIN_CHECK_DIR  sasl,\cyrus-sasl\
1017dnl MSWIN_CHECK_DIR  sasl,c:\sasl\
1018dnl MSWIN_CHECK_DIR  sasl,c:\cyrus-sasl\
1019
1020AC_ARG_ENABLE([sasl],
1021	      AS_HELP_STRING([--disable-sasl],[disable SASL support]),
1022	      [enable_sasl=$enableval],
1023	      [enable_sasl=$default_sasl]
1024	     )
1025
1026if test "$enable_sasl" = "no" ; then
1027  AC_MSG_NOTICE(SASL disabled)
1028else
1029
1030  AC_CHECK_LIB([sasl2], [sasl_version], [HAS_SASL2=1], [HAS_SASL2=])
1031  AC_CHECK_LIB([sasl], [sasl_client_out], [HAS_SASL=1], [HAS_SASL=])
1032
1033  PTLIB_CHECK_SASL_INCLUDE([
1034                            if test "x${SASL_HEADER}" = "xsasl" ; then
1035                              AC_DEFINE(P_HAS_SASL_SASL_H)
1036                            fi
1037                           ],
1038                           [
1039                            HAS_SASL=
1040                            HAS_SASL2=
1041                           ])
1042
1043  if test "x${HAS_SASL2}" = "x1" ; then
1044    ENDLDLIBS="$ENDLDLIBS -lsasl2"
1045    AC_DEFINE_UNQUOTED(P_SASL,2)
1046  elif test "x${HAS_SASL}" = "x1" ; then
1047    ENDLDLIBS="$ENDLDLIBS -lsasl"
1048    AC_DEFINE_UNQUOTED(P_SASL,1)
1049  fi
1050fi dnl disable_Sasl
1051AC_SUBST(HAS_SASL2)
1052AC_SUBST(HAS_SASL)
1053
1054
1055dnl ########################################################################
1056dnl check for SUN mediaLib library
1057
1058AC_ARG_ENABLE([mlib],
1059	      AS_HELP_STRING([--enable-mlib],[enable SUN mlib support]),
1060	      [enable_mlib=$enableval],
1061	      [enable_mlib=$default_mlib]
1062	     )
1063if test "$enable_mlib" = "no" ; then
1064  AC_MSG_NOTICE(SUN mlib disabled)
1065else
1066  HAS_MEDIALIB=no
1067  AC_CHECK_LIB(mlib, mlib_VideoColorJFIFYCC2RGB420_Nearest, HAS_MEDIALIB=yes, HAS_MEDIALIB=no)
1068  if test $HAS_MEDIALIB = yes; then
1069    AC_MSG_NOTICE(SUN mlib enabled)
1070    AC_DEFINE(P_MEDIALIB)
1071    ENDLDLIBS="-lmlib $ENDLDLIBS"
1072  else
1073    AC_MSG_ERROR(SUN mlib not found, 1)
1074  fi
1075fi
1076
1077dnl ########################################################################
1078dnl look for OpenLDAP (requires SASL)
1079
1080dnl MSWIN_DISPLAY    openldap,Open LDAP
1081dnl MSWIN_IF_FEATURE openldap,sasl
1082dnl MSWIN_CHECK_FILE openldap,include\ldap.h|OpenLDAP,P_LDAP=1
1083dnl MSWIN_DIR_SYMBOL openldap,LDAP_DIR
1084dnl MSWIN_CHECK_DIR  openldap,..\openldap\
1085dnl MSWIN_CHECK_DIR  openldap,..\external\openldap\
1086dnl MSWIN_CHECK_DIR  openldap,\openldap\
1087dnl MSWIN_CHECK_DIR  openldap,c:\openldap\
1088
1089AC_ARG_ENABLE([openldap],
1090	      AS_HELP_STRING([--disable-openldap],[disable OpenLDAP support]),
1091	      [enable_openldap=$enableval],
1092	      [enable_openldap=$default_openldap]
1093	     )
1094
1095HAS_OPENLDAP=
1096if test "$enable_openldap" = "no" ; then
1097  AC_MSG_NOTICE(OpenLDAP disabled)
1098else
1099  PTLIB_FIND_OPENLDAP([HAS_OPENLDAP=1], [HAS_OPENLDAP=])
1100  if test "x${HAS_OPENLDAP}" = "x1" ; then
1101    AC_DEFINE(P_LDAP, 1, "OpenLDAP found")
1102    ENDLDLIBS="$ENDLDLIBS $OPENLDAP_LIBS"
1103    STDCCFLAGS="$STDCCFLAGS $OPENLDAP_CFLAGS"
1104  fi
1105fi
1106
1107AC_SUBST(HAS_OPENLDAP)
1108
1109dnl ########################################################################
1110dnl look for OpenSSL
1111dnl check for environment variable, then assume standard system install
1112dnl this process is made incredibly more complex by the fact that RedHad 9
1113dnl is completely fscked. The default OpenSSL installation requires Kerberos,
1114dnl even when Kerberos is not installed, requiring an explicit #define to
1115dnl make it compile
1116dnl As if that is not enough, autoconf gets very confused if configure.in
1117dnl contains a AC_CHECK_HEADER directive that never gets used. So we have
1118dnl to ensure that it is always called
1119
1120dnl MSWIN_DISPLAY    openssl,Open SSL
1121dnl MSWIN_CHECK_FILE openssl,inc32\openssl\ssl.h,P_OSSL=1
1122dnl MSWIN_CHECK_FILE openssl,include\openssl\ssl.h,P_OSSL=2
1123dnl MSWIN_FIND_FILE  openssl,P_OSSL_AES,aes.h,...
1124dnl MSWIN_DIR_SYMBOL openssl,SSL_DIR
1125dnl MSWIN_CHECK_DIR  openssl,..\openssl\
1126dnl MSWIN_CHECK_DIR  openssl,..\external\openssl\
1127dnl MSWIN_CHECK_DIR  openssl,\openssl\
1128dnl MSWIN_CHECK_DIR  openssl,\libs\openssl\
1129dnl MSWIN_CHECK_DIR  openssl,\Program Files\OpenSSL\
1130dnl MSWIN_CHECK_DIR  openssl,\Program Files (x86)\OpenSSL\
1131dnl MSWIN_CHECK_DIR  openssl,c:\openssl\
1132dnl MSWIN_CHECK_DIR  openssl,c:\OpenSSL-Win32
1133dnl MSWIN_CHECK_DIR  openssl,c:\OpenSSL-Win64
1134
1135AC_ARG_ENABLE([openssl],
1136	      AS_HELP_STRING([--disable-openssl],[disable OpenSSL support]),
1137	      [enable_openssl=$enableval],
1138	      [enable_openssl=$default_openssl]
1139	     )
1140
1141if test "$enable_openssl" = "no" ; then
1142  AC_MSG_NOTICE(disabled)
1143else
1144  PKG_CHECK_MODULES([OPENSSL],
1145                    [openssl],
1146                    [
1147                     HAS_OPENSSL=1
1148                     AC_DEFINE(P_OSSL, 1, "OpenSSL found")
1149                     PTLIB_CHECK_OPENSSL_AES([
1150                                              AC_DEFINE([P_OSSL_AES], [1],[openssl with AES yes])
1151                                              HAS_OPENSSL_AES=1
1152                                            ])
1153                     PTLIB_OPENSSL_CONST( [AC_DEFINE([P_SSL_USE_CONST], [1], [SSL with const])] )
1154                     STDCCFLAGS="$STDCCFLAGS ${OPENSSL_CFLAGS}"
1155                     ENDLDLIBS="$ENDLDLIBS ${OPENSSL_LIBS}"
1156dnl                      PKG_REQUIRES="$PKG_REQUIRES ssl"
1157                    ],
1158                    [HAS_OPENSSL=])
1159fi
1160
1161AC_SUBST(HAS_OPENSSL)
1162
1163dnl For now...
1164AC_SUBST(P_STATIC_ENDLDLIBS)
1165AC_SUBST(P_STATIC_LDFLAGS)
1166
1167
1168
1169dnl ########################################################################
1170dnl check for variants of d2i_DHparams_bio from OpenSSL
1171
1172
1173AC_MSG_CHECKING(for d2i_DHparams_bio variants)
1174AC_TRY_COMPILE([#include <openssl/dh.h>
1175                #include <openssl/asn1.h>],
1176               [ BIO * in; d2i_DHparams_bio(in, NULL);],,P_d2i_DHparams_bio_OLD=1)
1177if test "x$P_d2i_DHparams_bio_OLD" = "x1" ; then
1178  AC_MSG_RESULT(old)
1179  AC_DEFINE(P_d2i_DHparams_bio_OLD, 1)
1180else
1181  AC_MSG_RESULT(new)
1182fi
1183
1184
1185
1186dnl ########################################################################
1187dnl look for expat XML parser
1188
1189dnl MSWIN_DISPLAY    expat,Expat XML
1190dnl MSWIN_CHECK_FILE expat,lib\expat.h,P_WINEXPAT=1
1191dnl MSWIN_CHECK_FILE expat,Source\lib\expat.h,P_WINEXPAT=2
1192dnl MSWIN_DIR_SYMBOL expat,EXPAT_DIR
1193dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_DEBUG,expat.lib,Debug
1194dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_RELEASE,expat.lib,Release
1195dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_DEBUG,libexpat.lib,win32/bin/Debug
1196dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_RELEASE,libexpat.lib,win32/bin/Release
1197dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_DEBUG,libexpatMT.lib,win32/bin/Debug
1198dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_W32_RELEASE,libexpatMT.lib,win32/bin/Release
1199dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_WM5_DEBUG,expat.lib,wm5/Debug
1200dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_WM5_RELEASE,expat.lib,wm5/Release
1201dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_WM6_DEBUG,expat.lib,wm6/Debug
1202dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_WM6_RELEASE,expat.lib,wm6/Release
1203dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_V1,libexpat.lib,lib
1204dnl MSWIN_FIND_FILE  expat,P_EXPAT_LIBRARY_V2,libexpatMT.lib,bin
1205dnl MSWIN_CHECK_DIR  expat,..\expat\
1206dnl MSWIN_CHECK_DIR  expat,..\external\expat\
1207dnl MSWIN_CHECK_DIR  expat,\expat
1208dnl MSWIN_CHECK_DIR  expat,c:\expat\
1209dnl MSWIN_CHECK_DIR  expat,\libs\expat\
1210dnl MSWIN_CHECK_DIR  expat,\Program Files\Expat 2.*
1211dnl MSWIN_CHECK_DIR  expat,\Program Files (x86)\Expat 2.*
1212
1213AC_ARG_ENABLE([expat],
1214	      AS_HELP_STRING([--disable-expat],[disable expat XML support]),
1215	      [enable_expat=$enableval],
1216	      [enable_expat=$default_expat]
1217	     )
1218
1219
1220if test "$enable_expat" = "no" ; then
1221  AC_MSG_NOTICE(Expat disabled)
1222else
1223  PTLIB_FIND_EXPAT([HAS_EXPAT=1], [HAS_EXPAT=])
1224
1225  if test "x${HAS_EXPAT}" = "x1" ; then
1226    AC_DEFINE(P_OEXPAT, 1, "expat found")
1227    STDCCFLAGS="$STDCCFLAGS $EXPAT_CFLAGS"
1228    ENDLDLIBS="$ENDLDLIBS $EXPAT_LIBS"
1229  fi
1230fi
1231AC_SUBST(HAS_EXPAT)
1232
1233
1234dnl ########################################################################
1235dnl look for Lua library
1236dnl MSWIN_DISPLAY    lua,Lua interpreter
1237dnl MSWIN_CHECK_FILE lua,include\lua.h,P_LUA=1
1238dnl MSWIN_DIR_SYMBOL lua,LUA_DIR
1239dnl MSWIN_CHECK_DIR  lua,\Program Files\Lua\5.1
1240dnl MSWIN_CHECK_DIR  lua,\Program Files (x86)\Lua\5.1
1241
1242AC_ARG_ENABLE([lua],
1243	      AS_HELP_STRING([--disable-lua],[disable Lua script support]),
1244	      [enable_lua=$enableval],
1245	      [enable_lua=$default_lua]
1246	     )
1247
1248if test "$enable_lua" = "no" ; then
1249  AC_MSG_NOTICE(Lua disabled)
1250else
1251  PTLIB_FIND_LUA([HAS_LUA=1], [HAS_LUA=])
1252
1253  if test "x${HAS_LUA}" = "x1" ; then
1254    AC_DEFINE(P_LUA, 1, "Lua found")
1255    STDCCFLAGS="$STDCCFLAGS $LUA_CFLAGS"
1256    ENDLDLIBS="$ENDLDLIBS $LUA_LIBS"
1257  fi
1258fi
1259AC_SUBST(HAS_LUA)
1260
1261
1262
1263
1264dnl ########################################################################
1265dnl look for IPV6 functions
1266
1267dnl MSWIN_DISPLAY    ipv6,IPv6 Support
1268dnl MSWIN_CHECK_FILE ipv6,include\ws2tcpip.h,P_HAS_IPV6=1
1269
1270AC_ARG_ENABLE(ipv6, AS_HELP_STRING([--enable-ipv6],[enable IPV6 support]))
1271
1272if test "${enable_ipv6}z" = "z" ; then
1273  enable_ipv6=$default_ipv6
1274fi
1275
1276HAS_IPV6=
1277
1278if test "$enable_ipv6" = "no" ; then
1279  AC_MSG_NOTICE(IPV6 disabled)
1280else
1281  AC_MSG_CHECKING(for IPv6 support)
1282  AC_TRY_COMPILE([#include <sys/types.h>
1283                  #include <netinet/in.h>],
1284                  [struct sockaddr_in6 s; s.sin6_scope_id = 0;], HAS_IPV6=yes, HAS_IPV6=no)
1285  if test $HAS_IPV6 = no ; then
1286    AC_MSG_RESULT(no)
1287  else
1288    AC_TRY_COMPILE([#include <sys/socket.h>
1289                     #include <netdb.h>],
1290                     [getnameinfo(0, 0, 0, 0, 0, 0, 0);], HAS_IPV6=yes, HAS_IPV6=no)
1291    if test $HAS_IPV6 = no ; then
1292      AC_MSG_RESULT(no)
1293    else
1294      AC_MSG_RESULT(yes)
1295      AC_DEFINE(P_HAS_IPV6, 1, "IPV6 enabled")
1296      HAS_IPV6=1
1297    fi
1298  fi
1299fi
1300AC_SUBST(HAS_IPV6)
1301
1302HAS_INET_NTOP=
1303AC_MSG_CHECKING(for inet_ntop)
1304AC_TRY_COMPILE([#include <sys/types.h>
1305                #include <netinet/in.h>
1306                #include <arpa/inet.h>],
1307                [int af; void * src; char * dst; socklen_t len; inet_ntop(af, src, dst, len);], HAS_INET_NTOP=yes, HAS_INET_NTOP=no)
1308if test $HAS_INET_NTOP = no ; then
1309  AC_MSG_RESULT(no)
1310else
1311  AC_DEFINE(P_HAS_INET_NTOP, 1)
1312  AC_MSG_RESULT(yes)
1313fi
1314
1315dnl ########################################################################
1316dnl check for enabling config file support
1317dnl MSWIN_DISPLAY    configfile,Config file protocol support
1318dnl MSWIN_DEFINE     configfile,P_CONFIG_FILE
1319
1320PTLIB_SIMPLE_OPTION([configfile], [CONFIG_FILE], [enable config file support])
1321
1322dnl ########################################################################
1323dnl check for URL support
1324dnl MSWIN_DISPLAY    url,URL Support
1325dnl MSWIN_DEFINE     url,P_URL
1326
1327PTLIB_SIMPLE_OPTION([url], [URL], [enable URL support])
1328
1329dnl ########################################################################
1330dnl check for HTTP support
1331dnl MSWIN_DISPLAY    http,HTTP Support
1332dnl MSWIN_DEFINE     http,P_HTTP
1333dnl MSWIN_IF_FEATURE http,url
1334
1335PTLIB_SIMPLE_OPTION([http], [HTTP], [enable HTTP support], [HAS_URL])
1336
1337dnl ########################################################################
1338dnl check for HTTPFORMS support
1339dnl MSWIN_DISPLAY    httpforms,HTTP forms Support
1340dnl MSWIN_DEFINE     httpforms,P_HTTPFORMS
1341dnl MSWIN_IF_FEATURE httpforms,http&configfile
1342
1343PTLIB_SIMPLE_OPTION([httpforms], [HTTPFORMS], [enable HTTP forms support], [HAS_HTTP], [HAS_CONFIG_FILE])
1344
1345
1346dnl ########################################################################
1347dnl check for HTTPSVC support
1348dnl MSWIN_DISPLAY    httpsvc,HTTP service Support
1349dnl MSWIN_DEFINE     httpsvc,P_HTTPSVC
1350dnl MSWIN_IF_FEATURE httpsvc,httpforms
1351
1352PTLIB_SIMPLE_OPTION([httpsvc], [HTTPSVC], [enable HTTP server support], [HAS_HTTPFORMS])
1353
1354dnl ########################################################################
1355dnl Jabber
1356dnl MSWIN_DISPLAY    jabber,Jabber
1357dnl MSWIN_DEFINE     jabber,P_JABBER
1358dnl MSWIN_IF_FEATURE jabber,expat
1359
1360PTLIB_SIMPLE_OPTION([jabber], [JABBER], [enable Jabber support], [HAS_EXPAT])
1361
1362dnl ########################################################################
1363dnl VXML
1364dnl MSWIN_DISPLAY    vxml,VXML Support
1365dnl MSWIN_DEFINE     vxml,P_VXML
1366dnl MSWIN_IF_FEATURE vxml,http&expat
1367
1368PTLIB_SIMPLE_OPTION([vxml], [VXML], [enable VXML support], [HAS_EXPAT], [HAS_HTTP])
1369
1370dnl ########################################################################
1371dnl XMLRPC
1372dnl MSWIN_DISPLAY    xmlrpc,XMLRPC Support
1373dnl MSWIN_DEFINE     xmlrpc,P_XMLRPC
1374dnl MSWIN_IF_FEATURE xmlrpc,http&expat
1375
1376PTLIB_SIMPLE_OPTION([xmlrpc], [XMLRPC], [enable XMLRPC support], [HAS_EXPAT], [HAS_HTTP])
1377
1378dnl ########################################################################
1379dnl SOAP
1380dnl MSWIN_DISPLAY    soap,SOAP Support
1381dnl MSWIN_DEFINE     soap,P_SOAP
1382dnl MSWIN_IF_FEATURE soap,http&expat
1383
1384PTLIB_SIMPLE_OPTION([soap], [SOAP], [enable SOAP support], [HAS_EXPAT], [HAS_HTTP])
1385
1386dnl ########################################################################
1387dnl MSWIN_DISPLAY       atl,Active Template Library
1388dnl MSWIN_CHECK_FILE    atl,atlbase.h,P_ATL=1
1389
1390dnl ########################################################################
1391dnl Speech
1392dnl MSWIN_DISPLAY       sapi,Speech API
1393dnl MSWIN_CHECK_FILE    sapi,include\sphelper.h,P_SAPI=1
1394dnl MSWIN_DEFINE        sapi,P_TTS
1395
1396
1397PTLIB_SIMPLE_OPTION([tts], [TTS], [enable Text-To-Speech server support])
1398
1399dnl ########################################################################
1400dnl check for enabling ASN support
1401dnl MSWIN_DISPLAY    asn,ASN Support
1402dnl MSWIN_DEFINE     asn,P_ASN
1403
1404PTLIB_SIMPLE_OPTION([asn], [ASN], [enable ASN decoding/encoding support])
1405
1406dnl ########################################################################
1407dnl check for enabling STUN support
1408dnl MSWIN_DISPLAY    stun,STUN Support
1409dnl MSWIN_DEFINE     stun,P_STUN
1410
1411PTLIB_SIMPLE_OPTION([stun], [STUN], [enable STUN support])
1412
1413dnl ########################################################################
1414dnl check for enabling PIPECHAN support
1415dnl MSWIN_DISPLAY    pipechan,pipe channel Support
1416dnl MSWIN_DEFINE     pipechan,P_PIPECHAN
1417
1418PTLIB_SIMPLE_OPTION([pipechan], [PIPECHAN], [enable pipechannel support])
1419
1420dnl ########################################################################
1421dnl check for enabling DTMF support
1422dnl MSWIN_DISPLAY  dtmf,DTMF encoding/decoding support
1423dnl MSWIN_DEFINE   dtmf,P_DTMF
1424
1425PTLIB_SIMPLE_OPTION([dtmf], [DTMF], [enable DTMF protocol support])
1426
1427dnl ########################################################################
1428dnl check for enabling SOCKS support
1429dnl MSWIN_DISPLAY    socks,SOCKS protocol support
1430dnl MSWIN_DEFINE     socks,P_SOCKS
1431
1432PTLIB_SIMPLE_OPTION([socks], [SOCKS], [enable SOCKS protocol support])
1433
1434dnl ########################################################################
1435dnl check for enabling FTP support
1436dnl MSWIN_DISPLAY    ftp,FTP protocol support
1437dnl MSWIN_DEFINE     ftp,P_FTP
1438
1439PTLIB_SIMPLE_OPTION([ftp], [FTP], [enable FTP protocol support])
1440
1441dnl ########################################################################
1442dnl check for enabling SNMP support
1443dnl MSWIN_DISPLAY    snmp,SNMP protocol support
1444dnl MSWIN_DEFINE     snmp,P_SNMP
1445
1446PTLIB_SIMPLE_OPTION([snmp], [SNMP], [enable SNMP protocol support])
1447
1448dnl ########################################################################
1449dnl check for enabling TELNET support
1450dnl MSWIN_DISPLAY    telnet,Telnet protocol support
1451dnl MSWIN_DEFINE     telnet,P_TELNET
1452
1453PTLIB_SIMPLE_OPTION([telnet], [TELNET], [enable TELNET protocol support])
1454
1455dnl ########################################################################
1456dnl check for enabling REMCONN support
1457dnl MSWIN_DISPLAY    remconn,remote connection support
1458dnl MSWIN_DEFINE     remconn,P_REMCONN
1459
1460PTLIB_SIMPLE_OPTION([remconn], [REMCONN], [enable remote connection support], [HAS_CONFIG_FILE])
1461
1462dnl ########################################################################
1463dnl check for enabling serial port handling
1464dnl MSWIN_DISPLAY    serial,Serial Support
1465dnl MSWIN_DEFINE     serial,P_SERIAL
1466
1467PTLIB_SIMPLE_OPTION([serial], [SERIAL], [enable serial port support])
1468
1469dnl ########################################################################
1470dnl check for POP3/SMTP support
1471dnl MSWIN_DISPLAY    pop3smtp,POP3/SMTP Support
1472dnl MSWIN_DEFINE     pop3smtp,P_POP3SMTP
1473
1474PTLIB_SIMPLE_OPTION([pop3smtp], [POP3SMTP], [enable POP3/SMTP support])
1475
1476dnl ########################################################################
1477dnl check for sound support
1478dnl MSWIN_DISPLAY audio,Sound support
1479dnl MSWIN_DEFINE  audio,P_AUDIO
1480
1481PTLIB_SIMPLE_OPTION([audio], [AUDIO], [enable audio support])
1482
1483dnl ########################################################################
1484dnl check for enabling WAVFILE support
1485dnl MSWIN_DISPLAY    wavfile,WAV file support
1486dnl MSWIN_DEFINE     wavfile,P_WAVFILE
1487
1488PTLIB_SIMPLE_OPTION([wavfile], [WAVFILE], [enable WAVFILE support], [HAS_AUDIO])
1489
1490
1491dnl ########################################################################
1492dnl look for QoS functions
1493
1494dnl MSWIN_DISPLAY    qos,QoS Support
1495dnl MSWIN_CHECK_FILE qos,include\qossp.h|QOS_DESTADDR,P_QOS=1
1496
1497PTLIB_SIMPLE_OPTION([qos], [QOS], [enable QOS support])
1498
1499dnl ########################################################################
1500dnl check for video support
1501dnl MSWIN_DISPLAY    video,Video Support
1502dnl MSWIN_DEFINE     video,P_VIDEO
1503
1504PTLIB_SIMPLE_OPTION([video], [VIDEO], [enable video device support])
1505if test "x${HAS_VIDEO}" != "x1" ; then
1506  AC_DEFINE([NO_VIDEO_CAPTURE], [], [No video capture])
1507fi
1508
1509dnl ########################################################################
1510dnl check for enabling video file support
1511dnl MSWIN_DISPLAY    vidfile,Video file support
1512dnl MSWIN_DEFINE     vidfile,P_VIDFILE
1513
1514PTLIB_SIMPLE_OPTION([vidfile], [VIDFILE], [enable video file support], [HAS_VIDEO])
1515
1516dnl ########################################################################
1517dnl check for enabling FFMpeg video file support
1518dnl MSWIN_DISPLAY    ffvdev,FFMpeg video file support
1519dnl MSWIN_DEFINE     ffvdev,P_FFVDEV
1520
1521PTLIB_SIMPLE_OPTION([ffvdev], [FFVDEV], [enable FFMpeg video file support], [HAS_FFVDEV], [HAS_PIPECHAN])
1522
1523dnl ########################################################################
1524dnl check for enabling app share support
1525dnl MSWIN_DISPLAY    appshare,Application share support
1526dnl MSWIN_DEFINE     appshare,P_APPSHARE
1527
1528PTLIB_SIMPLE_OPTION([appshare], [APPSHARE], [enable application sharing support], [HAS_VIDEO])
1529
1530dnl ########################################################################
1531dnl enable shared memory video devices (static video plugin)
1532
1533PTLIB_SIMPLE_OPTION([shmvideo], [SHM_VIDEO], [enable shared memory video devices])
1534
1535dnl ########################################################################
1536dnl look for SDL, but only if we have pthreads
1537
1538dnl MSWIN_DISPLAY    libsdl,Simple DirectMedia Layer
1539dnl MSWIN_CHECK_FILE libsdl,include\SDL.h,P_SDL=1
1540dnl MSWIN_CHECK_FILE libsdl,include\SDL\SDL.h,P_SDL=2
1541dnl MSWIN_DIR_SYMBOL libsdl,SDL_DIR
1542dnl MSWIN_FIND_FILE  libsdl,P_SDL_LIBRARY,SDL.lib,lib
1543dnl MSWIN_CHECK_DIR  libsdl,..\sdl*
1544dnl MSWIN_CHECK_DIR  libsdl,..\external\sdl*
1545dnl MSWIN_CHECK_DIR  libsdl,\sdl\
1546dnl MSWIN_CHECK_DIR  libsdl,c:\sdl\
1547dnl MSWIN_CHECK_DIR  libsdl,\Program Files (x86)\OSSBuild\GStreamer\v0.10.6\sdk
1548
1549AC_ARG_ENABLE([sdl],
1550	      AS_HELP_STRING([--disable-sdl],[disable SDL support]),
1551	      [enable_sdl=$enableval],
1552	      [enable_sdl=$default_sdl]
1553	     )
1554
1555HAS_SDL=
1556if test "x${HAS_VIDEO}" != "x1" ; then
1557    AC_MSG_NOTICE(SDL disabled due to disabled dependency HAS_VIDEO)
1558else
1559  if test "$enable_sdl" = "no" ; then
1560    AC_MSG_NOTICE(SDL disabled)
1561  else
1562    PKG_CHECK_MODULES([SDL],
1563                      [sdl],
1564                      [
1565                       HAS_SDL=1
1566                       AC_DEFINE(P_SDL, 1, "SDL found")
1567                       STDCCFLAGS="$STDCCFLAGS ${SDL_CFLAGS}"
1568                       LDFLAGS="$LDFLAGS `pkg-config --libs-only-L sdl`"
1569                       ENDLDLIBS="$ENDLDLIBS `pkg-config --libs-only-l sdl`"
1570                      ],[HAS_SDL=])
1571  fi
1572fi
1573AC_SUBST(HAS_SDL)
1574
1575
1576dnl ########################################################################
1577dnl check for video capture support.
1578dnl videodev.h on linux
1579dnl machine/ioctl_meteor on FreeBSD
1580dnl i386/ioctl_meteor on OpenBSD
1581dnl dev/ic/bt8xx on NetBSD
1582
1583HAS_VIDEO_CAPTURE=
1584if test "x${HAS_VIDEO}" = "x1" ; then
1585  if test "x${HAS_PLUGINS}" = "x1" ; then
1586    HAS_VIDEO_CAPTURE=1
1587  fi
1588  case "$target_os" in
1589    cygwin* | mingw* )
1590  	  PTLIB_FIND_DIRECTX([HAS_VIDEO_CAPTURE=1
1591	 	              ENDLDLIBS="$ENDLDLIBS ${DIRECTX_LIBS}"
1592			      STDCCFLAGS="$STDCCFLAGS ${DIRECTX_INCLUDES}"
1593                              HAS_DIRECTSHOW=1
1594                              HAS_DIRECTSOUND=1
1595			      AC_DEFINE(P_DIRECTSHOW, 1)
1596			      AC_DEFINE(P_DIRECTX, 1)
1597			      AC_DEFINE(P_DIRECTSOUND, 1)
1598		             ])
1599		;;
1600  esac
1601
1602  if test "${HAS_VIDEO_CAPTURE}z" = "z" ; then
1603    AC_MSG_NOTICE(No Video Capture support)
1604    AC_DEFINE([NO_VIDEO_CAPTURE], [], [No video capture])
1605  fi
1606
1607  dnl these are needed to pass through to plugin configure
1608  AC_ARG_ENABLE(v4l,      [  --enable-v4l            enable V4L video support])
1609  AC_ARG_ENABLE(v4l2,     [  --enable-v4l2           enable V4L2 video support])
1610  AC_ARG_ENABLE(bsdvideo, [  --enable-bsdvideo       enable BSD video support])
1611  AC_ARG_ENABLE(avc,      [  --enable-avc            enable IEEE1394/AVC video support])
1612  AC_ARG_ENABLE(dc,       [  --enable-dc             enable IEEE1394/DC video support])
1613fi
1614
1615AC_SUBST(HAS_DIRECTSHOW)
1616AC_SUBST(HAS_DIRECTSOUND)
1617AC_SUBST(HAS_VIDEO_CAPTURE)
1618
1619PTLIB_SIMPLE_OPTION([vfw], [VFW_CAPTURE], [enable video for windows capture], [HAS_VIDEO])
1620
1621if test "x${HAS_AUDIO}" = "x1" ; then
1622
1623  dnl these are needed to pass through to the plugin configure program
1624  AC_ARG_ENABLE(alsa,  [  --enable-alsa           enable ALSA audio support],enable_alsa=$enableval)
1625  AC_ARG_ENABLE(oss,   [  --enable-oss            enable OSS audio support],enable_oss=$enableval)
1626  AC_ARG_ENABLE(pulse, [  --enable-pulse          enable PULSE audio support],enable_pulse=$enableval)
1627fi
1628
1629
1630
1631dnl ########################################################################
1632dnl look for Direct Sound
1633
1634dnl MSWIN_DISPLAY    dsound,Direct Sound Support
1635dnl MSWIN_CHECK_FILE dsound,include\dsound.h,P_DIRECTSOUND=1
1636dnl MSWIN_FIND_FILE  dsound,P_DIRECTSOUND_DXERR_H,dxerr.h,include
1637dnl MSWIN_FIND_FILE  dsound,P_DIRECTSOUND_LIB,dsound.lib,lib
1638
1639
1640dnl ########################################################################
1641dnl look for Direct Show (video)
1642
1643dnl MSWIN_DISPLAY    dshow,Direct Show Support
1644dnl MSWIN_CHECK_FILE dshow,include\dshow.h,P_DIRECTSHOW=1
1645dnl MSWIN_FIND_FILE  dshow,P_DIRECTSHOW_QEDIT_H,Qedit.h,include
1646
1647
1648dnl ########################################################################
1649dnl look for MEMORY_CHECK enabled.
1650
1651AC_ARG_ENABLE(memcheck,
1652       AS_HELP_STRING([--enable-memcheck],[enable leak testing code (off by default)]),
1653       memcheck=$enableval)
1654
1655if test "$memcheck" = "yes" ; then
1656  AC_DEFINE(PMEMORY_CHECK, 1)
1657  AC_MSG_NOTICE(Memory checking enabled)
1658fi
1659
1660
1661dnl ########################################################################
1662dnl look for ODBC code
1663
1664dnl MSWIN_DISPLAY    odbc,ODBC support
1665dnl MSWIN_CHECK_FILE odbc,include\odbcinst.h,P_ODBC=1
1666
1667AC_ARG_ENABLE([odbc],
1668	      AS_HELP_STRING([--disable-odbc],[disable ODBC support]),
1669	      [enable_odbc=$enableval],
1670	      [enable_odbc=$default_odbc]
1671	     )
1672
1673if test "$enable_odbc" = "no" ; then
1674  AC_MSG_NOTICE(ODBC disabled)
1675else
1676  PTLIB_FIND_ODBC([HAS_ODBC=1], [HAS_ODBC=])
1677
1678  if test "x${HAS_ODBC}" = "x1" ; then
1679    AC_DEFINE(P_ODBC, 1, "ODBC found")
1680    STDCCFLAGS="$STDCCFLAGS $ODBC_CFLAGS"
1681    ENDLDLIBS="$ENDLDLIBS $ODBC_LIBS"
1682    AC_MSG_NOTICE(ODBC support enabled)
1683  fi
1684fi
1685AC_SUBST(HAS_ODBC)
1686
1687dnl ########################################################################
1688dnl output make directives
1689
1690dnl resolver needs to be at the end
1691if test "${HAS_RESOLVER:-unset}" != "unset" ; then
1692    ENDLDLIBS="$ENDLDLIBS ${RESOLVER_LIBS}"
1693dnl     PKG_LIBS="$PKG_LIBS ${RESOLVER_LIBS}"
1694fi
1695
1696dnl dl needs to be at the end
1697if test "x${HAS_LIBDL}" = "x1" ; then
1698  ENDLDLIBS="$ENDLDLIBS $DL_LIBS"
1699dnl   PKG_LIBS="$PKG_LIBS $DL_LIBS"
1700  STDCCFLAGS="$STDCCFLAGS $DL_CFLAGS"
1701dnl   PKG_CFLAGS="$PKG_CFLAGS $DL_CFLAGS"
1702fi
1703
1704
1705dnl ########################################################################
1706dnl this reduces the size of all executables and libraries
1707
1708case "$target_os" in
1709  solaris* | sunos* ) ;;
1710  *)
1711    PTLIB_SIMPLE_OPTION([exceptions], [EXCEPTIONS], [enable C++ exceptions])
1712
1713    if test "x${HAS_EXCEPTIONS}" = "x1" ; then
1714      STDCCFLAGS="$STDCCFLAGS -fexceptions"
1715    else
1716      STDCCFLAGS="$STDCCFLAGS -fno-exceptions"
1717    fi
1718    ;;
1719esac
1720
1721
1722dnl Forward compatibility for pkg-config options
1723AC_DEFUN([PTLIB_NEW_OPTION],
1724         [
1725          if test "x${HAS_$1}" = "x1" ; then
1726            AC_SUBST([PTLIB_$1], [yes])
1727          else
1728            AC_SUBST([PTLIB_$1], [no])
1729          fi
1730         ]
1731        )
1732
1733PTLIB_NEW_OPTION(IPV6)
1734PTLIB_NEW_OPTION(RESOLVER)
1735PTLIB_NEW_OPTION(OPENSSL)
1736PTLIB_NEW_OPTION(OPENSSL_AES)
1737PTLIB_NEW_OPTION(OPENLDAP)
1738PTLIB_NEW_OPTION(SASL)
1739PTLIB_NEW_OPTION(SASL2)
1740PTLIB_NEW_OPTION(EXPAT)
1741PTLIB_NEW_OPTION(REGEX)
1742PTLIB_NEW_OPTION(SDL)
1743PTLIB_NEW_OPTION(VIDEO_CAPTURE)
1744
1745PTLIB_NEW_OPTION(TTS)
1746PTLIB_NEW_OPTION(ASN)
1747PTLIB_NEW_OPTION(STUN)
1748PTLIB_NEW_OPTION(PIPECHAN)
1749PTLIB_NEW_OPTION(DTMF)
1750PTLIB_NEW_OPTION(WAVFILE)
1751PTLIB_NEW_OPTION(SOCKS)
1752PTLIB_NEW_OPTION(FTP)
1753PTLIB_NEW_OPTION(SNMP)
1754PTLIB_NEW_OPTION(TELNET)
1755PTLIB_NEW_OPTION(REMCONN)
1756PTLIB_NEW_OPTION(SERIAL)
1757PTLIB_NEW_OPTION(POP3SMTP)
1758PTLIB_NEW_OPTION(AUDIO)
1759PTLIB_NEW_OPTION(VIDEO)
1760PTLIB_NEW_OPTION(SHM_VIDEO)
1761
1762PTLIB_NEW_OPTION(VXML)
1763PTLIB_NEW_OPTION(JABBER)
1764PTLIB_NEW_OPTION(XMLRPC)
1765PTLIB_NEW_OPTION(SOAP)
1766PTLIB_NEW_OPTION(URL)
1767PTLIB_NEW_OPTION(HTTP)
1768PTLIB_NEW_OPTION(HTTPFORMS)
1769PTLIB_NEW_OPTION(HTTPSVC)
1770PTLIB_NEW_OPTION(CONFIG_FILE)
1771PTLIB_NEW_OPTION(VIDFILE)
1772PTLIB_NEW_OPTION(FFVDEV)
1773PTLIB_NEW_OPTION(ODBC)
1774
1775dnl /Forward compatibility for pkg-config options
1776
1777dnl ########################################################################
1778dnl final declarations
1779
1780AC_SUBST(CC)
1781AC_SUBST(CXX)
1782AC_SUBST(STDCCFLAGS)
1783AC_SUBST(STDCXXFLAGS)
1784AC_SUBST(OPTSTDCCFLAGS)
1785AC_SUBST(LDFLAGS)
1786AC_SUBST(ENDLDLIBS)
1787AC_SUBST(DEBUG_FLAG)
1788AC_SUBST(OSTYPE)
1789AC_SUBST(MACHTYPE)
1790AC_PROG_INSTALL
1791
1792AC_CONFIG_FILES(make/ptbuildopts.mak)
1793AC_CONFIG_FILES([make/ptlib-config], [chmod a+x make/ptlib-config])
1794AC_CONFIG_FILES(Makefile)
1795AC_CONFIG_FILES(ptlib_cfg.dxy)
1796AC_CONFIG_FILES(ptlib.pc)
1797
1798dnl ########################################################################
1799dnl output header file
1800AC_CONFIG_HEADERS(include/ptbuildopts.h)
1801
1802AC_OUTPUT()
1803