# FreeWTP -- An Open Source CAPWAP AC # # Copyright (C) 2012-2013 Massimo Vellucci # Copyright (C) 2016 Travelping GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING included with this # distribution); if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA AC_PREREQ(2.63) AC_INIT([freewtp], [1.3.0], [https://github.com/travelping/freewtp], [freewtp]) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([1.11 -Wall foreign subdir-objects silent-rules]) AC_USE_SYSTEM_EXTENSIONS AM_SILENT_RULES([yes]) # cross-compile macros AC_CANONICAL_BUILD AC_CANONICAL_HOST # AC_COPYRIGHT("SmartCapwap by Massimo Vellucci ") AC_COPYRIGHT("FreeWTP by Travelping ") AC_REVISION($Revision: 1.0 $) # AM_MAINTAINER_MODE # AC_PROG_INSTALL AC_LANG(C) AC_HEADER_STDC # AC_ARG_ENABLE( [dtls], [AS_HELP_STRING([--disable-dtls], [disable DTLS support])], , [enable_dtls="yes"] ) AC_ARG_ENABLE( [debug], [AS_HELP_STRING([--disable-debug], [disable debug support])], , [enable_debug="yes"] ) AC_ARG_ENABLE( [logging], [AS_HELP_STRING([--disable-logging], [disable logging support])], , [enable_logging="yes"] ) AC_ARG_WITH( [mem-check], [AS_HELP_STRING([--with-mem-check=TYPE], [build with debug memory checking, TYPE=no|internal|valgrind])], [ case "${withval}" in valgrind|internal|no) ;; *) AC_MSG_ERROR([bad value ${withval} for --mem-check]) ;; esac ], [with_mem_check="internal"] ) # WTP drivers wifi binding AC_ARG_ENABLE( [wifi-drivers-nl80211], [AS_HELP_STRING([--disable-wifi-drivers-nl80211], [disable WTP support for nl80211 wifi binding])], , [enable_wifi_drivers_nl80211="yes"] ) # specify output header file AM_CONFIG_HEADER(lib/config.h) # AC_PROG_CC([gcc]) AC_PROG_CC_C99 AC_PROG_CPP AM_PROG_CC_C_O AM_PROG_AR AM_PROG_LIBTOOL # AM_CONDITIONAL([DEBUG_BUILD], [test "$enable_debug" = yes]) if test "${enable_debug}" = "yes"; then CFLAGS="${CFLAGS} -DDEBUG -Wall -Werror -g -O0" AC_CHECK_HEADERS([execinfo.h], [have_backtrace="yes"],[]) if test "x${have_backtrace}" = "xyes"; then AC_DEFINE([USE_DEBUG_BACKTRACE], [1], [Use debug backtrace]) fi else CFLAGS="${CFLAGS} -O2" AC_DEFINE([DISABLE_LOGGING_DEBUG], [1], [Disable logging debug]) fi # Check LIBCONFIG library AC_CHECK_HEADER([libconfig.h], [], [AC_MSG_ERROR(You need the libconfig headers)]) AC_CHECK_LIB([config], [config_init], [CONFIG_LIBS="-lconfig"], [AC_MSG_ERROR(You need the libconfig library)]) # Check LIBCONFIG config_lookup_int() param type LIBCONFIG_LOOKUP_INT_ARG=int AC_MSG_CHECKING([what type of argument config_lookup_int() is expecting]) saved_CFLAGS="${CFLAGS}" saved_LIBS="${LIBS}" saved_LDFLAGS="${LDFLAGS}" CFLAGS="$CFLAGS $LIBCONFIG_CFLAGS -Werror" LIBS="$LIBS $CONFIG_LIBS" LDFLAGS="$LDFLAGS $LIBCONFIG_LDFLAGS" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [ #include ], [ int check; config_t config; (void)config_lookup_int(&config, "check", &check); ] )], [ AC_MSG_RESULT([int]) LIBCONFIG_LOOKUP_INT_ARG=int ], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [ #include ], [ long check; config_t config; (void)config_lookup_int(&config, "check", &check); ] )], [ AC_MSG_RESULT([long]) LIBCONFIG_LOOKUP_INT_ARG=long ], [ AC_MSG_RESULT([unknown]) AC_MSG_ERROR([failed to determine config_lookup_int() argument type]) ] )] ) CFLAGS="$saved_CFLAGS" LIBS="$saved_LIBS" LDFLAGS="$saved_LDFLAGS" AC_DEFINE_UNQUOTED([LIBCONFIG_LOOKUP_INT_ARG], [$LIBCONFIG_LOOKUP_INT_ARG], [config_lookup_int() argument type]) AC_CHECK_LIB([ev], [ev_run],, [AC_MSG_ERROR(Required library ev missing)]) # Check SSL library PKG_CHECK_MODULES([WOLFSSL], [wolfssl >= 3.8.0], [have_wolfssl_ssl="yes"], [have_wolfssl_ssl="no"]) # Check Netlink library PKG_CHECK_MODULES( [LIBNL3], [libnl-3.0 >= 3.1 libnl-genl-3.0 >= 3.1], [have_libnl3=yes], [PKG_CHECK_MODULES( [LIBNL], [libnl-1], [AC_DEFINE([HAVE_LIBNL_10], [1], [Use libnl-1.0 library])], [PKG_CHECK_MODULES( [LIBNL], [libnl-tiny], [AC_DEFINE([HAVE_LIBNL_TINY], [1], [Use libnl-tiny library])], [AC_MSG_ERROR(You need the libnl or libnl-tiny)] )] )] ) if test "${have_libnl3}" = "yes"; then AC_DEFINE([HAVE_LIBNL_3], [1], [Use libnl-3.1+ library]) CFLAGS="${CFLAGS} ${LIBNL3_CFLAGS}" LIBS="${LIBS} ${LIBNL3_LIBS}" fi AC_CHECK_HEADERS([netlink/genl/genl.h netlink/genl/family.h netlink/genl/ctrl.h], [], [AC_MSG_ERROR(You need the netlink header)]) AC_CHECK_HEADER([linux/nl80211.h], [], [AC_MSG_ERROR(You need the nl80211 header)]) # Check nl80211 if test "${enable_wifi_drivers_nl80211}" = "yes"; then AC_DEFINE([ENABLE_WIFI_DRIVERS_NL80211], [1], [Enable WTP support for nl80211 wifi binding]) fi AM_CONDITIONAL([BUILD_WTP_WIFI_DRIVERS_NL80211], [test "${enable_wifi_drivers_nl80211}" = "yes"]) if test "${enable_dtls}" = "yes"; then test "x${have_wolfssl_ssl}" != "xyes" && AC_MSG_ERROR(You need the wolfssl library) AC_DEFINE([ENABLE_DTLS], [1], [Enable DTLS]) fi # Check UDPLite AC_CHECK_HEADERS([netinet/udplite.h]) # Memory check case "${with_mem_check}" in internal) LIBS="${LIBS} -rdynamic" AC_DEFINE([USE_INTERNAL_MEMCHECK], [1], [Use internal memory debugging]) ;; valgrind) AC_CHECK_HEADER( [valgrind/memcheck.h], [ CFLAGS="${CFLAGS} -g -fno-inline" AC_DEFINE([USE_VALGRIND_MEMCHECK], [1], [Use valgrind memory debugging library]) ], [AC_MSG_ERROR([valgrind headers not found.])] ) ;; esac # test "${enable_logging}" = "yes" && AC_DEFINE([ENABLE_LOGGING], [1], [Enable logging]) # AM_CONDITIONAL([BUILD_DEBUG], [test "${enable_debug}" = "yes"]) AM_CONDITIONAL([DTLS_ENABLED], [test "${enable_dtls}" = "yes"]) # AC_SUBST([SSL_CFLAGS]) AC_SUBST([SSL_LIBS]) AC_SUBST([CONFIG_LIBS]) # AC_CONFIG_FILES([ Makefile lib/Makefile src/Makefile ]) AC_OUTPUT