forked from Mirrors/freeswitch
445 lines
14 KiB
Plaintext
445 lines
14 KiB
Plaintext
|
AC_INIT(configure.in)
|
||
|
AM_INIT_AUTOMAKE(jrtplib,3.3.0)
|
||
|
|
||
|
RTP_FILIO="// Don't have <sys/filio.h>"
|
||
|
RTP_SOCKIO="// Don't have <sys/sockio.h>"
|
||
|
RTP_ENDIAN="// Little endian system"
|
||
|
RTP_SOCKLENTYPE_UINT="// socklen_t is int'"
|
||
|
RTP_HAVE_SOCKADDR_LEN="// No sa_len member in struct sockaddr"
|
||
|
RTP_SUPPORT_IPV4MULTICAST="// No IPv4 multicasting support"
|
||
|
RTP_SUPPORT_IPV6MULTICAST="// No IPv6 multicasting support"
|
||
|
RTP_SUPPORT_THREAD="// No support for jthread"
|
||
|
RTP_SUPPORT_SDESPRIV="// No support for SDES PRIV items"
|
||
|
RTP_SUPPORT_INLINETEMPLATEPARAM="// Compiler doesn't support inline functions as template parameter"
|
||
|
RTP_SUPPORT_PROBATION="// Do not wait for a number of consecutive packets to validate source"
|
||
|
RTP_SUPPORT_GNUDRAND="// Not using drand48_r and srand48_r"
|
||
|
RTP_SUPPORT_RANDR="// Not using rand_r"
|
||
|
RTP_SUPPORT_GETLOGINR="// Not using getlogin_r"
|
||
|
RTP_SUPPORT_IPV6="// No IPv6 support"
|
||
|
RTP_SUPPORT_IFADDRS="// No ifaddrs support"
|
||
|
RTP_SUPPORT_GST="// No GStreamer support"
|
||
|
RTP_LINKLIBS=""
|
||
|
|
||
|
if test "BLA$CXXFLAGS" = "BLA" ; then
|
||
|
dnl CXXFLAGS="-g -Werror -Wall"
|
||
|
CXXFLAGS="-O2 "
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Set language to C++ and do libtool stuff
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_LANG(C++)
|
||
|
|
||
|
AM_PROG_LIBTOOL
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check for the SDES PRIV support
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_ARG_ENABLE(sdespriv,[ --disable-sdespriv Disable support for SDES PRIV items],[
|
||
|
if test "$enableval" = yes ; then
|
||
|
privsupport="yes"
|
||
|
else
|
||
|
privsupport="no"
|
||
|
fi],[
|
||
|
privsupport="yes"
|
||
|
])
|
||
|
|
||
|
if test "$privsupport" = "yes" ; then
|
||
|
RTP_SUPPORT_SDESPRIV="#define RTP_SUPPORT_SDESPRIV"
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check for the probation support
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_ARG_ENABLE(probation,[ --disable-probation Disable support for probation of a new source],[
|
||
|
if test "$enableval" = yes ; then
|
||
|
probsupport="yes"
|
||
|
else
|
||
|
probsupport="no"
|
||
|
fi],[
|
||
|
probsupport="yes"
|
||
|
])
|
||
|
|
||
|
if test "$probsupport" = "yes" ; then
|
||
|
RTP_SUPPORT_PROBATION="#define RTP_SUPPORT_PROBATION"
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check for the jthread headers
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
RTP_SUPPORT_THREAD="#define RTP_SUPPORT_THREAD"
|
||
|
RTP_LINKLIBS="$RTP_LINKLIBS -lpthread"
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if sys/filio.h exists (used on solaris)
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_CHECK_HEADER(sys/filio.h,[RTP_FILIO="#define RTP_HAVE_SYS_FILIO"])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if sys/sockio.h exists (used on solaris)
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_CHECK_HEADER(sys/sockio.h,[RTP_SOCKIO="#define RTP_HAVE_SYS_SOCKIO"])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if it's a big endian or little endian system
|
||
|
dnl Note that we must be careful when a cross-compiler is being used...
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
if test "$cross_compiling" = yes ; then
|
||
|
cat << EOF
|
||
|
|
||
|
ASSUMING TARGET IS BIG ENDIAN:
|
||
|
|
||
|
The script detected a cross-compiler on your system. This can mean that
|
||
|
there really is a cross-compiler installed, or that for some other reason,
|
||
|
a simple program could not be run. You should check the config.log file
|
||
|
to verify this.
|
||
|
Since we are assuming a cross-compiler, we won't be able to actually test
|
||
|
any program. More important, we cannot test if the system is big or little
|
||
|
endian.
|
||
|
For now, big endian is assumed. If this assumption should be wrong, you will
|
||
|
have to comment the appropriate line in 'rtpconfig_unix.h'
|
||
|
|
||
|
EOF
|
||
|
RTP_ENDIAN="#define RTP_BIG_ENDIAN // comment this if the target is a little endian system"
|
||
|
else
|
||
|
AC_C_BIGENDIAN
|
||
|
if test "$ac_cv_c_bigendian" = yes; then
|
||
|
RTP_ENDIAN="#define RTP_BIG_ENDIAN"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if compiler supports -Werror -Wall
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
oldcxxflags="$CXXFLAGS"
|
||
|
CXXFLAGS="$CXXFLAGS -Werror -Wall"
|
||
|
AC_MSG_CHECKING(if compiler supports -Werror -Wall)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <stdio.h>],[
|
||
|
printf("Hello world\n");],
|
||
|
AC_MSG_RESULT(yes),[
|
||
|
AC_MSG_RESULT(no)
|
||
|
CXXFLAGS="$oldcxxflags"])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check what the last argument for getsockname is
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(last argument of getsockname)
|
||
|
AC_TRY_COMPILE([#include <sys/types.h>
|
||
|
#include <sys/socket.h>],
|
||
|
[int param;
|
||
|
int sock = 0;
|
||
|
struct sockaddr addr;
|
||
|
getsockname(sock,&addr,¶m);],
|
||
|
AC_MSG_RESULT(int),
|
||
|
[
|
||
|
AC_MSG_RESULT(unsigned int)
|
||
|
RTP_SOCKLENTYPE_UINT="#define RTP_SOCKLENTYPE_UINT"
|
||
|
])
|
||
|
|
||
|
CXXFLAGS="$oldcxxflags"
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if multicast options are known
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if necessary options for IPv4 multicasting are available)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <netinet/in.h>],[
|
||
|
int testval;
|
||
|
struct ip_mreq mreq,mreq2;
|
||
|
mreq = mreq2; // avoid 'unused variable'
|
||
|
testval = IP_MULTICAST_TTL;
|
||
|
testval = IP_ADD_MEMBERSHIP;
|
||
|
testval = IP_DROP_MEMBERSHIP;],[
|
||
|
AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_IPV4MULTICAST="#define RTP_SUPPORT_IPV4MULTICAST"],
|
||
|
AC_MSG_RESULT(no))
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if sockaddr has a length field (sa_len)
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if struct sockaddr has sa_len member)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>],[
|
||
|
struct sockaddr sa;
|
||
|
sa.sa_len = 0;],[
|
||
|
AC_MSG_RESULT(yes)
|
||
|
RTP_HAVE_SOCKADDR_LEN="#define RTP_HAVE_SOCKADDR_LEN"],
|
||
|
AC_MSG_RESULT(no))
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if compiler needs -LANG:std (needed on Irix)
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if compiler can compile programs with STL)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <iostream>],[
|
||
|
std::cout << "Bla" << std::endl; ],
|
||
|
AC_MSG_RESULT(yes),
|
||
|
[AC_MSG_RESULT(no)
|
||
|
AC_MSG_CHECKING(if compiler can compile STL programs with option -LANG:std)
|
||
|
CXXFLAGS="$CXXFLAGS -LANG:std"
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <iostream>],[
|
||
|
std::cout << "Bla" << std::endl; ],
|
||
|
AC_MSG_RESULT(yes),[
|
||
|
AC_MSG_RESULT(no)
|
||
|
AC_MSG_ERROR(Unable to compile a trivial STL program)]
|
||
|
)
|
||
|
])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if compiler can handle inline function in template argument
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if compiler supports an inline function as a template argument)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include "src/rtphashtable.h"
|
||
|
inline int GetIndex(const int &elem) { return elem%10; }],[
|
||
|
RTPHashTable<int,GetIndex,10> table; ],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_INLINETEMPLATEPARAM="#define RTP_SUPPORT_INLINETEMPLATEPARAM"],
|
||
|
AC_MSG_RESULT(no)
|
||
|
)
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check for u_int32_t etc
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if types like u_int32_t exist)
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <sys/types.h>],[
|
||
|
u_int32_t x;
|
||
|
x = 0;],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
echo "#include <sys/types.h>" >src/rtptypes_unix.h
|
||
|
],[
|
||
|
AC_MSG_RESULT(no)
|
||
|
echo "Generating src/rtptypes.h ..."
|
||
|
if ! ( $CXX $CFLAGS -o tools/gettypes tools/gettypes.cpp >/dev/null 2>/dev/null ) ; then
|
||
|
AC_MSG_ERROR(Unable to create src/rtptypes_unix.h)
|
||
|
fi
|
||
|
if ! ( tools/gettypes >src/rtptypes_unix.h ) ; then
|
||
|
AC_MSG_ERROR(Unable to create src/rtptypes_unix.h)
|
||
|
fi
|
||
|
])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check random functions
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(for drand48_r and srand48_r)
|
||
|
AC_COMPILE_IFELSE([
|
||
|
#include <stdlib.h>
|
||
|
int main(void)
|
||
|
{
|
||
|
struct drand48_data drandbuffer;
|
||
|
double x;
|
||
|
srand48_r(12345,&drandbuffer);
|
||
|
drand48_r(&drandbuffer,&x);
|
||
|
return 0;
|
||
|
}
|
||
|
],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_GNUDRAND="#define RTP_SUPPORT_GNUDRAND"],
|
||
|
[
|
||
|
AC_MSG_RESULT(no)
|
||
|
AC_MSG_CHECKING(for rand_r)
|
||
|
AC_COMPILE_IFELSE([
|
||
|
#include <stdlib.h>
|
||
|
int main(void)
|
||
|
{
|
||
|
unsigned int x;
|
||
|
x = 12345;
|
||
|
rand_r(&x);
|
||
|
return 0;
|
||
|
}
|
||
|
],
|
||
|
[ AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_RANDR="#define RTP_SUPPORT_RANDR"],
|
||
|
[ AC_MSG_RESULT(no)])
|
||
|
])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check getlogin_r functions
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(for getlogin_r)
|
||
|
AC_COMPILE_IFELSE([
|
||
|
#include <unistd.h>
|
||
|
int main(void)
|
||
|
{
|
||
|
char buf[[256]];
|
||
|
getlogin_r(buf,256);
|
||
|
return 0;
|
||
|
}
|
||
|
],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_GETLOGINR="#define RTP_SUPPORT_GETLOGINR"],
|
||
|
[
|
||
|
AC_MSG_RESULT(no)
|
||
|
])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check IPv6 support
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_ARG_ENABLE(IPv6,[ --disable-IPv6 Disable support for IPv6],[
|
||
|
if test "$enableval" = yes ; then
|
||
|
ipv6support="yes"
|
||
|
else
|
||
|
ipv6support="no"
|
||
|
fi],[
|
||
|
ipv6support="yes"
|
||
|
])
|
||
|
|
||
|
if test "$ipv6support" = "yes" ; then
|
||
|
|
||
|
if test "$cross_compiling" = yes ; then
|
||
|
cat << EOF
|
||
|
|
||
|
ABOUT IPv6 SUPPORT:
|
||
|
|
||
|
Can't check if IPv6 support is possible when cross-compiling. For now, lets
|
||
|
assume that you want IPv6 support enabled. To disable it, comment the two
|
||
|
appropriate lines in src/rtpconfig_unix.h before running make.
|
||
|
|
||
|
EOF
|
||
|
else
|
||
|
|
||
|
AC_MSG_CHECKING(IPv6 support)
|
||
|
AC_RUN_IFELSE([
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>
|
||
|
int main(void)
|
||
|
{
|
||
|
int s;
|
||
|
|
||
|
s = socket(PF_INET6,SOCK_DGRAM,0);
|
||
|
if (s < 0)
|
||
|
return -1;
|
||
|
return 0;
|
||
|
}
|
||
|
],
|
||
|
[AC_MSG_RESULT(enabled)
|
||
|
RTP_SUPPORT_IPV6="#define RTP_SUPPORT_IPV6"
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if multicast options are known
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_MSG_CHECKING(if necessary options for IPv6 multicasting are available)
|
||
|
AC_COMPILE_IFELSE([
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <netinet/in.h>
|
||
|
|
||
|
int main(void)
|
||
|
{
|
||
|
int testval;
|
||
|
struct ipv6_mreq mreq,mreq2;
|
||
|
mreq = mreq2; // avoid 'unused variable'
|
||
|
testval = IPV6_MULTICAST_HOPS;
|
||
|
testval = IPV6_JOIN_GROUP;
|
||
|
testval = IPV6_LEAVE_GROUP;
|
||
|
return 0;
|
||
|
}
|
||
|
],[
|
||
|
AC_MSG_RESULT(yes)
|
||
|
RTP_SUPPORT_IPV6MULTICAST="#define RTP_SUPPORT_IPV6MULTICAST"],
|
||
|
AC_MSG_RESULT(no))],
|
||
|
[
|
||
|
AC_MSG_RESULT(disabled)
|
||
|
])
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check if ifaddrs.h exists so we can use getifaddrs
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_CHECK_HEADER(ifaddrs.h,[RTP_SUPPORT_IFADDRS="#define RTP_SUPPORT_IFADDRS"])
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Check gstreamer support
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_ARG_ENABLE(gst,[ --disable-gst Disable support GStreamer],[
|
||
|
if test "$enableval" = yes ; then
|
||
|
gstsupport="yes"
|
||
|
else
|
||
|
gstsupport="no"
|
||
|
fi],[
|
||
|
gstsupport="yes"
|
||
|
])
|
||
|
|
||
|
if test "$gstsupport" = "yes" ; then
|
||
|
|
||
|
dnl uninstalled is selected preferentially -- see pkg-config(1)
|
||
|
GST_REQ=0.9
|
||
|
GST_MAJORMINOR=0.9
|
||
|
PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ,
|
||
|
HAVE_GST="yes", HAVE_GST="no")
|
||
|
|
||
|
dnl check for gstreamer-plugins-base; uinstalled is selected preferentially
|
||
|
PKG_CHECK_MODULES(GST_PLUGINS_BASE, gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQ,
|
||
|
HAVE_GST_PLUGINS="yes", HAVE_GST_PLUGINS="no")
|
||
|
|
||
|
if test "x$HAVE_GST_PLUGINS" = "xyes" && test "x$HAVE_GST" = "xyes"; then
|
||
|
RTP_SUPPORT_GST="#define RTP_SUPPORT_GST"
|
||
|
GST_LIBS="$GST_LIBS -lgstnet-$GST_MAJORMINOR"
|
||
|
fi
|
||
|
|
||
|
RTP_GSTINCLUDES="$GST_CFLAGS $GST_PLUGINS_BASE_CFLAGS"
|
||
|
RTP_LINKLIBS="$RTP_LINKLIBS $GST_LIBS $GST_PLUGIN_BASE_LIBS"
|
||
|
fi
|
||
|
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
dnl Finish up...
|
||
|
dnl ---------------------------------------------------------------------------
|
||
|
|
||
|
AC_SUBST(RTP_FILIO)
|
||
|
AC_SUBST(RTP_SOCKIO)
|
||
|
AC_SUBST(RTP_ENDIAN)
|
||
|
AC_SUBST(RTP_SOCKLENTYPE_UINT)
|
||
|
AC_SUBST(RTP_HAVE_SOCKADDR_LEN)
|
||
|
AC_SUBST(RTP_SUPPORT_IPV4MULTICAST)
|
||
|
AC_SUBST(RTP_SUPPORT_THREAD)
|
||
|
AC_SUBST(RTP_SUPPORT_SDESPRIV)
|
||
|
AC_SUBST(RTP_SUPPORT_INLINETEMPLATEPARAM)
|
||
|
AC_SUBST(RTP_SUPPORT_PROBATION)
|
||
|
AC_SUBST(RTP_SUPPORT_GNUDRAND)
|
||
|
AC_SUBST(RTP_SUPPORT_RANDR)
|
||
|
AC_SUBST(RTP_SUPPORT_GETLOGINR)
|
||
|
AC_SUBST(RTP_SUPPORT_IPV6)
|
||
|
AC_SUBST(RTP_SUPPORT_IPV6MULTICAST)
|
||
|
AC_SUBST(RTP_SUPPORT_IFADDRS)
|
||
|
AC_SUBST(RTP_SUPPORT_GST)
|
||
|
AC_SUBST(RTP_GSTINCLUDES)
|
||
|
AC_SUBST(RTP_LINKLIBS)
|
||
|
AC_OUTPUT(Makefile \
|
||
|
src/Makefile \
|
||
|
src/rtpconfig_unix.h \
|
||
|
doc/Makefile \
|
||
|
tools/Makefile \
|
||
|
pkgconfig/Makefile \
|
||
|
pkgconfig/jrtplib.pc \
|
||
|
pkgconfig/jrtplib-uninstalled.pc \
|
||
|
)
|
||
|
|
||
|
|
||
|
AM_CONDITIONAL(IS64BITLINUX, [test `uname -m` = x86_64])
|