X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=boost.m4;h=cdf6c6418764464171792add2f4bfd0daeee4220;hb=0b7662be4e6c57b66352317ab7f097117888993a;hp=0ecf99dbd4eb9fc45873ca226390f5c96f6fb6c5;hpb=cc0e2d088a804b5f896e3955d77c2fc10dccc793;p=m4-moved-to-github.git diff --git a/boost.m4 b/boost.m4 index 0ecf99d..cdf6c64 100644 --- a/boost.m4 +++ b/boost.m4 @@ -1,8 +1,21 @@ # configure for Boost libs # # ID_BOOST([components],[libs]) +# +# Sets the following variables: +# +# BOOST_CPPFLAGS +# BOOST_LIB +# If components include "thread": +# BOOST_THREAD_LIB +# If components include "test": +# BOOST_TEST_LIB + AC_DEFUN([ID_BOOST], [ + AC_SUBST([BOOST_CPPFLAGS]) + AC_SUBST([BOOST_LIB]) + AC_MSG_CHECKING([for Boost]) AC_LANG_PUSH([C++]) oldCPPFLAGS="$CPPFLAGS" @@ -11,37 +24,85 @@ AC_DEFUN([ID_BOOST], CPPFLAGS="$CPPFLAGS -DBOOST_REQ_VERSION=${BOOST_REQ_VERSION}" AC_ARG_WITH([boost],[[ --with-boost=DIR use Boost in prefix DIR]]) - if test "$with_boost" = "yes"; then + if test "$with_boost" = "yes" -o -z "$with_boost"; then BOOST_CPPFLAGS="" - BOOST_LIBS="" + BOOST_LIB="" else BOOST_CPPFLAGS="-I${with_boost}/include" - BOOST_LIBS=" -L${with_boost}/lib" + BOOST_LIB="-L${with_boost}/lib" fi if test "${with_boost}" = "no"; then AC_MSG_RESULT([disabled]) else CPPFLAGS="${CPPFLAGS} ${BOOST_CPPFLAGS}" - LIBS="${LIBS} ${BOOST_LIBS}" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + LIBS="${LIBS} ${BOOST_LIB}" + AC_LANG_CONFTEST( + [AC_LANG_SOURCE([[ #include +version_is:BOOST_VERSION +]])]) + BOOST_GOT_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | $EGREP version_is 2>/dev/null | cut -d ":" -f2` + if test $BOOST_GOT_VERSION = "BOOST_VERSION"; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Boost development libraries required]) + fi + AC_MSG_RESULT([yes ($BOOST_GOT_VERSION)]) + if test $BOOST_GOT_VERSION -lt $BOOST_REQ_VERSION; then + AC_MSG_ERROR([Boost version $BOOST_REQ_VERSION required]) + fi + for c in $1; do + case $c in + thread) + AC_MSG_CHECKING([Boost threads]) + AC_SUBST([BOOST_THREAD_LIB]) + saveLIBS="${LIBS}" + BOOST_THREAD_LIB="" + for l in boost_thread-mt boost_thread; do + LIBS="${saveLIBS} -l${l}" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]],[[ int x = BOOST_VERSION; -]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no])]) - - - AC_MSG_CHECKING([Boost version]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include -]],[[ -#if BOOST_VERSION < BOOST_REQ_VERSION -#error Version too old -#endif ]])],[ - AC_MSG_RESULT([ok]) -],[ - AC_MSG_RESULT([version too old]) - ]) + BOOST_THREAD_LIB="-l${l}" + break],[]) + done + if test "${BOOST_THREAD_LIB}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + test) + AC_MSG_CHECKING([Boost unit test framework]) + saveLIBS="${LIBS}" + AC_SUBST([BOOST_TEST_LIB]) + BOOST_TEST_LIB="" + for l in boost_unit_test_framework-mt boost_unit_test_framework; do + LIBS="${saveLIBS} -l${l}" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#define BOOST_TEST_DYN_LINK +#include +BOOST_AUTO_TEST_CASE( t ) +{ + BOOST_CHECK(1); +} +]],[[ +]])],[ + BOOST_TEST_LIB="-l${l}" + break +],[]) + done + if test "${BOOST_TEST_LIB}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + LIBS="${saveLIBS}" + ;; + esac + done fi CPPFLAGS="$oldCPPFLAGS" LIBS="$oldLIBS"