Added Derek's new IAX2 jitter buffer to MSVC build
[opal.git] / configure.ac
bloba0160dab8f845d273de03845db7d314c7a573817
1 AC_INIT(include/opal/manager.h)
3 AC_PROG_CC
4 AC_PROG_CXX
6 dnl this must be updated for every minor revision, and for
7 dnl builds when and as necessary
8 REQUIRED_PWLIB_MAJOR=1
9 REQUIRED_PWLIB_MINOR=11
10 REQUIRED_PWLIB_BUILD=0
12 dnl ########################################################################
13 dnl set the OPAL directory to the current directory
15 OPALDIR=`pwd`
16 AC_SUBST(OPALDIR)
18 dnl ########################################################################
19 dnl set the PREFIX accordingly
20 if test "x$prefix" = "xNONE"; then
21    INSTALLPREFIX="/usr/local"
22 else
23    INSTALLPREFIX="${prefix}"
26 AC_SUBST(INSTALLPREFIX)
28 dnl ########################################################################
29 dnl set LIBDIR accordingly
30 LIBDIR="${libdir}"
32 AC_SUBST(LIBDIR)
34 dnl ########################################################################
35 dnl extract the OPAL version
37 dnl MSWIN_DISPLAY version,Version
38 dnl MSWIN_VERSION version,OPAL_MAJOR=MAJOR_VERSION
39 dnl MSWIN_VERSION version,OPAL_MINOR=MINOR_VERSION
40 dnl MSWIN_VERSION version,OPAL_BUILD=BUILD_NUMBER
41 dnl MSWIN_VERSION version,OPAL_VERSION=VERSION
43 MAJOR_VERSION=`cat ${OPALDIR}/version.h | grep MAJOR_VERSION | cut -f3 -d' '`
44 MINOR_VERSION=`cat ${OPALDIR}/version.h | grep MINOR_VERSION | cut -f3 -d' '`
45 BUILD_NUMBER=`cat ${OPALDIR}/version.h | grep BUILD_NUMBER | cut -f3 -d' '`
46 OPAL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${BUILD_NUMBER}"
47 AC_DEFINE_UNQUOTED(OPAL_MAJOR,   ${MAJOR_VERSION})
48 AC_DEFINE_UNQUOTED(OPAL_MINOR,   ${MINOR_VERSION})
49 AC_DEFINE_UNQUOTED(OPAL_BUILD,   ${BUILD_NUMBER})
50 AC_DEFINE_UNQUOTED(OPAL_VERSION, "$OPAL_VERSION")
52 AC_MSG_NOTICE(Opal version is ${OPAL_VERSION});
54 #use to set the version in opal.pc
55 AC_SUBST(OPAL_VERSION)
57 dnl ########################################################################
58 dnl look for ptlib, use a preference order of explicit PWLIBDIR, directory
59 dnl at same level, home directory, /usr/local or /usr.
61 if test "${PWLIBDIR:-unset}" != "unset" ; then
62   AC_CHECK_FILE(${PWLIBDIR}/version.h, HAS_PTLIB=1)
64 if test "${HAS_PTLIB:-unset}" = "unset" ; then
65   AC_CHECK_FILE(${OPALDIR}/../pwlib/version.h, HAS_PTLIB=1)
66   if test "${HAS_PTLIB:-unset}" != "unset" ; then
67     PWLIBDIR="${OPALDIR}/../pwlib"
68   else
69     AC_CHECK_FILE(${HOME}/pwlib/include/ptlib.h, HAS_PTLIB=1)
70     if test "${HAS_PTLIB:-unset}" != "unset" ; then
71       PWLIBDIR="${HOME}/pwlib"
72     else
73       AC_CHECK_FILE(/usr/local/include/ptlib.h, HAS_PTLIB=1)
74       if test "${HAS_PTLIB:-unset}" != "unset" ; then
75         AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/local/bin)
76       else
77         AC_CHECK_FILE(/usr/include/ptlib.h, HAS_PTLIB=1)
78         if test "${HAS_PTLIB:-unset}" != "unset" ; then
79           AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/share/pwlib/make/)
80         fi
81       fi
82     fi
83   fi
86 if test "${HAS_PTLIB:-unset}" = "unset" ; then
87   AC_MSG_ERROR("Cannot find pwlib - please install or set PWLIBDIR and try again")
90 if test "${PWLIBDIR:-unset}" = "unset" ; then
91   if test "${PTLIB_CONFIG:-unset}" = "unset" ; then
92     AC_MSG_ERROR("Cannot find ptlib-config - please install and try again")
93   fi
94   PWLIBDIR=`$PTLIB_CONFIG --prefix`
97 if test "x$PWLIBDIR" = "x/usr" -o "x$PWLIBDIR" = "x/usr/"; then
98   PWLIBDIR="/usr/share/pwlib/"
100 if test "x$PWLIBDIR" = "x/usr/local" -o "x$PWLIBDIR" = "x/usr/"; then
101   PWLIBDIR="/usr/local/share/pwlib/"
103 AC_SUBST(PWLIBDIR)
105 echo "PWLib prefix set to.... $PWLIBDIR"
107 if test "${PWLIBDIR:-unset}" = "unset" ; then
108   PWVERSION=`$PTLIB_CONFIG --version`
109   PW_MAJOR_VERSION=`echo $PW_VERSION | cut -d'.' -f1`
110   PW_MINOR_VERSION=`echo $PW_VERSION | cut -d'.' -f2`
111   PW_BUILD_NUMBER=`echo $PW_VERSION | cut -d'.' -f3`
112   
113 else
114   PW_MAJOR_VERSION=`cat ${PWLIBDIR}/version.h | grep MAJOR_VERSION | cut -f3 -d' '`
115   PW_MINOR_VERSION=`cat ${PWLIBDIR}/version.h | grep MINOR_VERSION | cut -f3 -d' '`
116   PW_BUILD_NUMBER=`cat ${PWLIBDIR}/version.h | grep BUILD_NUMBER | cut -f3 -d' '`
117   PWVERSION="${PW_MAJOR_VERSION}.${PW_MINOR_VERSION}.${PW_BUILD_NUMBER}"
120 AC_ARG_ENABLE(versioncheck,
121                 [  --disable-versioncheck    disable PWLib version check],
122                 PWLIB_VERSION_CHECK=$enableval)
124 AC_MSG_CHECKING(Checking PWLib version ${PWVERSION})
125 if test "${PWLIB_VERSION_CHECK}x" = "nox" ; then
126   AC_MSG_RESULT(check disabled)
127 else
128   if test $PW_MAJOR_VERSION -lt $REQUIRED_PWLIB_MAJOR ; then
129     AC_MSG_ERROR(Major version less than required $REQUIRED_PWLIB_MAJOR)
130   fi
131   if test $PW_MINOR_VERSION -lt $REQUIRED_PWLIB_MINOR ; then
132     AC_MSG_ERROR(Minor version less than required $REQUIRED_PWLIB_MINOR)
133   fi
134   if test $PW_BUILD_NUMBER -lt $REQUIRED_PWLIB_BUILD ; then
135     AC_MSG_ERROR(Build version less than required $REQUIRED_PWLIB_BUILD)
136   fi
137   AC_MSG_RESULT(ok)
140 AC_SUBST(PWLIBDIR)
142 dnl ########################################################################
143 dnl get the gcc version
145 if test x$GXX = xyes ; then
146   USE_GCC=yes
147   gcc_version=`$CXX -dumpversion`
148   AC_MSG_NOTICE(gcc version is $gcc_version);
149   GXX_MAJOR=`echo $gcc_version | sed 's/\..*$//'`
150   GXX_MINOR=[`echo $gcc_version | sed -e 's/[0-9][0-9]*\.//' -e 's/\..*$//'`]
151   GXX_PATCH=[`echo $gcc_version | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.//' -e 's/\..*$//'`]
153   dnl cannot compile for less than gcc 3
154   AC_MSG_CHECKING(checking if gcc version is valid)
155   if test ${GXX_MAJOR} -lt 3 ; then
156     AC_MSG_RESULT(no)
157     AC_MSG_ERROR([OPAL requires gcc version 3 or later])
158   else
159     AC_MSG_RESULT(yes)
160   fi
164 dnl ########################################################################
165 dnl Look for system libspeex
166 localspeex="xxx"
167 AC_ARG_ENABLE(localspeex,
168        [  --enable-localspeex     use local version of Speex library rather than system version],
169        localspeex=$enableval)
171 AC_CHECK_SIZEOF(short)
172 AC_CHECK_SIZEOF(int)
173 AC_CHECK_SIZEOF(long)
174 AC_CHECK_SIZEOF(long long)
176 case 2 in
177         $ac_cv_sizeof_short) SIZE16="short";;
178         $ac_cv_sizeof_int) SIZE16="int";;
179 esac
181 case 4 in
182         $ac_cv_sizeof_int) SIZE32="int";;
183         $ac_cv_sizeof_long) SIZE32="long";;
184         $ac_cv_sizeof_short) SIZE32="short";;
185 esac
187 AC_SUBST(SIZE16)
188 AC_SUBST(SIZE32)
190 OPAL_HAVE_SPEEX_H=
191 OPAL_HAVE_SPEEX_SPEEX_H=
192 AC_CHECK_HEADERS("speex.h", OPAL_HAVE_SPEEX_H=1)
193 if test "${OPAL_HAVE_SPEEX_H}x" != "x" ; then
194   AC_DEFINE(OPAL_HAVE_SPEEX_H)
195 else
196   AC_CHECK_HEADERS("speex/speex.h", OPAL_HAVE_SPEEX_SPEEX_H=1)
197   if test "${OPAL_HAVE_SPEEX_SPEEX_H}x" != "x" ; then
198     AC_DEFINE(OPAL_HAVE_SPEEX_SPEEX_H)
199   fi
202 if test "${localspeex}" = "yes" ; then
203   AC_MSG_NOTICE(Forcing use of OPAL Speex sources)
204 elif test "${localspeex}" = "no" ; then
205   AC_MSG_NOTICE(Forcing use of system Speex library)
206   AC_DEFINE(OPAL_SYSTEM_SPEEX, 1)
207   AC_SUBST(OPAL_SYSTEM_SPEEX, 1)
208 else
209   AC_CHECK_LIB(speex, speex_encoder_destroy, SPEEX=1)
210   if test "${SPEEX}x" != "x" ; then
211     AC_CHECK_LIB(speex, speex_encode_int, SPEEX=1, unset SPEEX)
212   fi
213   if test "x$SPEEX" = "x" -o \( "${OPAL_HAVE_SPEEX_H}x" = "x" -a "${OPAL_HAVE_SPEEX_SPEEX_H}x" = "x" \); then
214     AC_MSG_NOTICE(Forcing use of OPAL Speex library)
215   else
216     AC_MSG_CHECKING(system Speex version)
217     if test "${OPAL_HAVE_SPEEX_H}x" != "x" ; then
218       echo "#include <speex.h>" > t.c 
219       echo "#include <speex_header.h>" >> t.c
220     else
221       echo "#include <speex/speex.h>" > t.c 
222       echo "#include <speex/speex_header.h>" >> t.c
223     fi
224     cat >> t.c <<C_FILE
225     #include <stdio.h>
226     int main(int argc,char *argv[])
227     {
228       SpeexHeader header;
229       speex_init_header(&header, 1, 1, &speex_nb_mode);
230       printf("%s\n", header.speex_version);
231     }
232 C_FILE
233     cc -o t t.c -lspeex > /dev/null 2>&1
234     if test \! -x t ; then
235       AC_MSG_RESULT(cannot determine - using OPAL version)
236     else
237       SYSVER=`./t`
238       AC_MSG_RESULT($SYSVER)
239       AC_MSG_CHECKING(library Speex version)
240       LIBVER=`grep "#define SPEEX_VERSION" ./src/codec/speex/libspeex/misc.h | sed -e 's/^.*[Ss][Pp][Ee][Ee][Xx]\-//' -e 's/\"//' -e 's/\/.*//'`
241       AC_MSG_RESULT($LIBVER)
242       AC_MSG_CHECKING(Speex versions)
243       cat > t.pl <<P_FILE
244       [
245       \$sysver = @ARGV[0];
246       \$libver = @ARGV[1];
247       @lib = split /\./, \$libver;
248       while (@lib < 3) {
249         @lib[0+@lib] = "0";
250       }
251       @sys = split /\./, \$sysver;
252       while (@sys < 3) {
253         @sys[0+@sys] = "0";
254       }
255       \$i = 0;
256       while (\$i < 3) {
257         if (@sys[\$i] < @lib[\$i]) {
258           print "0";
259           die;
260         }
261         \$i++;
262       }
263       print "1";
264       ]
265 P_FILE
266       SPEEX=`perl t.pl $SYSVER $LIBVER`
267       rm t.pl
268       if test "x$SPEEX" = "x0" ; then
269         AC_MSG_RESULT(OPAL version is more recent)
270       else
271         AC_MSG_RESULT(system version is more recent)
272         AC_DEFINE(OPAL_SYSTEM_SPEEX, 1)
273         AC_SUBST(OPAL_SYSTEM_SPEEX, 1)
274         AC_MSG_CHECKING(Speex noise type)
275         if test "${OPAL_HAVE_SPEEX_H}x" != "x" ; then
276           echo "#include <speex.h>" > t.c
277           echo "#include <speex_preprocess.h>" >> t.c
278         else
279           echo "#include <speex/speex.h>" > t.c
280           echo "#include <speex/speex_preprocess.h>" >> t.c
281         fi
282         cat >> t.c <<C_FILE
283           #include <stdio.h>
284           int main(int argc,char *argv[])
285           {
286              struct SpeexPreprocessState *st;
287              spx_int16_t *x;
288              float *echo;
289              speex_preprocess(st, x, echo);
290           }
291 C_FILE
292         rm -f t
293         cc -Werror -o t t.c -lspeex > /dev/null 2>&1
294         if test \! -x t ; then
295           AC_MSG_RESULT(spx_int32_t)
296         else
297           AC_MSG_RESULT(float)
298           AC_DEFINE(OPAL_SPEEX_FLOAT_NOISE)
299         fi
300       fi
301     fi
302     rm -f t t.c
303   fi
306 AC_SUBST(OPAL_HAVE_SPEEX_SPEEX_H)
308 dnl ########################################################################
309 dnl enable audio, video, SIP, H.323 and IAX
311 dnl MSWIN_DISPLAY audio,Audio
312 dnl MSWIN_DEFINE  audio,OPAL_AUDIO
314 audio=yes
315 AC_ARG_ENABLE(audio,
316        [  --disable-audio         disable audio codec support],
317        audio=$enableval)
318 AC_MSG_CHECKING(audio codec support)
319 if test "$audio" = "yes" ; then
320   AC_SUBST(OPAL_AUDIO, 1)
321   AC_DEFINE(OPAL_AUDIO)
322   AC_MSG_RESULT(enabled)
323 else
324   AC_MSG_RESULT(disabled)
328 dnl MSWIN_DISPLAY video,Video
329 dnl MSWIN_DEFINE  video,OPAL_VIDEO
331 video=yes
332 AC_ARG_ENABLE(video,
333        [  --disable-video         disable video codec support],
334        video=$enableval)
335 AC_MSG_CHECKING(video device support)
336 if test "$video" = "yes" ; then
337   AC_SUBST(OPAL_VIDEO, 1)
338   AC_DEFINE(OPAL_VIDEO)
339   AC_MSG_RESULT(enabled)
340 else
341   AC_MSG_RESULT(disabled)
345 dnl MSWIN_DISPLAY sip,SIP support
346 dnl MSWIN_DEFINE  sip,OPAL_SIP
348 sip=yes
349 AC_ARG_ENABLE(sip,
350        [  --disable-sip           disable SIP protocol support],
351        sip=$enableval)
352 AC_MSG_CHECKING(SIP protocol)
353 if test "$sip" = "yes" ; then
354   AC_SUBST(OPAL_SIP, 1)
355   AC_DEFINE(OPAL_SIP)
356   AC_MSG_RESULT(enabled)
357 else
358   AC_MSG_RESULT(disabled)
362 dnl MSWIN_DISPLAY h323,H.323 support
363 dnl MSWIN_DEFINE  h323,OPAL_H323
365 h323=yes
366 t38=yes
367 h224=yes
368 h460=yes
369 AC_ARG_ENABLE(h323,
370        [  --disable-h323          disable H.323 protocol support],
371        h323=$enableval)
372 AC_MSG_CHECKING(H.323 protocol)
373 if test "$h323" = "yes" ; then
374   AC_SUBST(OPAL_H323, 1)
375   AC_DEFINE(OPAL_H323)
376   AC_MSG_RESULT(enabled)
377 else
378   AC_SUBST(OPAL_H323, 0)
379   AC_MSG_RESULT(disabled (T.38, H.224, H.460 also disabled))
380   t38=no
381   h224=no
382   h460=no
384 AC_SUBST(OPAL_H323, $OPAL_H323)
387 dnl MSWIN_DISPLAY iax2,IAX2 support
388 dnl MSWIN_DEFINE  iax2,OPAL_IAX2
390 iax=yes
391 AC_ARG_ENABLE(iax,
392        [  --disable-iax           disable IAX2 protocol support],
393        iax=$enableval)
394 AC_MSG_CHECKING(IAX2 protocol)
395 if test "$iax" = "yes" ; then
396   AC_SUBST(OPAL_IAX2, 1)
397   AC_DEFINE(OPAL_IAX2)
398   AC_MSG_RESULT(enabled)
399 else
400   AC_MSG_RESULT(disabled)
403 dnl MSWIN_DISPLAY h224,H.224 support
404 dnl MSWIN_DEFINE  h224,OPAL_H224
406 AC_ARG_ENABLE(h224,
407                 [  --disable-h224          disable H.224 protocol support],
408                 h224=$enableval)
409 AC_MSG_CHECKING(H224 protocol)
410 if test "$h224" = "yes" ; then
411   AC_SUBST(OPAL_H224, 1)
412   AC_DEFINE(OPAL_H224)
413   AC_MSG_RESULT(enabled)
414 else
415   AC_MSG_RESULT(disabled)
418 dnl ########################################################################
420 dnl T.38
422 dnl MSWIN_DISPLAY    t38,T.38
423 dnl MSWIN_DEFINE     t38,OPAL_T38FAX
424 dnl MSWIN_IF_FEATURE t38,h323
426 if test "$t38" = "yes" ; then
427   AC_ARG_ENABLE(t38,
428          [  --disable-t38           disable T.38 protocol support],
429          t38=$enableval)
430   AC_MSG_CHECKING(T.38 protocol)
431   if test "$t38" = "yes" ; then
432     AC_SUBST(OPAL_T38FAX, 1)
433     AC_DEFINE(OPAL_T38FAX)
434     AC_MSG_RESULT(enabled)
435   else
436     AC_MSG_RESULT(disabled)
437   fi
441 dnl ########################################################################
443 dnl H.460
445 dnl MSWIN_DISPLAY h460,H.460
446 dnl MSWIN_DEFINE  h460,H323_H460
448 H323_460=
449 if test "$h460" = "yes" ; then
450   AC_ARG_ENABLE(h460,
451          [  --disable-h460          disable H.460],
452          h460=$enableval)
453   AC_MSG_CHECKING(H.460 support)
454   if test "$h460" = "yes" ; then
455     AC_SUBST(H323_H460, 1)
456     AC_DEFINE(H323_H460)
457     AC_MSG_RESULT(enabled)
458   else
459     AC_MSG_RESULT(disabled)
460   fi
464 dnl ########################################################################
466 dnl LID, used for vpb, dialogic etc ...
468 dnl MSWIN_DISPLAY lids,Line Interface Device
469 dnl MSWIN_DEFINE  lids,OPAL_LID
471 OPAL_LID=
472 lid=yes
473 if test "$lid" = "yes" ; then
474   AC_ARG_ENABLE(lid,
475          [  --disable-lid           disable LID support],
476          lid=$enableval)
477   AC_MSG_CHECKING(LID support)
478   if test "$lid" = "yes" ; then
479     AC_DEFINE(OPAL_LID, 1)
480     OPAL_LID=1
481     AC_MSG_RESULT(enabled)
482   else
483     AC_MSG_RESULT(disabled)
484   fi
486 AC_SUBST(OPAL_LID)
488 dnl ########################################################################
490 dnl IVR
492 dnl MSWIN_DISPLAY ivr,IVR support
493 dnl MSWIN_DEFINE  ivr,OPAL_IVR
495 OPAL_ivr=
496 ivr=yes
497 if test "$ivr" = "yes" ; then
498   AC_ARG_ENABLE(ivr,
499          [  --disable-ivr           disable IVR support],
500          ivr=$enableval)
501   AC_MSG_CHECKING(IVR support)
502   if test "$ivr" = "yes" ; then
503     AC_DEFINE(OPAL_IVR, 1)
504     OPAL_IVR=1
505     AC_MSG_RESULT(enabled)
506   else
507     AC_MSG_RESULT(disabled)
508   fi
510 AC_SUBST(OPAL_IVR)
513 dnl ########################################################################
515 dnl Cisco libSRTP
516 dnl 
518 dnl MSWIN_DISPLAY     libsrtp,Cisco libSRTP support
519 dnl MSWIN_CHECK_FILE  libsrtp,include\srtp.h,HAS_LIBSRTP=1
520 dnl MSWIN_DIR_SYMBOL  libsrtp,LIBSRTP_DIR
521 dnl MSWIN_CHECK_DIR   libsrtp,.\srtp
522 dnl MSWIN_CHECK_DIR   libsrtp,..\external\srtp
523 dnl MSWIN_CHECK_DIR   libsrtp,c:\libs
525 HAS_LIBSRTP=
526 AC_MSG_CHECKING(for libSRTP)
527 AC_TRY_COMPILE([#include "srtp/srtp.h"],
528  [int main(int argc, char *argv[]) { crypto_policy_t p; p.cipher_key_len = SRTP_MASTER_KEY_LEN; return 0; }],
529  HAS_LIBSRTP=1)
530 if test "${HAS_LIBSRTP}" = "1" ; then
531   AC_MSG_RESULT(yes)
532   AC_DEFINE(HAS_LIBSRTP, 1)
533   HAS_LIBSRTP=1
534   OPAL_SRTP=1
535 else
536   AC_MSG_RESULT(no)
538 AC_SUBST(OPAL_SRTP)
539 AC_SUBST(HAS_LIBSRTP)
542 dnl ########################################################################
543 dnl output make directives
545 AC_SUBST(STDCCFLAGS)
546 AC_SUBST(LDFLAGS)
547 AC_SUBST(ENDLDLIBS)
548 AC_PROG_INSTALL
550 dnl ########################################################################
551 dnl Output configured files
553 AC_CONFIG_SUBDIRS(plugins)
555 dnl ########################################################################
556 dnl output header file
558 AC_CONFIG_FILES(opal_inc.mak)
559 AC_CONFIG_FILES(Makefile)
560 AC_CONFIG_HEADERS(include/opal/buildopts.h)
561 AC_CONFIG_FILES(opal.pc)
562 AC_CONFIG_FILES(opal.spec)
563 AC_CONFIG_FILES(opal_cfg.dxy)
565 AC_OUTPUT(src/codec/speex/libspeex/speex_config_types.h)