231 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # SmartCAPWAP -- An Open Source CAPWAP WTP / AC
 | |
| #
 | |
| # Copyright (C) 2012-2013 Massimo Vellucci <vemax78@gmail.com>
 | |
| #
 | |
| # 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.60)
 | |
| 
 | |
| m4_include(version.m4)
 | |
| AC_INIT([PRODUCT_NAME], [PRODUCT_VERSION], [PRODUCT_BUGREPORT], [PRODUCT_TARNAME])
 | |
| AC_CONFIG_AUX_DIR([.])
 | |
| AC_CONFIG_MACRO_DIR([m4])
 | |
| AM_INIT_AUTOMAKE
 | |
| 
 | |
| # cross-compile macros
 | |
| AC_CANONICAL_BUILD
 | |
| AC_CANONICAL_HOST
 | |
| 
 | |
| #
 | |
| AC_COPYRIGHT("SmartCapwap by Massimo Vellucci <vemax78@gmail.com>")
 | |
| AC_REVISION($Revision: 1.0 $)
 | |
| 
 | |
| #
 | |
| AC_ARG_ENABLE(
 | |
| 	[dtls],
 | |
| 	[AS_HELP_STRING([--disable-dtls], [disable DTLS support @<:@default=yes@:>@])],
 | |
| 	,
 | |
| 	[enable_dtls="yes"]
 | |
| )
 | |
| 
 | |
| AC_ARG_ENABLE(
 | |
| 	[debug],
 | |
| 	[AS_HELP_STRING([--disable-debug], [disable debug support @<:@default=yes@:>@])],
 | |
| 	,
 | |
| 	[enable_debug="yes"]
 | |
| )
 | |
| 
 | |
| AC_ARG_ENABLE(
 | |
| 	[logging],
 | |
| 	[AS_HELP_STRING([--disable-logging], [disable logging support @<:@default=yes@:>@])],
 | |
| 	,
 | |
| 	[enable_logging="yes"]
 | |
| )
 | |
| 
 | |
| AC_ARG_ENABLE(
 | |
| 	[ac],
 | |
| 	[AS_HELP_STRING([--disable-ac], [disable ac support @<:@default=yes@:>@])],
 | |
| 	,
 | |
| 	[enable_ac="yes"]
 | |
| )
 | |
| 
 | |
| AC_ARG_ENABLE(
 | |
| 	[wtp],
 | |
| 	[AS_HELP_STRING([--disable-wtp], [disable wtp support @<:@default=yes@:>@])],
 | |
| 	,
 | |
| 	[enable_wtp="yes"]
 | |
| )
 | |
| 
 | |
| AC_ARG_WITH(
 | |
| 	[ssl-library],
 | |
| 	[AS_HELP_STRING([--with-crypto-library=library], [build with the given crypto library, TYPE=openssl @<:@default=openssl@:>@])],
 | |
| 	[
 | |
| 	        case "${withval}" in
 | |
| 	                openssl) ;;
 | |
| 	                *) AC_MSG_ERROR([bad value ${withval} for --with-crypto-library]) ;;
 | |
| 	        esac
 | |
| 	],
 | |
| 	[with_ssl_library="openssl"]
 | |
| )
 | |
| 
 | |
| AC_ARG_WITH(
 | |
| 	[mem-check],
 | |
| 	[AS_HELP_STRING([--with-mem-check=TYPE], [build with debug memory checking, TYPE=no|internal|valgrind @<:@default=internal@:>@])],
 | |
| 	[
 | |
| 		case "${withval}" in
 | |
| 			valgrind|internal|no) ;;
 | |
| 			*) AC_MSG_ERROR([bad value ${withval} for --mem-check]) ;;
 | |
| 		esac
 | |
| 	],
 | |
| 	[with_mem_check="internal"]
 | |
| )
 | |
| 
 | |
| # specify output header file
 | |
| AM_CONFIG_HEADER(build/config.h)
 | |
| 
 | |
| #
 | |
| old_CFLAGS="${CFLAGS}"
 | |
| AC_PROG_CC([gcc])
 | |
| CFLAGS="${old_CFLAGS}"
 | |
| 
 | |
| #
 | |
| AM_CONDITIONAL([DEBUG_BUILD], [test "$enable_debug" = yes]) 
 | |
| if test "${enable_debug}" = "yes"; then
 | |
| 	CFLAGS="${CFLAGS} -DDEBUG -Wall -Werror -g -O0"
 | |
| else
 | |
| 	CFLAGS="${CFLAGS} -O2"
 | |
| fi
 | |
| 
 | |
| #
 | |
| AC_PROG_INSTALL
 | |
| AC_USE_SYSTEM_EXTENSIONS
 | |
| 
 | |
| AC_LANG(C)
 | |
| 
 | |
| AC_HEADER_STDC
 | |
| 
 | |
| # 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 PTHREAD library
 | |
| AC_CHECK_HEADER([pthread.h], [], [AC_MSG_ERROR(You need the pthread headers)])
 | |
| AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_LIBS="-lpthread"], [AC_MSG_ERROR(You need the pthread library)])
 | |
| 
 | |
| # Check SSL library
 | |
| PKG_CHECK_MODULES(
 | |
| 	[OPENSSL_CRYPTO],
 | |
| 	[libcrypto >= 1.0.0],
 | |
| 	[have_openssl_crypto="yes"],
 | |
| 	[AC_CHECK_LIB(
 | |
| 		[crypto],
 | |
| 		[RSA_new],
 | |
| 		[
 | |
| 			have_openssl_crypto="yes"
 | |
| 			OPENSSL_CRYPTO_LIBS="-lcrypto"
 | |
| 		]
 | |
| 	)]
 | |
| )
 | |
| 
 | |
| PKG_CHECK_MODULES(
 | |
| 	[OPENSSL_SSL],
 | |
| 	[libssl >= 1.0.0],
 | |
| 	[have_openssl_ssl="yes"],
 | |
| 	[AC_CHECK_LIB(
 | |
| 		[ssl],
 | |
| 		[SSL_CTX_new],
 | |
| 		[
 | |
| 			have_openssl_ssl="yes"
 | |
| 			OPENSSL_SSL_LIBS="-lssl"
 | |
| 		]
 | |
| 	)]
 | |
| )
 | |
| 
 | |
| if test "${have_openssl_ssl}" = "yes"; then
 | |
| 	saved_CFLAGS="${CFLAGS}"
 | |
| 	saved_LIBS="${LIBS}"
 | |
| 	CFLAGS="${CFLAGS} ${OPENSSL_SSL_CFLAGS}"
 | |
| 	LIBS="${LIBS} ${OPENSSL_SSL_LIBS}"
 | |
| 	have_openssl_engine="yes"
 | |
| 	AC_CHECK_FUNC([SSL_CTX_set_cookie_generate_cb], , [AC_MSG_ERROR([${with_ssl_library} SSL_CTX_set_cookie_generate_cb function is required but missing])])
 | |
| 	AC_CHECK_FUNC([SSL_CTX_set_cookie_verify_cb], , [AC_MSG_ERROR([${with_ssl_library} SSL_CTX_set_cookie_verify_cb function is required but missing])])
 | |
| 	CFLAGS="${saved_CFLAGS}"
 | |
| 	LIBS="${saved_LIBS}"
 | |
| fi
 | |
| 
 | |
| case "${with_ssl_library}" in
 | |
| 	openssl)
 | |
| 		have_crypto_engine="${have_openssl_engine}"
 | |
| 		have_crypto_crypto="${have_openssl_crypto}"
 | |
| 		have_crypto_ssl="${have_openssl_ssl}"
 | |
| 		SSL_CFLAGS="${OPENSSL_CRYPTO_CFLAGS} ${OPENSSL_SSL_CFLAGS}"
 | |
| 		SSL_LIBS="${OPENSSL_SSL_LIBS}"
 | |
| 		test "${have_openssl_engine}" = "yes" && AC_DEFINE([HAVE_OPENSSL_ENGINE], [1], [Use crypto library])
 | |
| 		;;
 | |
| esac
 | |
| 
 | |
| if test "${enable_dtls}" = "yes"; then
 | |
| 	test "${have_crypto_engine}" != "yes" && AC_MSG_ERROR([${with_ssl_library} engine is required but missing])
 | |
| 	test "${have_crypto_crypto}" != "yes" && AC_MSG_ERROR([${with_ssl_library} crypto is required but missing])
 | |
| 	test "${have_crypto_ssl}" != "yes" && AC_MSG_ERROR([${with_ssl_library} ssl is required but missing])
 | |
| 	AC_DEFINE([ENABLE_DTLS], [1], [Enable DTLS])
 | |
| fi
 | |
| 
 | |
| # 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
 | |
| 
 | |
| #
 | |
| AM_CONDITIONAL([BUILD_AC], [test "${enable_ac}" = "yes"])
 | |
| AM_CONDITIONAL([BUILD_WTP], [test "${enable_wtp}" = "yes"])
 | |
| 
 | |
| #
 | |
| 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_SUBST([PTHREAD_LIBS])
 | |
| 
 | |
| #
 | |
| AC_CONFIG_FILES([
 | |
| 	Makefile
 | |
| 	build/Makefile
 | |
| 	build/ac/Makefile
 | |
| 	build/wtp/Makefile
 | |
| ])
 | |
| 
 | |
| AC_OUTPUT
 |