dnl This file is part of linux-call-router
dnl Copyright (C) 2007 Joerg Habenicht (j.habenicht@gmx.de)
dnl Copyright (C) 2008 Peter Schlaile (peter -at- schlaile.de)
+dnl Copyright (C) 2010 Andreas Eversberg (jolly@eversberg.eu)
dnl This program is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License as
dnl This keeps being the first instruction.
dnl Change the 2nd argument if the version increases
dnl 1st + 2nd argument is used for distribution package name
-AC_INIT(lcr, 1.3, andreas@eversberg.eu)
+AC_INIT(lcr, 1.14, andreas@eversberg.eu)
AC_PREREQ(2.59)
+AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([main.c])
-AM_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADER([config.h])
# fix warnings from autoconf + automake
AC_GNU_SOURCE
-# AC_USE_SYSTEM_EXTENSIONS
-AM_INIT_AUTOMAKE(lcr,1.3)
+dnl AC_USE_SYSTEM_EXTENSIONS
+AM_INIT_AUTOMAKE([foreign subdir-objects])
# Checks for programs.
+AC_PROG_GREP
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
dnl required, if per binary CFLAGS are used
dnl AM_PROG_CC_C_O
dnl enable this to have all special options on one place
dnl AC_PRESERVE_HELP_ORDER
+# check for mISDN
+AC_ARG_WITH([misdn],
+ [AS_HELP_STRING([--with-misdn],
+ [compile with mISDN driver @<:@default=check@:>@])
+ ],
+ [],
+ [with_misdn="check"])
+
+AS_IF([test "x$with_misdn" != xno],
+ [AC_CHECK_HEADERS([mISDN/mbuffer.h],
+ [with_misdn="yes"],
+ [if test "x$with_misdn" != xcheck ; then
+ AC_MSG_FAILURE(
+ [--with-misdn was given, but test for header-file mISDN/mbuffer.h failed])
+ fi
+ ])
+ ])
+
+AM_CONDITIONAL(ENABLE_MISDN, test "x$with_misdn" == "xyes" )
+
# check for asterisk
AC_ARG_WITH([asterisk],
[AS_HELP_STRING([--with-asterisk],
[with_asterisk="check"])
AS_IF([test "x$with_asterisk" != xno],
- [AC_CHECK_HEADERS([asterisk/channel.h],
+ [AC_CHECK_HEADERS([asterisk/compiler.h],
[with_asterisk="yes"],
[if test "x$with_asterisk" != xcheck ; then
AC_MSG_FAILURE(
- [--with-asterisk was given, but test for header-file asterisk/channel.h failed])
+ [--with-asterisk was given, but test for header-file asterisk/compiler.h failed])
fi
])
])
+if test "x$with_asterisk" = "xyes"; then
+ dnl detect whether asterisk/indications.h defines ast_tone_zone_sound (1.6.2
+ dnl and later), ind_tone_zone_sound (1.6.0) or tone_zone_sound (1.4)
+ ast_tone_zone_sound=
+ apc_test_result=
+ ast_1_8_or_higher=
+
+ AC_CHECK_TYPE([struct ast_tone_zone_sound],
+ [ast_tone_zone_sound=ast_tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/linkedlists.h>
+#include <asterisk/indications.h>])
+
+ AS_IF([test "x$ast_tone_zone_sound" = "x"],
+ [AC_CHECK_TYPE([struct ind_tone_zone_sound],
+ [ast_tone_zone_sound=ind_tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/linkedlists.h>
+#include <asterisk/indications.h>])])
+ AS_IF([test "x$ast_tone_zone_sound" = "x"],
+ [AC_CHECK_TYPE([struct tone_zone_sound],
+ [ast_tone_zone_sound=tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/indications.h>])])
+
+ if test "x$ast_tone_zone_sound" = "x"; then
+ AC_MSG_FAILURE([No ast_tone_zone_sound, confused...])
+ fi
+
+
+ AC_CHECK_TYPE([struct ast_party_caller],
+ [apc_test_result=yes], [], [
+#include <asterisk.h>
+#include <asterisk/channel.h>])
+
+ if test "x$apc_test_result" = "xyes"; then
+ ast_1_8_or_higher="-DAST_1_8_OR_HIGHER"
+ fi
+
+ AST_CFLAGS="-Dast_tone_zone_sound=$ast_tone_zone_sound $ast_1_8_or_higher"
+
+ AC_SUBST([AST_CFLAGS])
+fi
+
AM_CONDITIONAL(ENABLE_ASTERISK_CHANNEL_DRIVER, test "x$with_asterisk" == "xyes" )
# check for crypto
]
)
+# check for gsm-bs
+AC_ARG_WITH([gsm-bs],
+ [AS_HELP_STRING([--with-gsm-bs],
+ [compile with OpenBSC support @<:@default=no@:>@])
+ ],
+ [],
+ [with_gsm_bs="check"])
+
+AM_CONDITIONAL(ENABLE_GSM_BS, test "x$with_gsm_bs" == "xyes" )
+
+# check for gsm-ms
+AC_ARG_WITH([gsm-ms],
+ [AS_HELP_STRING([--with-gsm-ms],
+ [compile with Osmocom-bb support @<:@default=no@:>@])
+ ],
+ [],
+ [with_gsm_ms="check"])
+
+AM_CONDITIONAL(ENABLE_GSM_MS, test "x$with_gsm_ms" == "xyes" )
+
+AM_CONDITIONAL(ENABLE_GSM, test "x$with_gsm_bs" == "xyes" -o "x$with_gsm_ms" == "xyes")
+
+# check for opencore-amrnb for AMR and EFR decoding
+found_opencore_amrnb=yes
+PKG_CHECK_MODULES(OPENCORE_AMRNB, opencore-amrnb >= 0.1.0, , found_opencore_amrnb=no)
+AM_CONDITIONAL(ENABLE_GSMAMR, test "$found_opencore_amrnb" = "yes")
+if test "$found_opencore_amrnb" = yes; then
+ AC_DEFINE(HAVE_OPENCORE_AMRNB, 1, [Define to 1 if OpenCore AMR-NB library is available])
+fi
+
+# check for HR codec
+AC_ARG_ENABLE(gsmhr,
+ [AS_HELP_STRING(
+ [--enable-gsmhr],
+ [Enable support for GSM HR codec using reference code]
+ )],
+ [enable_gsmhr=1], [enable_gsmhr=0])
+AM_CONDITIONAL(ENABLE_GSMHR, test "x$enable_gsmhr" = "x1")
+if test "x$enable_gsmhr" = "x1"; then
+ AM_PATH_PYTHON([2.4])
+ AC_DEFINE(HAVE_LIBGSMHR, 1, [Define to 1 if libgsmhr is available])
+fi
+
+# check for ss5
+AC_ARG_WITH([ss5],
+ [AS_HELP_STRING([--with-ss5],
+ [compile with CCITT No. 5 support @<:@default=no@:>@])
+ ],
+ [],
+ [with_ss5="check"])
+
+AM_CONDITIONAL(ENABLE_SS5, test "x$with_ss5" == "xyes" )
+
+# check for SIP
+AC_ARG_WITH([sip],
+ [AS_HELP_STRING([--with-sip],
+ [compile with SIP support (sofia-sip is required) @<:@default=no@:>@])
+ ],
+ [],
+ [with_sip="check"])
+
+AM_CONDITIONAL(ENABLE_SIP, test "x$with_sip" == "xyes" )
+
+AS_IF([test "x$with_sip" == xyes -o "x$with_sip" == xyes], [
+ PKG_CHECK_MODULES(SOFIA, sofia-sip-ua >= 1.12)
+ ])
+
+# check for VoOTP
+AC_ARG_WITH([vootp],
+ [AS_HELP_STRING([--with-vootp],
+ [compile with VoOTP support (libvootp is required) @<:@default=no@:>@])
+ ],
+ [],
+ [with_vootp="check"])
+
+AM_CONDITIONAL(ENABLE_VOOTP, test "x$with_vootp" == "xyes" )
+
+AS_IF([test "x$with_vootp" == xyes -o "x$with_vootp" == xyes], [
+ PKG_CHECK_MODULES(VOOTP, libvootp >= 0.0)
+ ])
+
# Checks for libraries.
AC_CHECK_LIB([m], [main])
AC_CHECK_LIB([ncurses], [main])
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([fcntl.h netinet/in.h stdlib.h string.h sys/file.h sys/ioctl.h sys/socket.h sys/time.h unistd.h ctype.h assert.h mISDNuser/mbuffer.h assert.h])
+AC_CHECK_HEADERS([fcntl.h netinet/in.h stdlib.h string.h sys/file.h sys/ioctl.h sys/socket.h sys/time.h unistd.h ctype.h assert.h assert.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_CHECK_FUNCS([gettimeofday memmove memset mkdir socket strcasecmp strchr strerror strncasecmp strstr strtol strtoul])
-AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([Makefile include/Makefile include/gsmhr/Makefile libgsmhr/Makefile])
AC_OUTPUT
+
+
+AS_IF([test "x$with_misdn" == xyes],[AC_MSG_NOTICE( Compiled with mISDN support )],[AC_MSG_NOTICE( Not compiled with mISDN support)])
+AS_IF([test "x$with_gsm_bs" == xyes],[AC_MSG_NOTICE( Compiled with GSM network side support )],[AC_MSG_NOTICE( Not compiled with GSM network side support)])
+AS_IF([test "x$with_gsm_ms" == xyes],[AC_MSG_NOTICE( Compiled with GSM mobile side support )],[AC_MSG_NOTICE( Not compiled with GSM mobile side support)])
+AS_IF([test "x$enable_gsmhr" == x1],[AC_MSG_NOTICE( Compiled with GSM half rate codec support )],[AC_MSG_NOTICE( Not compiled with GSM half rate codec support)])
+AS_IF([test "x$found_opencore_amrnb" == xyes],[AC_MSG_NOTICE( Compiled with GSM AMR codec support )],[AC_MSG_NOTICE( Not compiled with GSM AMR codec support)])
+AS_IF([test "x$with_asterisk" == xyes],[AC_MSG_NOTICE( Compiled with Asterisk channel driver support )],[AC_MSG_NOTICE( Not compiled with Asterisk channel driver support)])
+AS_IF([test "x$with_ss5" == xyes],[AC_MSG_NOTICE( Compiled with CCITT No.5 support )],[AC_MSG_NOTICE( Not compiled with CCITT No.5 support)])
+AS_IF([test "x$with_sip" == xyes],[AC_MSG_NOTICE( Compiled with SIP support )],[AC_MSG_NOTICE( Not compiled with SIP support)])
+AS_IF([test "x$with_vootp" == xyes],[AC_MSG_NOTICE( Compiled with VoOTP support )],[AC_MSG_NOTICE( Not compiled with VoOTP support)])
+