summaryrefslogtreecommitdiff
path: root/aconfigure.ac
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-01-07 14:24:28 -0600
committerDavid M. Lee <dlee@digium.com>2013-01-07 14:24:28 -0600
commitf3ab456a17af1c89a6e3be4d20c5944853df1cb0 (patch)
treed00e1a332cd038a6d906a1ea0ac91e1a4458e617 /aconfigure.ac
Import pjproject-2.0.1
Diffstat (limited to 'aconfigure.ac')
-rw-r--r--aconfigure.ac1465
1 files changed, 1465 insertions, 0 deletions
diff --git a/aconfigure.ac b/aconfigure.ac
new file mode 100644
index 0000000..be2f2ae
--- /dev/null
+++ b/aconfigure.ac
@@ -0,0 +1,1465 @@
+AC_INIT(pjproject,2.x)
+
+host_orig="$host"
+
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AC_CONFIG_HEADER([pjlib/include/pj/compat/os_auto.h
+ pjlib/include/pj/compat/m_auto.h
+ pjmedia/include/pjmedia/config_auto.h
+ pjmedia/include/pjmedia-codec/config_auto.h
+ pjsip/include/pjsip/sip_autoconf.h
+ ])
+AC_CONFIG_FILES([build.mak
+ build/os-auto.mak
+ build/cc-auto.mak
+ pjlib/build/os-auto.mak
+ pjlib-util/build/os-auto.mak
+ pjmedia/build/os-auto.mak
+ pjsip/build/os-auto.mak
+ third_party/build/os-auto.mak
+ third_party/build/portaudio/os-auto.mak
+ ])
+
+
+dnl
+dnl Setup default CFLAGS
+dnl
+if test "$CFLAGS" = ""; then
+ CFLAGS="-O2"
+else
+ CFLAGS="$CFLAGS"
+fi
+
+CXXFLAGS="$CFLAGS $CXXFLAGS"
+
+dnl #
+dnl # Configure tools
+dnl #
+AC_PROG_CC
+AC_PROG_CXX
+AC_LANG_C
+
+dnl #
+dnl # Setup CROSS_COMPILE variable
+dnl #
+if test -z "$CROSS_COMPILE"; then
+ CROSS_COMPILE=`echo ${CC} | sed 's/gcc//'`
+fi
+
+if test "$AR" = ""; then AR="${CROSS_COMPILE}ar rv"; fi
+AC_SUBST(AR)
+if test "$LD" = ""; then LD="$CC"; fi
+AC_SUBST(LD)
+if test "$LDOUT" = ""; then LDOUT="-o "; fi
+AC_SUBST(LDOUT)
+if test "$RANLIB" = ""; then RANLIB="${CROSS_COMPILE}ranlib"; fi
+AC_SUBST(RANLIB)
+if test "$OBJEXT" = ""; then OBJEXT='o'; fi
+AC_SUBST(OBJEXT)
+if test "$LIBEXT" = ""; then LIBEXT='a'; fi
+AC_SUBST(LIBEXT)
+if test "$LIBEXT2" = ""; then LIBEXT2=""; fi
+AC_SUBST(LIBEXT2)
+if test "$CC_OUT" = ""; then CC_OUT="-o "; fi
+AC_SUBST(CC_OUT)
+if test "$CC_INC" = ""; then CC_INC="-I"; fi
+AC_SUBST(CC_INC)
+if test "$CC_DEF" = ""; then CC_DEF="-D"; fi
+AC_SUBST(CC_DEF)
+if test "$CC_OPTIMIZE" = ""; then CC_OPTIMIZE="-O2"; fi
+AC_SUBST(CC_OPTIMIZE)
+if test "$CC_CFLAGS" = ""; then CC_CFLAGS="-Wall"; fi
+AC_SUBST(CC_CFLAGS)
+
+
+
+AC_SUBST(ac_pjdir)
+AC_SUBST(ac_build_mak_vars)
+
+case $host in
+ *mingw* | *cygw* | *win32* | *w32* )
+ if pwd -W 2&> /dev/null; then
+ ac_pjdir=`pwd -W`
+ else
+ # We're probably cross-compiling mingw on Linux
+ ac_pjdir=`pwd`
+ fi
+ ;;
+ *)
+ ac_pjdir=`pwd`
+ ;;
+esac
+
+AC_SUBST(ac_shlib_suffix)
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ ac_shlib_suffix=dll
+ ;;
+ *darwin*)
+ ac_shlib_suffix=dylib
+ ;;
+ *)
+ ac_shlib_suffix=so
+ ;;
+esac
+
+AC_SUBST(ac_cross_compile)
+if test "$build" = "$host"; then
+ ac_cross_compile=
+else
+ ac_cross_compile=${host_orig}-
+fi
+
+AC_CHECK_LIB(pthread,pthread_create)
+AC_CHECK_LIB(wsock32,puts)
+AC_CHECK_LIB(ws2_32,puts)
+AC_CHECK_LIB(ole32,puts)
+AC_CHECK_LIB(winmm,puts)
+AC_CHECK_LIB(socket,puts)
+AC_CHECK_LIB(rt,puts)
+AC_CHECK_LIB(nsl,puts)
+AC_CHECK_LIB(uuid,uuid_generate)
+AC_CHECK_LIB(uuid,uuid_generate,[ac_has_uuid_lib=1])
+
+AC_MSG_RESULT([Setting PJ_M_NAME to $target_cpu])
+AC_DEFINE_UNQUOTED(PJ_M_NAME,["$target_cpu"])
+
+dnl
+dnl Memory alignment detection
+dnl
+AC_MSG_CHECKING([memory alignment])
+case $target in
+ sparc64-* | ia64-* | x86_64-* )
+ AC_DEFINE(PJ_POOL_ALIGNMENT, 8)
+ AC_MSG_RESULT([8 bytes])
+ ;;
+ * )
+ AC_DEFINE(PJ_POOL_ALIGNMENT, 4)
+ AC_MSG_RESULT([4 bytes (default)])
+ ;;
+esac
+
+
+dnl
+dnl Endianness detection
+dnl
+AC_C_BIGENDIAN
+
+if test "x$ac_cv_c_bigendian" = "xyes"; then
+ CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=1 -DPJ_IS_LITTLE_ENDIAN=0"
+else
+ CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1"
+fi
+
+dnl
+dnl Legacy macros
+dnl
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ AC_DEFINE(PJ_WIN32,1)
+ AC_DEFINE(PJ_WIN32_WINNT,0x0400)
+ AC_DEFINE(WIN32_LEAN_AND_MEAN)
+ ;;
+ *darwin*)
+ AC_DEFINE(PJ_DARWINOS,1)
+ ;;
+ *linux*)
+ AC_DEFINE(PJ_LINUX,1)
+ ;;
+ *rtems*)
+ AC_DEFINE(PJ_RTEMS,1)
+ ;;
+ *sunos* | *solaris* )
+ AC_DEFINE(PJ_SUNOS,1)
+ ;;
+ *)
+ ;;
+esac
+
+
+
+
+dnl # --disable-floating-point option
+AC_ARG_ENABLE(floating-point,
+ AC_HELP_STRING([--disable-floating-point],
+ [Disable floating point where possible]),
+ [if test "$enable_floating_point" = "no"; then
+ AC_DEFINE(PJ_HAS_FLOATING_POINT,0)
+ AC_MSG_RESULT([Checking if floating point is disabled... yes])
+ fi],
+ [
+ AC_DEFINE(PJ_HAS_FLOATING_POINT,1)
+ AC_MSG_RESULT([Checking if floating point is disabled... no])
+ AC_CHECK_LIB(m,fmod)
+ ])
+
+
+AC_CHECK_HEADER(arpa/inet.h,[AC_DEFINE(PJ_HAS_ARPA_INET_H,1)])
+AC_CHECK_HEADER(assert.h,[AC_DEFINE(PJ_HAS_ASSERT_H,1)])
+AC_CHECK_HEADER(ctype.h,[AC_DEFINE(PJ_HAS_CTYPE_H,1)])
+
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ AC_DEFINE(PJ_HAS_ERRNO_H,0)
+ ;;
+ *)
+ AC_CHECK_HEADER(errno.h,[AC_DEFINE(PJ_HAS_ERRNO_H,1)])
+ ;;
+esac
+
+AC_CHECK_HEADER(fcntl.h,[AC_DEFINE(PJ_HAS_FCNTL_H,1)])
+AC_CHECK_HEADER(linux/socket.h,[AC_DEFINE(PJ_HAS_LINUX_SOCKET_H,1)])
+AC_CHECK_HEADER(limits.h,[AC_DEFINE(PJ_HAS_LIMITS_H,1)])
+AC_CHECK_HEADER(malloc.h,[AC_DEFINE(PJ_HAS_MALLOC_H,1)])
+AC_CHECK_HEADER(netdb.h,[AC_DEFINE(PJ_HAS_NETDB_H,1)])
+AC_CHECK_HEADER(netinet/in_systm.h,[AC_DEFINE(PJ_HAS_NETINET_IN_SYSTM_H,1)])
+AC_CHECK_HEADER(netinet/in.h,[AC_DEFINE(PJ_HAS_NETINET_IN_H,1)])
+AC_CHECK_HEADER(netinet/ip.h,[AC_DEFINE(PJ_HAS_NETINET_IP_H,1)],[],
+ [#if PJ_HAS_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+ #if PJ_HAS_NETINET_IN_SYSTM_H
+ # include <netinet/in_systm.h>
+ #endif
+ #if PJ_HAS_NETINET_IN_H
+ # include <netinet/in.h>
+ #endif
+ ])
+AC_CHECK_HEADER(netinet/tcp.h,[AC_DEFINE(PJ_HAS_NETINET_TCP_H,1)])
+AC_CHECK_HEADER(ifaddrs.h,
+ [AC_CHECK_FUNC(getifaddrs,[AC_DEFINE(PJ_HAS_IFADDRS_H,1)])])
+AC_CHECK_HEADER(semaphore.h,[AC_DEFINE(PJ_HAS_SEMAPHORE_H,1)])
+AC_CHECK_HEADER(setjmp.h,[AC_DEFINE(PJ_HAS_SETJMP_H,1)])
+AC_CHECK_HEADER(stdarg.h,[AC_DEFINE(PJ_HAS_STDARG_H,1)])
+AC_CHECK_HEADER(stddef.h,[AC_DEFINE(PJ_HAS_STDDEF_H,1)])
+AC_CHECK_HEADER(stdio.h,[AC_DEFINE(PJ_HAS_STDIO_H,1)])
+AC_CHECK_HEADER(stdint.h,[AC_DEFINE(PJ_HAS_STDINT_H,1)])
+AC_CHECK_HEADER(stdlib.h,[AC_DEFINE(PJ_HAS_STDLIB_H,1)])
+AC_CHECK_HEADER(string.h,[AC_DEFINE(PJ_HAS_STRING_H,1)])
+AC_CHECK_HEADER(sys/ioctl.h,[AC_DEFINE(PJ_HAS_SYS_IOCTL_H,1)])
+AC_CHECK_HEADER(sys/select.h,[AC_DEFINE(PJ_HAS_SYS_SELECT_H,1)])
+AC_CHECK_HEADER(sys/socket.h,[AC_DEFINE(PJ_HAS_SYS_SOCKET_H,1)])
+AC_CHECK_HEADER(sys/time.h,[AC_DEFINE(PJ_HAS_SYS_TIME_H,1)])
+AC_CHECK_HEADER(sys/timeb.h,[AC_DEFINE(PJ_HAS_SYS_TIMEB_H,1)])
+AC_CHECK_HEADER(sys/types.h,[AC_DEFINE(PJ_HAS_SYS_TYPES_H,1)])
+AC_CHECK_HEADER(sys/filio.h,[AC_DEFINE(PJ_HAS_SYS_FILIO_H,1)])
+AC_CHECK_HEADER(sys/sockio.h,[AC_DEFINE(PJ_HAS_SYS_SOCKIO_H,1)])
+AC_CHECK_HEADER(sys/utsname.h,[AC_DEFINE(PJ_HAS_SYS_UTSNAME_H,1)])
+AC_CHECK_HEADER(time.h,[AC_DEFINE(PJ_HAS_TIME_H,1)])
+AC_CHECK_HEADER(unistd.h,[AC_DEFINE(PJ_HAS_UNISTD_H,1)])
+AC_CHECK_HEADER(winsock.h,[AC_DEFINE(PJ_HAS_WINSOCK_H,1)])
+AC_CHECK_HEADER(winsock2.h,[AC_DEFINE(PJ_HAS_WINSOCK2_H,1)])
+AC_CHECK_HEADER(mswsock.h,[AC_DEFINE(PJ_HAS_MSWSOCK_H,1)],[],
+ [#if PJ_HAS_WINSOCK2_H
+ # include <winsock2.h>
+ #elif PJ_HAS_WINSOCK_H
+ # include <winsock.h>
+ #endif
+ ])
+AC_CHECK_HEADER(ws2tcpip.h,[AC_DEFINE(PJ_HAS_WS2TCPIP_H,1)])
+AC_CHECK_HEADER(uuid/uuid.h,[ac_has_uuid_h=1])
+AC_CHECK_HEADER(net/if.h,[AC_DEFINE(PJ_HAS_NET_IF_H,1)],[],
+ [#if PJ_HAS_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+ #if PJ_HAS_SYS_SOCKET_H
+
+ # include <sys/socket.h>
+ #endif
+ ])
+AC_MSG_RESULT([Setting PJ_OS_NAME to $target])
+AC_DEFINE_UNQUOTED(PJ_OS_NAME,["$target"])
+
+AC_MSG_RESULT([Setting PJ_HAS_ERRNO_VAR to 1])
+AC_DEFINE(PJ_HAS_ERRNO_VAR,1)
+
+AC_MSG_RESULT([Setting PJ_HAS_HIGH_RES_TIMER to 1])
+AC_DEFINE(PJ_HAS_HIGH_RES_TIMER,1)
+
+AC_MSG_RESULT([Setting PJ_HAS_MALLOC to 1])
+AC_DEFINE(PJ_HAS_MALLOC,1)
+
+AC_MSG_RESULT([Setting PJ_NATIVE_STRING_IS_UNICODE to 0])
+AC_DEFINE(PJ_NATIVE_STRING_IS_UNICODE,0)
+
+AC_MSG_RESULT([Setting PJ_ATOMIC_VALUE_TYPE to long])
+AC_DEFINE(PJ_ATOMIC_VALUE_TYPE,long)
+
+dnl # Determine if inet_aton() is available
+AC_MSG_CHECKING([if inet_aton() is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <arpa/inet.h>]],
+ [inet_aton(0, 0);])],
+ [AC_DEFINE(PJ_SOCK_HAS_INET_ATON,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl # Determine if inet_pton() is available
+AC_MSG_CHECKING([if inet_pton() is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <arpa/inet.h>]],
+ [inet_pton(0, 0, 0);])],
+ [AC_DEFINE(PJ_SOCK_HAS_INET_PTON,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl # Determine if inet_ntop() is available
+AC_MSG_CHECKING([if inet_ntop() is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <arpa/inet.h>]],
+ [inet_ntop(0, 0, 0, 0);])],
+ [AC_DEFINE(PJ_SOCK_HAS_INET_NTOP,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl # Determine if getaddrinfo() is available
+AC_MSG_CHECKING([if getaddrinfo() is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netdb.h>]],
+ [getaddrinfo(0, 0, 0, 0);])],
+ [AC_DEFINE(PJ_SOCK_HAS_GETADDRINFO,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl # Determine if sockaddr_in has sin_len member
+AC_MSG_CHECKING([if sockaddr_in has sin_len member])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>]],
+ [struct sockaddr_in a; a.sin_len=0;])],
+ [AC_DEFINE(PJ_SOCKADDR_HAS_LEN,1)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+
+dnl # Determine if socklen_t is available
+AC_MSG_CHECKING([if socklen_t is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>]],
+ [socklen_t xxx = 0;])],
+ [AC_DEFINE(PJ_HAS_SOCKLEN_T,1)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+
+dnl # Determine if SO_ERROR is available
+AC_MSG_CHECKING([if SO_ERROR is available])
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ AC_DEFINE(PJ_HAS_SO_ERROR,1)
+ AC_MSG_RESULT(yes)
+ ;;
+ *)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>]],
+ [int i=SO_ERROR;])],
+ [AC_DEFINE(PJ_HAS_SO_ERROR,1)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+ ;;
+esac
+
+
+dnl # Determine if RW-mutex is available
+AC_MSG_CHECKING([if pthread_rwlock_t is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [pthread_rwlock_t *x;])],
+ [AC_DEFINE(PJ_EMULATE_RWMUTEX,0)
+ ac_rwmutex="yes"
+ AC_MSG_RESULT(yes)],
+ [AC_DEFINE(PJ_EMULATE_RWMUTEX,1)
+ ac_rwmutex="no"
+ AC_MSG_RESULT(no)])
+
+dnl # If rwmutex is not detected, check again but this time
+dnl # with _POSIX_READER_WRITER_LOCKS defined (newlib needs this)
+if test "$ac_rwmutex" = "no"; then
+ AC_MSG_CHECKING([if pthread_rwlock_t is available with _POSIX_READER_WRITER_LOCKS])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _POSIX_READER_WRITER_LOCKS
+ #include <pthread.h>]],
+ [pthread_rwlock_t *x;])],
+ [AC_DEFINE(PJ_EMULATE_RWMUTEX,0)
+ CFLAGS="$CFLAGS -D_POSIX_THREADS -D_POSIX_READER_WRITER_LOCKS"
+ AC_MSG_RESULT(yes)],
+ [AC_DEFINE(PJ_EMULATE_RWMUTEX,1)
+ AC_MSG_RESULT(no)])
+fi
+
+dnl # Do we have pthread_mutexattr_settype()?
+AC_MSG_CHECKING([if pthread_mutexattr_settype() is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [pthread_mutexattr_settype(0,PTHREAD_MUTEX_FAST_NP);])],
+ [AC_DEFINE(PJ_HAS_PTHREAD_MUTEXATTR_SETTYPE,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl # Does pthread_mutexattr_t has "recursive" member?
+AC_MSG_CHECKING([if pthread_mutexattr_t has recursive member])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [[pthread_mutexattr_t attr;
+ attr.recursive=1;]])],
+ [AC_DEFINE(PJ_PTHREAD_MUTEXATTR_T_HAS_RECURSIVE,1)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+
+dnl ######################
+dnl # ioqueue selection
+dnl #
+AC_SUBST(ac_os_objs)
+AC_MSG_CHECKING([ioqueue backend])
+AC_ARG_ENABLE(epoll,
+ AC_HELP_STRING([--enable-epoll],
+ [Use /dev/epoll ioqueue on Linux (experimental)]),
+ [
+ ac_os_objs=ioqueue_epoll.o
+ AC_MSG_RESULT([/dev/epoll])
+ ],
+ [
+ ac_os_objs=ioqueue_select.o
+ AC_MSG_RESULT([select()])
+ ])
+
+
+dnl ######################
+dnl # OS specific files
+dnl #
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ ac_os_objs="$ac_os_objs file_access_win32.o file_io_win32.o os_core_win32.o os_error_win32.o os_time_win32.o os_timestamp_win32.o guid_win32.o"
+ ;;
+ *)
+ ac_os_objs="$ac_os_objs file_access_unistd.o file_io_ansi.o os_core_unix.o os_error_unix.o os_time_unix.o os_timestamp_posix.o"
+ case $target in
+ arm-apple-darwin*)
+ ac_os_objs="$ac_os_objs os_info_iphone.o"
+ ;;
+ esac
+ # UUID
+ if test "$ac_has_uuid_lib" = "1" -a "$ac_has_uuid_h" = "1"; then
+ ac_os_objs="$ac_os_objs guid_uuid.o"
+ else
+ ac_os_objs="$ac_os_objs guid_simple.o"
+ fi
+ ;;
+esac
+
+case $target in
+ *darwin*)
+ ac_os_objs="$ac_os_objs os_core_darwin.o"
+ ;;
+esac
+
+dnl ##########################################
+dnl #
+dnl # PJMEDIA
+dnl #
+
+dnl # Use external Speex installation
+AC_SUBST(ac_external_speex,0)
+AC_ARG_WITH(external-speex,
+ AC_HELP_STRING([--with-external-speex],
+ [Use external Speex development files, not the one in "third_party" directory. When this option is set, make sure that Speex is accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths)]),
+ [
+ if test "x$with_external_speex" != "xno"; then
+ # Test Speex installation
+ AC_MSG_CHECKING([if external Speex devkit is installed])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <speex/speex.h>
+ #include <speex/speex_echo.h>
+ ]],
+ [speex_echo_state_init(0, 0); speex_encoder_init(0); ])],
+ [AC_MSG_RESULT(yes!!)
+ AC_DEFINE(PJMEDIA_EXTERNAL_SPEEX_CODEC, 1)
+ ac_external_speex="1"
+ ],
+ [AC_MSG_ERROR([Unable to use external Speex library. If Speex development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths])])
+ fi
+ ]
+ )
+
+dnl # Use external GSM codec library installation
+AC_SUBST(ac_external_gsm,0)
+AC_ARG_WITH(external-gsm,
+ AC_HELP_STRING([--with-external-gsm],
+ [Use external GSM codec library, not the one in "third_party" directory. When this option is set, make sure that the GSM include/lib files are accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths)]),
+ [
+ if test "x$with_external_gsm" != "xno"; then
+ # Test GSM library installation
+ AC_MSG_CHECKING([if external GSM devkit is installed as gsm/gsm.h])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <gsm/gsm.h> ]], [gsm_create(); ]) ],
+ [AC_MSG_RESULT(yes!!)
+ AC_DEFINE(PJMEDIA_EXTERNAL_GSM_CODEC, 1)
+ AC_DEFINE(PJMEDIA_EXTERNAL_GSM_GSM_H, 1)
+ ac_external_gsm="1"
+ ],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_CHECKING([if external GSM devkit is installed as gsm.h])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <gsm.h> ]], [gsm_create(); ]) ],
+ [AC_MSG_RESULT(yes!!)
+ AC_DEFINE(PJMEDIA_EXTERNAL_GSM_CODEC, 1)
+ AC_DEFINE(PJMEDIA_EXTERNAL_GSM_H, 1)
+ ac_external_gsm="1"
+ ],
+ [AC_MSG_ERROR([Unable to use external GSM library. If GSM development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths])
+ ]
+ )
+ ]
+ )
+ fi
+ ]
+ )
+
+
+
+dnl # Sound device backend selection
+AC_SUBST(ac_pjmedia_snd)
+AC_ARG_ENABLE(sound,
+ AC_HELP_STRING([--disable-sound],
+ [Exclude sound (i.e. use null sound)]),
+ [if test "$enable_sound" = "no"; then
+ [ac_pjmedia_snd=null]
+ AC_MSG_RESULT([Checking if sound is disabled... yes])
+ fi]
+ )
+
+dnl # Use external PortAudio installation
+AC_SUBST(ac_external_pa,0)
+AC_ARG_WITH(external-pa,
+ AC_HELP_STRING([--with-external-pa],
+ [Use external PortAudio development files, not the one in "third_party" directory. When this option is set, make sure that PortAudio is accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths)]),
+ [
+ if test "x$with_external_pa" != "xno"; then
+ # Test PortAudio installation
+ AC_MSG_CHECKING([if external PortAudio devkit is installed])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <portaudio.h>
+ ]],
+ [Pa_Initialize();])],
+ [AC_MSG_RESULT(yes!!)
+ ac_external_pa="1"
+ ],
+ [AC_MSG_ERROR([Unable to use PortAudio. If PortAudio development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths])])
+ fi
+ ]
+ )
+
+AC_SUBST(ac_pa_cflags)
+AC_CHECK_HEADER(sys/soundcard.h,
+ [ac_pa_cflags="$ac_pa_cflags -DHAVE_SYS_SOUNDCARD_H"])
+AC_CHECK_HEADER(linux/soundcard.h,
+ [ac_pa_cflags="$ac_pa_cflags -DHAVE_LINUX_SOUNDCARD_H"])
+AC_CHECK_HEADER(machine/soundcard.h,
+ [ac_pa_cflags="$ac_pa_cflags -DHAVE_MACHINE_SOUNDCARD_H"])
+
+if test "x$ac_cv_c_bigendian" = "xyes"; then
+ ac_pa_cflags="$ac_pa_cflags -DPA_BIG_ENDIAN"
+else
+ ac_pa_cflags="$ac_pa_cflags -DPA_LITTLE_ENDIAN"
+fi
+
+if test "$enable_sound" = "no"; then
+ true;
+else
+ case $target in
+ arm-apple-darwin*)
+ LIBS="$LIBS -framework CoreAudio -framework CoreFoundation -framework AudioToolbox -framework CFNetwork -framework UIKit"
+ AC_MSG_RESULT([Checking sound device backend... AudioUnit])
+ ;;
+ *darwin*)
+ LIBS="$LIBS -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox"
+ if test "`uname -r`" = "6.8"; then
+ #ac_pa_cflags="$ac_pa_cflags -DPA_OLD_CORE_AUDIO -DMOSX_USE_NON_ATOMIC_FLAG_BITS"
+ #AC_MSG_RESULT([Setting additional PortAudio CFLAGS.. -DPA_OLD_CORE_AUDIO -DMOSX_USE_NON_ATOMIC_FLAG_BITS])
+ ac_pjmedia_snd=pa_old_darwinos
+ AC_MSG_RESULT([Checking sound device backend... old coreaudio])
+ else
+ ac_pjmedia_snd=pa_darwinos
+ AC_MSG_RESULT([Checking sound device backend... coreaudio])
+ fi
+ ;;
+ *cygwin* | *mingw*)
+ ac_pjmedia_snd=pa_win32
+ AC_MSG_RESULT([Checking sound device backend... win32 sound])
+ ;;
+ *rtems*)
+ ac_pjmedia_snd=null
+ AC_MSG_RESULT([Checking sound device backend... null sound])
+ ;;
+ *)
+ dnl # Check if ALSA is available
+ ac_pjmedia_snd=pa_unix
+ AC_CHECK_HEADER(alsa/version.h,
+ [AC_SUBST(ac_pa_use_alsa,1)
+ LIBS="$LIBS -lasound"
+ ],
+ [AC_SUBST(ac_pa_use_alsa,0)])
+ AC_MSG_RESULT([Checking sound device backend... unix])
+
+ dnl # Check if OSS is disabled
+ AC_SUBST(ac_pa_use_oss,1)
+ AC_ARG_ENABLE(oss,
+ AC_HELP_STRING([--disable-oss],
+ [Disable OSS audio (default: not disabled)]),
+ [
+ if test "$enable_oss" = "no"; then
+ [ac_pa_use_oss=0]
+ AC_MSG_RESULT([Checking if OSS audio is disabled... yes])
+ fi
+ ])
+ ;;
+ esac
+fi
+
+AC_SUBST(ac_pjmedia_video)
+
+dnl # --disable-video option
+AC_ARG_ENABLE(video,
+ AC_HELP_STRING([--disable-video],
+ [Disable video feature]),
+ [if test "$enable_video" = "no"; then
+ #AC_DEFINE(PJMEDIA_HAS_VIDEO,0)
+ AC_MSG_RESULT([Video is disabled])
+ enable_sdl="no"
+ enable_ffmpeg="no"
+ enable_v4l2="no"
+ fi],
+ [])
+
+case $target in
+ arm-apple-darwin*)
+ LIBS="$LIBS -framework UIKit"
+ ;;
+ *darwin*)
+ LIBS="$LIBS -framework Foundation -framework AppKit"
+ ;;
+esac
+
+if test "$enable_video" = "no"; then
+ true;
+else
+ case $target in
+ arm-apple-darwin*)
+ ac_pjmedia_video=iphone_os
+ AC_SUBST(ac_pjmedia_video_has_ios)
+ AC_SUBST(ac_ios_cflags)
+ SAVED_LIBS="$LIBS"
+ LIBS="-framework AVFoundation -framework CoreGraphics -framework QuartzCore -framework CoreVideo -framework CoreMedia"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[ac_pjmedia_video_has_ios=yes],[ac_pjmedia_video_has_ios=no])
+ LIBS="$SAVED_LIBS"
+ if test "$ac_pjmedia_video_has_ios" = "yes"; then
+ ac_ios_cflags="-DPJMEDIA_VIDEO_DEV_HAS_IOS=1"
+ LIBS="$LIBS -framework AVFoundation -framework CoreGraphics -framework QuartzCore -framework CoreVideo -framework CoreMedia"
+ AC_MSG_RESULT([Checking if AVFoundation framework is available... yes])
+ else
+ AC_MSG_RESULT([Checking if AVFoundation framework is available... no])
+ fi
+ ;;
+ *darwin*)
+ ac_pjmedia_video=mac_os
+ AC_SUBST(ac_pjmedia_video_has_qt)
+ AC_SUBST(ac_qt_cflags)
+ SAVED_LIBS="$LIBS"
+ LIBS="-framework QTKit"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[ac_pjmedia_video_has_qt=yes],[ac_pjmedia_video_has_qt=no])
+ LIBS="$SAVED_LIBS"
+ if test "$ac_pjmedia_video_has_qt" = "yes"; then
+ ac_qt_cflags="-DPJMEDIA_VIDEO_DEV_HAS_QT=1"
+ LIBS="$LIBS -framework QTKit -framework QuartzCore -framework OpenGL"
+ AC_MSG_RESULT([Checking if QTKit framework is available... yes])
+ else
+ AC_MSG_RESULT([Checking if QTKit framework is available... no])
+ fi
+ ;;
+ esac
+fi
+
+AC_ARG_ENABLE(ext_sound,
+ AC_HELP_STRING([--enable-ext-sound],
+ [PJMEDIA will not provide any sound device backend]),
+ [if test "$enable_ext_sound" = "yes"; then
+ [ac_pjmedia_snd=external]
+ AC_MSG_RESULT([Checking if external sound is set... yes])
+ fi]
+ )
+
+dnl # Include resampling small filter
+AC_SUBST(ac_no_small_filter)
+AC_ARG_ENABLE(small-filter,
+ AC_HELP_STRING([--disable-small-filter],
+ [Exclude small filter in resampling]),
+ [if test "$enable_small_filter" = "no"; then
+ [ac_no_small_filter='-DPJMEDIA_HAS_SMALL_FILTER=0']
+ AC_MSG_RESULT([Checking if small filter is disabled... yes])
+ fi],
+ AC_MSG_RESULT([Checking if small filter is disabled... no]))
+
+dnl # Include resampling large filter
+AC_SUBST(ac_no_large_filter)
+AC_ARG_ENABLE(large-filter,
+ AC_HELP_STRING([--disable-large-filter],
+ [Exclude large filter in resampling]),
+ [if test "$enable_large_filter" = "no"; then
+ [ac_no_large_filter='-DPJMEDIA_HAS_LARGE_FILTER=0']
+ AC_MSG_RESULT([Checking if large filter is disabled... yes])
+ fi],
+ AC_MSG_RESULT([Checking if large filter is disabled... no]))
+
+dnl # Include Speex AEC
+AC_SUBST(ac_no_speex_aec)
+AC_ARG_ENABLE(speex-aec,
+ AC_HELP_STRING([--disable-speex-aec],
+ [Exclude Speex Acoustic Echo Canceller/AEC]),
+ [if test "$enable_speex_aec" = "no"; then
+ [ac_no_speex_aec='-DPJMEDIA_HAS_SPEEX_AEC=0']
+ AC_MSG_RESULT([Checking if Speex AEC is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if Speex AEC is disabled...no]))
+
+dnl # Include G711 codec
+AC_SUBST(ac_no_g711_codec)
+AC_ARG_ENABLE(g711-codec,
+ AC_HELP_STRING([--disable-g711-codec],
+ [Exclude G.711 codecs from the build]),
+ [if test "$enable_g711_codec" = "no"; then
+ [ac_no_g711_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_G711_CODEC,0)
+ AC_MSG_RESULT([Checking if G.711 codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if G.711 codec is disabled...no]))
+
+
+dnl # Include L16 codec
+AC_SUBST(ac_no_l16_codec)
+AC_ARG_ENABLE(l16-codec,
+ AC_HELP_STRING([--disable-l16-codec],
+ [Exclude Linear/L16 codec family from the build]),
+ [if test "$enable_l16_codec" = "no"; then
+ [ac_no_l16_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_L16_CODEC,0)
+ AC_MSG_RESULT([Checking if L16 codecs are disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if L16 codec is disabled...no]))
+
+
+dnl # Include GSM codec
+AC_SUBST(ac_no_gsm_codec)
+AC_ARG_ENABLE(gsm-codec,
+ AC_HELP_STRING([--disable-gsm-codec],
+ [Exclude GSM codec in the build]),
+ [if test "$enable_gsm_codec" = "no"; then
+ [ac_no_gsm_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_GSM_CODEC,0)
+ AC_MSG_RESULT([Checking if GSM codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if GSM codec is disabled...no]))
+
+dnl # Include G.722 codec
+AC_SUBST(ac_no_g722_codec)
+AC_ARG_ENABLE(g722-codec,
+ AC_HELP_STRING([--disable-g722-codec],
+ [Exclude G.722 codec in the build]),
+ [if test "$enable_g722_codec" = "no"; then
+ [ac_no_g722_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_G722_CODEC,0)
+ AC_MSG_RESULT([Checking if G.722 codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if G.722 codec is disabled...no]))
+
+dnl # Include G722.1 codec
+AC_SUBST(ac_no_g7221_codec)
+AC_ARG_ENABLE(g7221-codec,
+ AC_HELP_STRING([--disable-g7221-codec],
+ [Exclude G.7221 codec in the build]),
+ [if test "$enable_g7221_codec" = "no"; then
+ [ac_no_g7221_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_G7221_CODEC,0)
+ AC_MSG_RESULT([Checking if G.722.1 codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if G.722.1 codec is disabled...no]))
+
+dnl # Include Speex codec
+AC_SUBST(ac_no_speex_codec)
+AC_ARG_ENABLE(speex-codec,
+ AC_HELP_STRING([--disable-speex-codec],
+ [Exclude Speex codecs in the build]),
+ [if test "$enable_speex_codec" = "no"; then
+ [ac_no_speex_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_SPEEX_CODEC,0)
+ AC_MSG_RESULT([Checking if Speex codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if Speex codec is disabled...no]))
+
+dnl # Include iLBC codec
+AC_SUBST(ac_no_ilbc_codec)
+AC_ARG_ENABLE(ilbc-codec,
+ AC_HELP_STRING([--disable-ilbc-codec],
+ [Exclude iLBC codec in the build]),
+ [if test "$enable_ilbc_codec" = "no"; then
+ [ac_no_ilbc_codec=1]
+ AC_DEFINE(PJMEDIA_HAS_ILBC_CODEC,0)
+ AC_MSG_RESULT([Checking if iLBC codec is disabled...yes])
+ fi],
+ AC_MSG_RESULT([Checking if iLBC codec is disabled...no]))
+
+dnl # Include libsamplerate
+AC_ARG_ENABLE(libsamplerate,
+ AC_HELP_STRING([--enable-libsamplerate],
+ [Link with libsamplerate when available. Note that PJMEDIA_RESAMPLE_IMP must also be configured]),
+ [ AC_CHECK_LIB(samplerate,src_new) ],
+ AC_MSG_RESULT([Skipping libsamplerate detection])
+ )
+
+dnl # Include libsamplerate
+AC_SUBST(ac_resample_dll)
+AC_ARG_ENABLE(resample_dll,
+ AC_HELP_STRING([--enable-resample-dll],
+ [Build libresample as shared library]),
+ [if test "$enable_resample_dll" = "yes"; then
+ [ac_resample_dll=1]
+ AC_MSG_RESULT([Building libresample as shared library... yes])
+ fi],
+ AC_MSG_RESULT([Building libresample as shared library... no])
+ )
+
+dnl # SDL alt prefix
+AC_ARG_WITH(sdl,
+ AC_HELP_STRING([--with-sdl=DIR],
+ [Specify alternate libSDL prefix]),
+ [],
+ [with_sdl=no]
+ )
+
+dnl # Do not use default SDL installation if we are cross-compiling
+if test "x$ac_cross_compile" != "x" -a "x$with_sdl" = "xno"; then
+ enable_sdl=no
+fi
+
+dnl # SDL
+AC_ARG_ENABLE(sdl,
+ AC_HELP_STRING([--disable-sdl],
+ [Disable SDL (default: not disabled)]),
+ [
+ if test "$enable_sdl" = "no"; then
+ AC_MSG_RESULT([Checking if SDL is disabled... yes])
+ fi
+ ],
+ [
+ if test "x$with_sdl" != "xno" -a "x$with_sdl" != "x"; then
+ AC_MSG_RESULT([Using SDL prefix... $with_sdl])
+ AC_PATH_PROGS(SDL_CONFIG,sdl2-config sdl-config,,$with_sdl/bin)
+ else
+ AC_PATH_PROGS(SDL_CONFIG, sdl2-config sdl-config)
+ fi
+
+ AC_MSG_CHECKING([SDL availability])
+ if test "x$SDL_CONFIG" = "x"; then
+ AC_MSG_RESULT([not found])
+ elif (sh -c "$SDL_CONFIG --version" | grep -e '^1\.3' -e '^2\.') then
+ AC_SUBST(ac_sdl_cflags)
+ AC_SUBST(ac_sdl_ldflags)
+ ac_sdl_cflags=`$SDL_CONFIG --cflags`
+ ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags"
+ ac_sdl_ldflags=`$SDL_CONFIG --libs`
+ LIBS="$LIBS $ac_sdl_ldflags"
+ else
+ AC_MSG_RESULT([Unsupported SDL version])
+ fi
+ ])
+
+
+AC_ARG_WITH(ffmpeg,
+ AC_HELP_STRING([--with-ffmpeg=DIR],
+ [Specify alternate FFMPEG prefix]),
+ [],
+ [with_ffmpeg=no]
+ )
+
+dnl # Do not use default ffmpeg installation if we are cross-compiling
+if test "x$ac_cross_compile" != "x" -a "x$with_ffmpeg" = "xno"; then
+ enable_ffmpeg=no
+fi
+
+dnl # FFMPEG stuffs
+AC_ARG_ENABLE(ffmpeg,
+ AC_HELP_STRING([--disable-ffmpeg],
+ [Disable ffmpeg (default: not disabled)]),
+ [
+ AC_SUBST(ac_has_ffmpeg,0)
+ if test "$enable_ffmpeg" = "no"; then
+ AC_MSG_RESULT([Checking if ffmpeg is disabled... yes])
+ fi
+ ],
+ [
+ AC_SUBST(ac_ffmpeg_cflags)
+ AC_SUBST(ac_ffmpeg_ldflags)
+
+ FFMPEG_PREFIX=""
+ AC_SUBST(SAVED_PKG_CONFIG_PATH)
+ SAVED_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+ if test "x$with_ffmpeg" != "xno" -a "x$with_ffmpeg" != "x"; then
+ FFMPEG_PREFIX=$with_ffmpeg
+ AC_MSG_RESULT([Using ffmpeg prefix... $FFMPEG_PREFIX])
+ export PKG_CONFIG_PATH=$FFMPEG_PREFIX/lib/pkgconfig
+ fi
+
+ AC_CHECK_PROGS(PKG_CONFIG,pkg-config "python pkgconfig.py",none)
+
+ if test "$PKG_CONFIG" != "none"; then
+ AC_MSG_CHECKING([ffmpeg packages])
+ av_pkg=""
+ if $PKG_CONFIG --exists libdevice; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVDEVICE=1"
+ av_pkg="$av_pkg libdevice"
+ fi
+ if $PKG_CONFIG --exists libavformat; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVFORMAT=1"
+ av_pkg="$av_pkg libavformat"
+ fi
+ if $PKG_CONFIG --exists libavcodec; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVCODEC=1"
+ av_pkg="$av_pkg libavcodec"
+ fi
+ if $PKG_CONFIG --exists libswscale; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1"
+ av_pkg="$av_pkg libswscale"
+ fi
+ if $PKG_CONFIG --exists libavutil; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVUTIL=1"
+ av_pkg="$av_pkg libavutil"
+ fi
+ if $PKG_CONFIG --exists libavcore; then
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVCORE=1"
+ av_pkg="$av_pkg libavcore"
+ fi
+
+ if test "x$av_pkg" == "x"; then
+ AC_MSG_RESULT([none detected (check the prefix)! **])
+ else
+ AC_MSG_RESULT([$av_pkg])
+ fi
+
+ ac_ffmpeg_cflags="$ac_ffmpeg_cflags `$PKG_CONFIG --cflags $av_pkg`"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags `$PKG_CONFIG --libs $av_pkg`"
+
+ else
+ dnl #
+ dnl # Use hardcoded values to configure ffmpeg
+ dnl #
+
+ AC_MSG_RESULT([*** Warning: neither pkg-config nor python is available, ffmpeg dependency cannot be calculated. If ffmpeg libraries are not detected, you need to specify the correct CFLAGS and LDFLAGS settings for ffmpeg prior to invoking configure ***])
+
+ LIBS="-L$FFMPEG_PREFIX/lib $LIBS"
+ LDFLAGS="-L$FFMPEG_PREFIX/lib $LDFLAGS"
+ CFLAGS="-I$FFMPEG_PREFIX/include $CFLAGS"
+
+ AC_CHECK_LIB(avdevice,
+ avdevice_version,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVDEVICE=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lavdevice"
+ ]
+ )
+ AC_CHECK_LIB(avutil,
+ av_malloc,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVUTIL=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lavutil"
+ ]
+ )
+ AC_CHECK_LIB(avcodec,
+ avcodec_init,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVCODEC=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lavcodec"
+ ],
+ [],
+ [-lavutil]
+ )
+ AC_CHECK_LIB(avformat,
+ av_register_all,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVFORMAT=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lavformat"
+ ],
+ [],
+ [-lavcodec -lavutil]
+ )
+ AC_CHECK_LIB(swscale,
+ sws_scale,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lswscale"
+ ],
+ [],
+ [-lavutil]
+ )
+ AC_CHECK_LIB(avcore,
+ avcore_version,
+ [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVCORE=1"
+ ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lavcore"
+ ]
+ )
+
+ fi
+
+ LIBS="$LIBS $ac_ffmpeg_ldflags"
+ export PKG_CONFIG_PATH=$SAVED_PKG_CONFIG_PATH
+ ]
+ )
+
+dnl # Video for Linux 2
+AC_ARG_ENABLE(v4l2,
+ AC_HELP_STRING([--disable-v4l2],
+ [Disable Video4Linux2 (default: not disabled)]),
+ [
+ if test "$enable_v4l2" = "no"; then
+ AC_MSG_RESULT([Checking if V4L2 is disabled... yes])
+ fi
+ ],
+ [
+ AC_SUBST(ac_v4l2_cflags)
+ AC_SUBST(ac_v4l2_ldflags)
+ AC_CHECK_LIB(v4l2,
+ v4l2_open,
+ [ac_v4l2_cflags="-DPJMEDIA_VIDEO_DEV_HAS_V4L2=1"
+ ac_v4l2_ldflags="-lv4l2"
+ LIBS="$LIBS -lv4l2"
+ ]
+ )
+ ])
+
+dnl ########################################################
+dnl # Intel IPP support
+dnl #
+AC_ARG_ENABLE(ipp,
+ AC_HELP_STRING([--enable-ipp],
+ [Enable Intel IPP support. Specify the Intel IPP package and samples location using IPPROOT and IPPSAMPLES env var or with --with-ipp and --with-ipp-samples options]),
+ [],
+ [enable_ipp=no]
+ )
+
+AC_ARG_WITH(ipp,
+ AC_HELP_STRING([--with-ipp=DIR],
+ [Specify the Intel IPP location]),
+ [],
+ [with_ipp=no]
+ )
+
+AC_ARG_WITH(ipp-samples,
+ AC_HELP_STRING([--with-ipp-samples=DIR],
+ [Specify the Intel IPP samples location]),
+ [],
+ [with_ipp_samples=no]
+ )
+
+AC_ARG_WITH(ipp-arch,
+ AC_HELP_STRING([--with-ipp-arch=ARCH],
+ [Specify the Intel IPP ARCH suffix, e.g. "64" or "em64t. Default is blank for IA32"]),
+ [],
+ [with_ipp_arch=no]
+ )
+
+if test "x$enable_ipp" != "xno"; then
+ dnl #
+ dnl # Verifying Intel IPP path
+ dnl #
+ AC_MSG_CHECKING([Intel IPP location])
+
+ if test "x$with_ipp" != "xno" -a "x$with_ipp" != "x"; then
+ AC_MSG_RESULT([$with_ipp])
+ IPPROOT=$with_ipp
+ elif test "x$IPPROOT" = "x"; then
+ if test -d /opt/intel/ipp; then
+ IPPROOT=`ls -d /opt/intel/ipp/*/* | head -1`
+ AC_MSG_RESULT([autodetected in $IPPROOT])
+ fi
+ else
+ AC_MSG_RESULT([$IPPROOT])
+ fi
+
+ if test "x$with_ipp_arch" != "xno"; then
+ IPP_SUFFIX=$with_ipp_arch
+ AC_MSG_RESULT([IPP arch suffix is set to $IPP_SUFFIX])
+ else
+ IPP_SUFFIX=""
+ AC_MSG_RESULT([IPP arch suffix is set to empty])
+ fi
+
+ if test x$IPPROOT = x; then
+ AC_MSG_ERROR([the location is neither specified nor can be guessed. Please specify with IPPROOT env var or with --with-ipp option])
+ elif test ! -d $IPPROOT; then
+ AC_MSG_ERROR([not found])
+ elif test ! -d $IPPROOT/include; then
+ AC_MSG_ERROR([directory doesn't seem to be valid])
+ else
+ # IPP directory looks okay.
+ # Remove trailing backslash
+ IPPROOT=`echo $IPPROOT | sed 's/\/$//'`
+
+ SAVED_CFLAGS="$CFLAGS"
+ SAVED_LDFLAGS="$LDFLAGS"
+ SAVED_LIBS="$LIBS"
+
+ IPP_CFLAGS="-I$IPPROOT/include"
+ IPP_LIBS="-lippsc${IPP_SUFFIX} -lipps${IPP_SUFFIX} -lippcore${IPP_SUFFIX}"
+
+#
+ # Some differences between Mac OS X and Linux
+ case $target in
+ *darwin* )
+ IPP_LDFLAGS="-L$IPPROOT/Libraries -L$IPPROOT/lib"
+ ;;
+ *)
+ # Find out where the libraries live.
+ IPP7_ARCH=""
+ if test -d $IPPROOT/lib/intel64; then
+ IPP7_ARCH="intel64"
+ elif test -d $IPPROOT/lib/ia32; then
+ IPP7_ARCH="ia32"
+ elif test -d $IPPROOT/lib/mic; then
+ IPP7_ARCH="mic"
+ fi
+
+ if test -z "$IPP7_ARCH"; then
+ # IPP6 (and possibly below)
+ IPP_LDFLAGS="-L$IPPROOT/sharedlib"
+ IPP_LIBS="$IPP_LIBS -lippsr${IPP_SUFFIX} -lguide"
+ else
+ # IPP7
+ if ! test -d $IPPROOT/../compiler; then
+ AC_MSG_ERROR([Cannot find $IPPROOT/../compiler directory. Please set IPPROOT variable correctly])
+ fi
+ IPP_CFLAGS="$IPP_CFLAGS"
+ IPP_LDFLAGS="-L$IPPROOT/lib/intel64 -L$IPPROOT/../compiler/lib/$IPP7_ARCH"
+ IPP_LIBS="$IPP_LIBS -liomp5"
+ fi
+ ;;
+ esac
+
+ #IPP_LDFLAGS="-L$IPPROOT/sharedlib"
+ #Static:
+ #IPP_LIBS="-lippscmerged -lippsrmerged -lippsmerged -lippcore"
+
+ CFLAGS="$CFLAGS $IPP_CFLAGS"
+ LDFLAGS="$LDFLAGS $IPP_LDFLAGS"
+ LIBS="$IPP_LIBS $LIBS"
+
+
+ AC_MSG_CHECKING([Intel IPP usability])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <ippcore.h>
+ ]],
+ [ippStaticInit();])],
+ [AC_MSG_RESULT(ok)],
+ [AC_MSG_FAILURE([Error: unable to recognize your IPP installation. Make sure the paths and ARCH suffix are set correctly, run with --help for more info])])
+
+ CFLAGS="$SAVED_CFLAGS"
+ LDFLAGS="$SAVED_LDFLAGS"
+ LIBS="$SAVED_LIBS"
+ fi
+
+ dnl #
+ dnl # Verifying Intel IPP samples path
+ dnl #
+ AC_MSG_CHECKING([Intel IPP samples location])
+
+ if test "x$with_ipp_samples" != "xno" -a "x$with_ipp_samples" != "x"; then
+ AC_MSG_RESULT([$with_ipp_samples])
+ IPPSAMPLES=$with_ipp_samples
+ elif test "x$IPPSAMPLES" = "x"; then
+ if test -d /opt/intel/ipp-samples; then
+ IPPSAMPLES=/opt/intel/ipp-samples
+ AC_MSG_RESULT([autodetected in $IPPSAMPLES])
+ fi
+ else
+ AC_MSG_RESULT([$IPPSAMPLES])
+ fi
+
+ if test x$IPPSAMPLES = x; then
+ AC_MSG_ERROR([the location is neither specified nor can be guessed. Please specify with IPPSAMPLES env var or with --with-ipp-samples option])
+ elif test ! -d $IPPSAMPLES; then
+ AC_MSG_ERROR([not found])
+ elif test ! -d $IPPSAMPLES/speech-codecs; then
+ AC_MSG_ERROR([directory doesn't seem to be valid])
+ else
+ # Remove trailing backslash
+ IPPSAMPLES=`echo $IPPSAMPLES | sed 's/\/$//'`
+
+ # Guess the libusc.a/libspeech.a build location
+ AC_MSG_CHECKING([Intel IPP USC build location])
+ if test -d $IPPSAMPLES/speech-codecs/bin; then
+ IPPVER=5
+ IPPSAMP_DIR=`ls -d $IPPSAMPLES/speech-codecs/bin/*gcc*/lib | head -1`
+ elif test -d $IPPSAMPLES/speech-codecs/_bin; then
+ IPPVER=6
+ if test -d $IPPSAMPLES/speech-codecs/_bin/*gcc*; then
+ # gcc compiler
+ IPPSAMP_DIR=`ls -d $IPPSAMPLES/speech-codecs/_bin/*gcc*/lib | head -1`
+ elif test -d $IPPSAMPLES/speech-codecs/_bin/*icc*; then
+ # icc compiler
+ IPPSAMP_DIR=`ls -d $IPPSAMPLES/speech-codecs/_bin/*icc*/lib | head -1`
+ else
+ AC_MSG_FAILURE([Unable to find to find built binaries under $IPPSAMPLES/speech-codecs/{bin,_bin}. Have you built the IPP samples?])
+ fi
+ else
+ AC_MSG_FAILURE([unable to find $IPPSAMPLES/speech-codecs/bin/*gcc*/lib or $IPPSAMPLES/speech-codecs/_bin/*gcc*/lib directory. Have you built the samples?])
+ fi
+
+ # Test the directory
+ if test ! -d $IPPSAMP_DIR; then
+ AC_MSG_FAILURE([There's something wrong with this script, directory $IPPSAMP_DIR does not exist])
+ exit 1;
+ fi
+
+ if test "x$IPPVER" = "x5"; then
+ IPPSAMP_LIBS="libusc.a"
+ IPPSAMP_LDLIBS="-lusc"
+ elif test "x$IPPVER" = "x6"; then
+ IPPSAMP_LIBS="libspeech.a"
+ IPPSAMP_LDLIBS="-lspeech"
+ else
+ AC_MSG_FAILURE([bug in this script: unsupported IPP version])
+ fi
+
+ if test ! -f $IPPSAMP_DIR/$IPPSAMP_LIBS; then
+ AC_MSG_FAILURE([$IPPSAMP_LIBS doesn't exist in $IPPSAMP_DIR])
+ fi
+
+ AC_MSG_RESULT([$IPPSAMP_DIR])
+
+ SAVED_CFLAGS="$CFLAGS"
+ SAVED_LDFLAGS="$LDFLAGS"
+ SAVED_LIBS="$LIBS"
+
+ IPPSAMP_INC="-I$IPPSAMPLES/speech-codecs/core/usc/include"
+ CFLAGS="$CFLAGS $IPPSAMP_INC"
+ LDFLAGS="$LDFLAGS -L$IPPSAMP_DIR"
+ LIBS="$IPPSAMP_LDLIBS $LIBS"
+
+ AC_MSG_CHECKING([Intel IPP USC usability])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <usc.h>
+ ]],
+ [extern USC_Fxns USC_G729AFP_Fxns;])],
+ [AC_MSG_RESULT(ok)],
+ [AC_MSG_FAILURE(failed)])
+
+ CFLAGS="$SAVED_CFLAGS"
+ LDFLAGS="$IPP_LDFLAGS $SAVED_LDFLAGS"
+ LIBS="$IPP_LIBS $SAVED_LIBS"
+
+ IPP_CFLAGS="$IPP_CFLAGS $IPPSAMP_INC"
+ IPP_LDFLAGS="$IPP_LDFLAGS -L$IPPSAMP_DIR"
+ IPP_LIBS="$IPPSAMP_LDLIBS $IPP_LIBS"
+ fi
+
+ CFLAGS="$CFLAGS $IPP_CFLAGS"
+ LDFLAGS="$LDFLAGS $IPP_LDFLAGS"
+ LIBS="$LIBS $IPP_LIBS"
+
+ ac_build_mak_vars="$ac_build_mak_vars\n\
+export IPP_CFLAGS=$IPP_CFLAGS\n\
+export IPP_LDFLAGS=$IPP_LDFLAGS\n\
+export IPP_LIBS=$IPP_LIBS"
+else
+ AC_MSG_RESULT([Skipping Intel IPP settings (not wanted)])
+fi
+
+
+dnl ##########################################
+dnl #
+dnl # PJSIP CONFIG
+dnl #
+
+dnl # SSL alt prefix
+AC_ARG_WITH(ssl,
+ AC_HELP_STRING([--with-ssl=DIR],
+ [Specify alternate libssl prefix]),
+ [],
+ [with_ssl=no]
+ )
+
+dnl # Do not use default SSL installation if we are cross-compiling
+if test "x$ac_cross_compile" != "x" -a "x$with_ssl" = "xno"; then
+ enable_ssl=no
+fi
+
+dnl # Include SSL support
+AC_SUBST(ac_no_ssl)
+AC_ARG_ENABLE(ssl,
+ AC_HELP_STRING([--disable-ssl],
+ [Exclude SSL support the build (default: autodetect)])
+ ,
+ [
+ if test "$enable_ssl" = "no"; then
+ [ac_no_ssl=1]
+ AC_MSG_RESULT([Checking if SSL support is disabled... yes])
+ fi
+ ],
+ [
+ AC_MSG_RESULT([checking for OpenSSL installations..])
+ if test "x$with_ssl" != "xno" -a "x$with_ssl" != "x"; then
+ CFLAGS="$CFLAGS -I$with_ssl/include"
+ LDFLAGS="$LDFLAGS -L$with_ssl/lib"
+ AC_MSG_RESULT([Using SSL prefix... $with_ssl])
+ fi
+ AC_SUBST(openssl_h_present)
+ AC_SUBST(libssl_present)
+ AC_SUBST(libcrypto_present)
+ AC_CHECK_HEADER(openssl/ssl.h,[openssl_h_present=1])
+ AC_CHECK_LIB(crypto,ERR_load_BIO_strings,[libcrypto_present=1 && LIBS="$LIBS -lcrypto"])
+ AC_CHECK_LIB(ssl,SSL_library_init,[libssl_present=1 && LIBS="$LIBS -lssl"])
+ if test "x$openssl_h_present" = "x1" -a "x$libssl_present" = "x1" -a "x$libcrypto_present" = "x1"; then
+ AC_MSG_RESULT([OpenSSL library found, SSL support enabled])
+ # PJSIP_HAS_TLS_TRANSPORT setting follows PJ_HAS_SSL_SOCK
+ #AC_DEFINE(PJSIP_HAS_TLS_TRANSPORT, 1)
+ AC_DEFINE(PJ_HAS_SSL_SOCK, 1)
+ else
+ AC_MSG_RESULT([** OpenSSL libraries not found, disabling SSL support **])
+ fi
+ ])
+
+dnl # opencore-amrnb alt prefix
+AC_ARG_WITH(opencore-amrnb,
+ AC_HELP_STRING([--with-opencore-amrnb=DIR],
+ [Specify alternate libopencore-amrnb prefix]),
+ [],
+ [with_opencore_amrnb=no]
+ )
+
+dnl # Do not use default opencore-amrnb installation if we are cross-compiling
+if test "x$ac_cross_compile" != "x" -a "x$with_opencore_amrnb" = "xno"; then
+ enable_opencore_amrnb=no
+fi
+
+dnl # Include opencore-amrnb support
+AC_SUBST(ac_no_opencore_amrnb)
+AC_ARG_ENABLE(opencore_amrnb,
+ AC_HELP_STRING([--disable-opencore-amrnb],
+ [Exclude OpenCORE AMR-NB support from the build (default: autodetect)])
+ ,
+ [
+ if test "$enable_opencore_amrnb" = "no"; then
+ [ac_no_opencore_amrnb=1]
+ AC_DEFINE(PJMEDIA_HAS_OPENCORE_AMRNB_CODEC,0)
+ AC_MSG_RESULT([Checking if OpenCORE AMR-NB support is disabled... yes])
+ fi
+ ],
+ [
+ AC_MSG_RESULT([checking for OpenCORE AMR-NB installations..])
+ if test "x$with_opencore_amrnb" != "xno" -a "x$with_opencore_amrnb" != "x"; then
+ CFLAGS="$CFLAGS -I$with_opencore_amrnb/include"
+ LDFLAGS="$LDFLAGS -L$with_opencore_amrnb/lib"
+ AC_MSG_RESULT([Using OpenCORE AMR-NB prefix... $with_opencore_amrnb])
+ fi
+ AC_SUBST(opencore_amrnb_h_present)
+ AC_SUBST(opencore_amrnb_present)
+ AC_CHECK_HEADER(opencore-amrnb/interf_enc.h,[opencore_amrnb_h_present=1])
+ AC_CHECK_LIB(opencore-amrnb,Encoder_Interface_init,[opencore_amrnb_present=1 && LIBS="$LIBS -lopencore-amrnb"])
+ if test "x$opencore_amrnb_h_present" = "x1" -a "x$opencore_amrnb_present" = "x1"; then
+ AC_MSG_RESULT([OpenCORE AMR-NB library found, AMR-NB support enabled])
+ AC_DEFINE(PJMEDIA_HAS_OPENCORE_AMRNB_CODEC,1)
+ else
+ [ac_no_opencore_amrnb=1]
+ AC_DEFINE(PJMEDIA_HAS_OPENCORE_AMRNB_CODEC,0)
+ fi
+ ])
+
+dnl ##########################################
+dnl #
+dnl # MANUAL CONFIG
+dnl #
+
+
+dnl # Determine if select() requires nfds to be filled up with
+dnl # correct value (max_fd+1). If zero, nfds will be filled up with
+dnl # PJ_FD_SETSIZE
+AC_MSG_CHECKING([if select() needs correct nfds])
+case $target in
+ *rtems*) AC_DEFINE(PJ_SELECT_NEEDS_NFDS,1)
+ AC_MSG_RESULT(yes)
+ ;;
+ *) AC_DEFINE(PJ_SELECT_NEEDS_NFDS,0)
+ AC_MSG_RESULT([no (default)])
+ AC_MSG_RESULT([** Decided that select() doesn't need correct nfds (please check)])
+ ;;
+esac
+
+dnl # Determine if pj_thread_create() should enforce thread stack size when
+dnl # creating thread. Default is zero, to allow OS to allocate appropriate
+dnl # thread's stack size.
+AC_MSG_CHECKING([if pj_thread_create() should enforce stack size])
+case $target in
+ *rtems*) AC_DEFINE(PJ_THREAD_SET_STACK_SIZE,1)
+ AC_MSG_RESULT(yes)
+ ;;
+ *) AC_DEFINE(PJ_THREAD_SET_STACK_SIZE,0)
+ AC_MSG_RESULT([no (default)])
+ ;;
+esac
+
+dnl # Determine if pj_thread_create() should allocate thread's stack from
+dnl # the pool. Default is zero, to let OS allocate thread's stack.
+AC_MSG_CHECKING([if pj_thread_create() should allocate stack])
+case $target in
+ *rtems*) AC_DEFINE(PJ_THREAD_ALLOCATE_STACK,1)
+ AC_MSG_RESULT(yes)
+ ;;
+ *) AC_DEFINE(PJ_THREAD_ALLOCATE_STACK,0)
+ AC_MSG_RESULT([no (default)])
+ ;;
+esac
+
+dnl # This value specifies the value set in errno by the OS when a non-blocking
+dnl # socket recv() can not return immediate data.
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ AC_DEFINE(PJ_BLOCKING_ERROR_VAL,WSAEWOULDBLOCK)
+ ;;
+ *) AC_DEFINE(PJ_BLOCKING_ERROR_VAL,EAGAIN)
+ AC_MSG_RESULT([** Setting non-blocking recv() retval to EAGAIN (please check)])
+ ;;
+esac
+
+dnl # This value specifies the value set in errno by the OS when a non-blocking
+dnl # socket connect() can not get connected immediately.
+case $target in
+ *mingw* | *cygw* | *win32* | *w32* )
+ AC_DEFINE(PJ_BLOCKING_CONNECT_ERROR_VAL,WSAEWOULDBLOCK)
+ ;;
+ *) AC_DEFINE(PJ_BLOCKING_CONNECT_ERROR_VAL,EINPROGRESS)
+ AC_MSG_RESULT([** Setting non-blocking connect() retval to EINPROGRESS (please check)])
+ ;;
+esac
+
+
+AC_SUBST(target)
+AC_SUBST(ac_linux_poll,select)
+AC_SUBST(ac_host,unix)
+AC_SUBST(ac_main_obj)
+case $target in
+ *rtems*)
+ ac_main_obj=main_rtems.o
+ ;;
+ *)
+ ac_main_obj=main.o
+ ;;
+esac
+AC_SUBST(CC)
+
+ac_build_mak_vars=`echo $ac_build_mak_vars | sed 's/\\\\n/\n/g'`
+AC_OUTPUT()
+
+
+AC_MSG_RESULT([
+
+Configurations for current target have been written to 'build.mak', and 'os-auto.mak' in various build directories, and pjlib/include/pj/compat/os_auto.h.
+
+Further customizations can be put in:
+ - 'user.mak'
+ - 'pjlib/include/pj/config_site.h'
+
+The next step now is to run 'make dep' and 'make'.
+])
+