dnl dnl History dnl ------- dnl before time a lot happend before start of history dnl 8-Sep-2002 tries included more tests for used functions dnl 17-Sep-2002 tries fail configure if needed libs not there dnl 14-Nov-2002 tries support for *BSD systems dnl 22-Mar-2003 tries check for sockaddr_t, hstrerror() dnl --enable-almost-static (for Fli4l use) dnl --enable-uclibc (uClibc building support) dnl 29-Mar-2003 tries added support for libosip2 dnl 6-Apr-2003 tries redone the fli4l specific build options dnl now: --enable-fli4l-libc5, --enable-fli4l-uclibc dnl 7-Apr-2003 tries added siproxd.spec to autoconf process dnl 31-Jul-2003 tries changed to support OSIP2 only dnl 1-Sep-2003 tries check for IPCHAINS dnl 5-Sep-2003 tries test for pthreads before libosip stuff dnl 19-Sep-2003 tries DMALLOC support dnl 1-Nov-2003 tries check for NETFILTER (IPTABLES) dnl 18-Nov-2003 tries include sysconfdir to search for config dnl 19-Nov-2003 tries changes to support Solaris & BSD/OS dnl 22-Nov-2003 tries test for gethostbyname_r() & # of args dnl 22-Jan-2004 tries add --enable-static option dnl 06-Mar-2004 tries del daemon(), add setsid() dnl 09-Apr-2004 tries add --with-custom-fwmodule dnl 09-May-2004 tries fli4l-uclibc links statically agains pthreads dnl 29-May-2004 tries use AC_CHECK_TYPE to check for socklen_t dnl 09-May-2004 tries fli4l-libc5 does NOT use gethostbyname_r() dnl (there seems to be a bug somewhere) dnl 18-Aug-2004 tries fli4l-uclibc -> fli4l-21-uclibc, fli4l-22-uclibc dnl 2.1.x has no pthread support, link -static dnl 2.2.x has (maybe) pthread support dnl 08-Jan-2005 tries FreeBSD: check for libgnugetopt before using it dnl Cygwin build support dnl dnl dnl Process this file with autoconf to produce a configure script. AC_INIT(src/siproxd.c) dnl ****************************************************************** dnl dnl Release Version dnl SPD_MAJOR_VERSION=0 SPD_MINOR_VERSION=5 SPD_MICRO_VERSION=10 SPD_VERSION=$SPD_MAJOR_VERSION.$SPD_MINOR_VERSION.$SPD_MICRO_VERSION dnl ********************************************************************* dnl dnl Initialize automake stuff dnl AC_CONFIG_AUX_DIR(scripts) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(siproxd, $SPD_VERSION) dnl dnl Checks for needed programs. dnl AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S dnl dnl add dnl --with-extra-includes dnl --with-extra-libs dnl AC_ARG_WITH(extra-includes, [ --with-extra-includes=DIR adds non standard include paths], extra_includes="$withval" ) AC_SUBST(extra_includes) AC_MSG_CHECKING("extra includes") AC_MSG_RESULT($extra_includes) AC_ARG_WITH(extra-libs, [ --with-extra-libs=DIR adds non standard library paths], extra_libs="$withval" ) AC_SUBST(extra_libs) AC_MSG_CHECKING("extra libs") AC_MSG_RESULT($extra_libs) for each in $extra_includes; do CPPFLAGS="$CPPFLAGS -I$each"; done for each in $extra_libs; do LIBS="$LIBS -L$each"; done dnl dnl add dnl --enable-static AC_MSG_CHECKING(build statically linked executable) AC_ARG_ENABLE(static, [ --enable-static build statically linked executable], LDFLAGS="$LDFLAGS -static"; AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) dnl dnl add dnl --enable-dmalloc AC_MSG_CHECKING(building with DMALLOC support) AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc build with DMALLOC support], CFLAGS="$CFLAGS -DDMALLOC ";LIBS="-ldmallocth $LIBS"; AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) dnl dnl target platform specific stuff dnl AC_DEFINE_UNQUOTED(UNAME,"$target",[target platform]) AC_MSG_CHECKING(target platform) case "$target" in *-*-linux*) AC_MSG_RESULT(Linux) AC_DEFINE(_LINUX,,[building on Linux platform]) ;; *-*-freebsd*) AC_MSG_RESULT(FreeBSD) AC_DEFINE(_BSD,,[building on BSD platform]) AC_DEFINE(_FREEBSD,,[building on FreeBSD platform]) CPPFLAGS="$CPPFLAGS -I/usr/local/include/" LIBS="$LIBS -L/usr/local/lib/" AC_CHECK_LIB(gnugetopt,getopt_long,[LIBS="$LIBS -lgnugetopt"]) ;; *-*-openbsd*) AC_MSG_RESULT(OpenBSD) AC_DEFINE(_BSD,,[building on BSD platform]) AC_DEFINE(_OPENBSD,,[building on OpenBSD platform]) CPPFLAGS="$CPPFLAGS -I/usr/local/include/" LIBS="$LIBS -L/usr/local/lib/" ;; *-*-netbsd*) AC_MSG_RESULT(NetBSD) AC_DEFINE(_BSD,,[building on BSD platform]) AC_DEFINE(_NETBSD,,[building on NetBSD platform]) CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" LIBS="$LIBS -L/usr/pkg/lib" ;; *-*-bsdi* | *-*-bsdos*) AC_MSG_RESULT(BSD/OS) AC_DEFINE(_BSD,,[building on BSD platform]) AC_DEFINE(_BSDOS,,[building on BSD/OS platform]) ;; *-*-solaris2*) # It's easier to do this here, rather than AC_CHECK_LIBS for all of the # things that are/might be in libsocket or libnsl... AC_MSG_RESULT(Solaris 2.x) AC_DEFINE(_SOLARIS2,,[building on Solaris2 platform]) LIBS="$LIBS -lsocket -lnsl" ;; *-*-darwin*) AC_MSG_RESULT(Mac OS X) AC_DEFINE(_MACOSX,,[building on Mac OSX platform]) ;; *-*-cygwin*) AC_MSG_RESULT(Cygwin) AC_DEFINE(_CYGWIN,,[building on Cygwin (Windows) platform]) ;; *) AC_MSG_RESULT(Unknown Platform) AC_DEFINE(_UNKNOWN,,[building on unknown platform]) ;; esac dnl dnl Feature: dnl Fli4l libc5 support (only available on Linux, yet) dnl Fli4l uClibc support (only available on Linux, yet) dnl build_fli4l_libc5="no" build_fli4l_21_uclibc="no" build_fli4l_22_uclibc="no" case "$target" in *-*-linux*) AC_MSG_CHECKING(whether build for FLI4L 2.0.x libc5 ) AC_ARG_ENABLE(fli4l-libc5, [ --enable-fli4l-libc5 build FLI4L 2.0.x (libc5)], build_fli4l_libc5=$enableval,) AC_MSG_RESULT($build_fli4l_libc5) AC_MSG_CHECKING(whether build for FLI4L 2.1.x uClibc) AC_ARG_ENABLE(fli4l-21-uclibc, [ --enable-fli4l-21-uclibc build FLI4L 2.1.x (uClibc, no pthreads support)], build_fli4l_21_uclibc=$enableval,) AC_MSG_RESULT($build_fli4l_21_uclibc) AC_MSG_CHECKING(whether build for FLI4L 2.2.x uClibc) AC_ARG_ENABLE(fli4l-22-uclibc, [ --enable-fli4l-22-uclibc build FLI4L 2.2.x (uClibc, with pthreads support)], build_fli4l_22_uclibc=$enableval,) AC_MSG_RESULT($build_fli4l_22_uclibc) ;; *) AC_MSG_RESULT(building FLI4L not available on this platform) ;; esac build_static_libosip="no" build_static_pthread="no" if test "x$build_fli4l_libc5" = "xyes"; then dnl FLI4l 2.0.x libc5: make libosip and libpthread static build_static_libosip="yes" build_static_pthread="yes" elif test "x$build_fli4l_21_uclibc" = "xyes"; then dnl FLI4l 2.1.x uClibc: build all static LDFLAGS="$LDFLAGS -static"; elif test "x$build_fli4l_22_uclibc" = "xyes"; then dnl FLI4l 2.2.x uClibc: make libosip and libpthread static build_static_libosip="yes" fi dnl dnl Check for pthreads dnl ACX_PTHREAD(, echo "*** ERROR: pthreads is required!"; exit 1;) if test "x$build_static_pthread" = "xno"; then dnl link dynamically (default) LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" else dnl link statically to this lib dnl (this probably only will work on linux yet...) AC_MSG_CHECKING("where I can find static threads library") libpthreads_static=`find $extra_libs /lib /usr/lib /usr/local/lib \ -name 'lib*thread*.a' 2>/dev/null| \ egrep 'lib[p]?thread[s]?.a' |head -1` if test "x$libpthreads_static" != "x"; then LIBS="$libpthreads_static $LIBS" AC_MSG_RESULT($libpthreads_static) else echo "*** ERROR: a static threads library is required!";exit 1; fi CC="$PTHREAD_CC" fi dnl dnl Make sure that symbol _POSIX_THREAD_SAFE_FUNCTIONS is defined. dnl This is needed by some platforms to make reentrant functions dnl available (gethostbyname_r) dnl CFLAGS="$CFLAGS -D_POSIX_THREAD_SAFE_FUNCTIONS" dnl dnl add dnl --with-libosip-prefix=DIR dnl libosip_prefix_dir="" AC_ARG_WITH(libosip-prefix, [ --with-libosip-prefix=DIR use libosip2 from DIR/include and DIR/lib], if test x$withval != x ; then libosip_prefix_dir="$withval"; fi, ) AC_SUBST(libosip_prefix_dir) AC_MSG_CHECKING("libosip prefix") AC_MSG_RESULT($libosip_prefix_dir) dnl dnl Check for libosip dnl if test x$libosip_prefix_dir != x; then LIBS="-L$libosip_prefix_dir/lib $LIBS" CPPFLAGS="$CPPFLAGS -I$libosip_prefix_dir/include" fi if test "x$build_static_libosip" = "xno"; then dnl link dynamically (default) AC_CHECK_LIB(osip2, osip_init,, echo "*** ERROR: libosip2 is required! "\ "Maybe you need to use --with-libosip-prefix ?"; exit 1;, [-losipparser2]) AC_CHECK_LIB(osipparser2, parser_init,, echo "*** ERROR: libosipparser2 is required!";exit 1;,) else dnl link statically to this lib dnl (this probably only will work on linux yet...) AC_MSG_CHECKING("where I can find libosip2.a") libosip_static=`find $extra_libs /lib /usr/lib /usr/local/lib \ -name libosip2.a 2>/dev/null|head -1` if test "x$libosip_static" != "x"; then LIBS="$libosip_static $LIBS" AC_MSG_RESULT($libosip_static) else echo "*** ERROR: a static libosip library is required!";exit 1; fi AC_MSG_CHECKING("where I can find libosipparser2.a") libosip_static=`find $extra_libs /lib /usr/lib /usr/local/lib \ -name libosipparser2.a 2>/dev/null|head -1` if test "x$libosip_static" != "x"; then LIBS="$libosip_static $LIBS" AC_MSG_RESULT($libosip_static) else echo "*** ERROR: a static libosip library is required!";exit 1; fi fi dnl dnl add dnl --with-custom-fwmodule AC_MSG_CHECKING(building with a custom FW module) AC_ARG_WITH(custom-fwmodule, [ --with-custom-fwmodule=LIBRARY.a use custom firewall control module], FWLIBS="$withval"; AC_DEFINE(CUSTOM_FWMODULE, 1,[use custom firewall control module]) AC_MSG_RESULT($FWLIBS), AC_MSG_RESULT(no)) dnl dnl Checks for header files. dnl AC_HEADER_STDC AC_CHECK_HEADERS(sys/time.h errno.h) AC_CHECK_HEADERS(stdarg.h varargs.h) AC_CHECK_HEADERS(pwd.h getopt.h sys/socket.h netdb.h) dnl dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM dnl dnl check for typedef socklen (not available on SUSE 5.3 for example) dnl dnl FreeBSD has it in and AC_CHECK_TYPE(socklen_t, , AC_MSG_RESULT(socklen_t is not available - creating DEFINE to uint) AC_DEFINE(socklen_t, [unsigned int],[typedef socklen_t available]), [[$ac_includes_default] [#ifdef HAVE_NETDB_H] [#include ] [#endif]] ) dnl dnl Checks for library functions. dnl AC_FUNC_MEMCMP AC_FUNC_VPRINTF AC_CHECK_FUNCS(strerror) AC_CHECK_FUNCS(gethostbyname) dnl !! with FLI4L 2.0.x strange behavior with gethostbyname_r() dnl !! has been seen, dont use it. if test "x$build_fli4l_libc5" = "xno"; then dnl AC_CHECK_FUNCS(gethostbyname_r) ACX_WHICH_GETHOSTBYNAME_R() fi AC_CHECK_FUNCS(getopt_long setsid syslog) AC_CHECK_FUNCS(getuid setuid getgid setgid getpwnam chroot) AC_CHECK_FUNCS(socket bind select read send sendto fcntl) AC_CHECK_FUNCS(strncpy strchr strstr sprintf vfprintf vsnprintf) AC_CHECK_FUNCS(listen accept) AC_CHECK_FUNCS(fgets sscanf) AC_CHECK_FUNCS(hstrerror,,AC_CHECK_LIB(resolv,hstrerror,[ AC_DEFINE_UNQUOTED(HAVE_HSTRERROR) LIBS="$LIBS -lresolv"])) AC_CHECK_FUNCS(inet_pton inet_ntop inet_aton inet_ntoa) AC_CHECK_FUNCS(pthread_setschedparam sched_get_priority_min) AC_CHECK_FUNCS(sched_get_priority_max) dnl dnl sysconfdir dnl SIPROXDCONFPATH="" tmpset="$sysconfdir" while test "x$tmpset" != "x$SIPROXDCONFPATH"; do SIPROXDCONFPATH="$tmpset" eval tmpset="$tmpset" done AC_DEFINE_UNQUOTED(SIPROXDCONFPATH,"$SIPROXDCONFPATH", [will search for config file here]) LIBS="$LIBS $FWLIBS" AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(LIBS) dnl dnl Generate output files dnl AC_OUTPUT( \ siproxd.spec \ Makefile \ src/Makefile \ doc/Makefile \ scripts/Makefile \ contrib/Makefile \ )