AC_INIT([tp], [0.1], [the_jk@yahoo.com]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_SILENT_RULES([yes]) AC_PROG_CXX AC_PROG_RANLIB AM_PROG_CC_C_O AC_LANG([C++]) DEFINES= # Test c++11 OLDCXXFLAGS="$CXXFLAGS" # Check if it just works with -std=c++11 # The code below was choosen because if you mix a compiler that is C++11 # compatible with a libc++ that isn't fully (like clang 3.3 with gcc 4.6 # libstdcxx) you get errors because of a missing copy constructor for # std::shared_ptr. Add more tests as we find them. CXXFLAGS="-std=c++11 $CXXFLAGS" AC_MSG_CHECKING([for C++11 using (-std=c++11)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include ]],[[ std::shared_ptr i(new int(5)); std::shared_ptr j(i); ]])], [AC_MSG_RESULT([yes]) DEFINES="$DEFINES -std=c++11"], [AC_MSG_RESULT([no]) CXXFLAGS="-std=c++11 -stdlib=libc++ $CXXFLAGS" AC_MSG_CHECKING([for C++11 using (-std=c++11 -stdlib=libc++)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include ]],[[ std::shared_ptr i(new int(5)); std::shared_ptr j(i); ]])], [AC_MSG_RESULT([yes]) DEFINES="$DEFINES -std=c++11 -stdlib=libc++"], [AC_MSG_RESULT([no]) AC_MSG_ERROR([No working C++11 support])])]) CXXFLAGS="$OLDCXXFLAGS" AX_CXXFLAGS_WARN_ALL([DEFINES]) AX_APPEND_COMPILE_FLAGS([-fno-rtti -fno-exceptions],DEFINES) AX_APPEND_COMPILE_FLAGS([-Wextra -Wno-unused-parameter -Wno-missing-field-initializers],DEFINES) AC_ARG_ENABLE([debug], AC_HELP_STRING([compile with debug options]), if test "x$enableval" = "xyes"; then DEFINES="$DEFINES -g -O0 -DDEBUG" else DEFINES="$DEFINES -DNDEBUG" fi) AC_SUBST([DEFINES]) AX_GCC_VAR_ATTRIBUTE([unused]) AX_GCC_FUNC_ATTRIBUTE([format]) AC_CHECK_HEADERS([sys/ioctl.h]) # accept AC_CHECK_FUNCS([accept4]) # Thread THREAD_CFLAGS=-pthread THREAD_LIBS= AC_SUBST([THREAD_CFLAGS]) AC_SUBST([THREAD_LIBS]) # SSL have_ssl=0 ssl_name="no SSL library found" ssl_mbedtls=0 ssl_openssl=0 SSL_CFLAGS= SSL_LIBS= # Check for mbedtls AC_ARG_ENABLE([mbedtls], [AC_HELP_STRING([--disable-mbedtls], [do not use mbedtls even if found])], [mbedtls_check=$enableval], [mbedtls_check=yes]) AS_IF([test x$mbedtls_check = xyes], [AC_CHECK_HEADERS([mbedtls/ssl.h], [AC_CHECK_LIB([mbedtls], [mbedtls_ssl_init], [AC_CHECK_LIB([mbedx509], [mbedtls_x509_crt_init], [AC_CHECK_LIB([mbedcrypto], [mbedtls_ctr_drbg_random], [have_ssl=1 ssl_mbedtls=1 ssl_name=mbedtls SSL_LIBS="-lmbedtls -lmbedx509 -lmbedcrypto"])])])])]) # Check for openssl PKG_PROG_PKG_CONFIG AS_IF([test x$have_ssl != x1], [AC_ARG_ENABLE([openssl], [AC_HELP_STRING([--disable-openssl], [do not use openssl even if found])], [openssl_check=$enableval], [openssl_check=yes]) AS_IF([test x$openssl_check = xyes], [openssl_need="openssl >= 1.0.2" PKG_CHECK_EXISTS([$openssl_need], [PKG_CHECK_MODULES([SSL], [$openssl_need]) have_ssl=1 ssl_openssl=1 ssl_name=openssl])])]) AC_SUBST([SSL_CFLAGS]) AC_SUBST([SSL_LIBS]) AM_CONDITIONAL([HAVE_SSL],[test "x$have_ssl" = "x1"]) AM_CONDITIONAL([HAVE_MBEDTLS],[test "x$ssl_mbedtls" = "x1"]) AM_CONDITIONAL([HAVE_OPENSSL],[test "x$ssl_openssl" = "x1"]) # Finish up AC_CONFIG_HEADERS([src/config.h]) AC_OUTPUT([Makefile src/Makefile test/Makefile]) AC_MSG_NOTICE([SSL library used: $ssl_name])