X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=boost.m4;h=b0519da6f319aad0c6c9cb031c96ff8d8e10a735;hb=cbe5631365b3ef5a840942cab5e03a50a665fe07;hp=961797a5ee9a661ec3380089b5cfa60e8532701b;hpb=3bc5af724b370ceb2bd01fece863bd16fe7c0f6d;p=m4-moved-to-github.git diff --git a/boost.m4 b/boost.m4 index 961797a..b0519da 100644 --- a/boost.m4 +++ b/boost.m4 @@ -13,8 +13,8 @@ AC_DEFUN([ID_BOOST], [ - AC_SUBST(BOOST_CPPFLAGS) - AC_SUBST(BOOST_LIB) + AC_SUBST([BOOST_CPPFLAGS]) + AC_SUBST([BOOST_LIB]) AC_MSG_CHECKING([for Boost]) AC_LANG_PUSH([C++]) @@ -23,82 +23,162 @@ AC_DEFUN([ID_BOOST], BOOST_REQ_VERSION=`echo "$2" | awk 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 100 + [$]3;}'` CPPFLAGS="$CPPFLAGS -DBOOST_REQ_VERSION=${BOOST_REQ_VERSION}" - AC_ARG_WITH([boost],[[ --with-boost=DIR use Boost in prefix DIR]]) + AC_ARG_WITH([boost],[ --with-boost=DIR use Boost in prefix DIR]) if test "$with_boost" = "yes" -o -z "$with_boost"; then BOOST_CPPFLAGS="" BOOST_LIB="" else + for b in ${with_boost}/lib ${with_boost}/lib64; do + if test -d "$b"; then + BOOST_LIB="-L$b" + fi + done BOOST_CPPFLAGS="-I${with_boost}/include" - BOOST_LIB="-L${with_boost}/lib" + if test ! -f "${with_boost}/include/boost/version.hpp"; then + for b in ${with_boost}/include/boost-*; do + BOOST_CPPFLAGS="-I$b" + done + fi + fi + AC_ARG_WITH([boost-toolset],[ --with-boost-toolset=x use Boost toolset (eg gcc43)]) + if test "$with_boost_toolset" = "yes" -o -z "$with_boost_toolset"; then + BOOST_TOOLSET="" + else + BOOST_TOOLSET="-${with_boost_toolset}" fi if test "${with_boost}" = "no"; then AC_MSG_RESULT([disabled]) else CPPFLAGS="${CPPFLAGS} ${BOOST_CPPFLAGS}" LIBS="${LIBS} ${BOOST_LIB}" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + AC_LANG_CONFTEST( + [AC_LANG_SOURCE([[ #include +BOOST_VERSION +]])]) + BOOST_GOT_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | grep -v '#' | grep -v '^$' 2>/dev/null` + if test -z "$BOOST_GOT_VERSION" -o \ + "$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 + system) + AC_SUBST([BOOST_SYSTEM_LIB]) + BOOST_SYSTEM_LIB="" + if test "$BOOST_GOT_VERSION" -ge 104100; then + AC_MSG_CHECKING([Boost system]) + saveLIBS="${LIBS}" + for l in "${BOOST_TOOLSET}" "${BOOST_TOOLSET}-mt"; do + trylib="-lboost_system${l}" + LIBS="${saveLIBS} ${trylib}" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]],[[ int x = BOOST_VERSION; -]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no]) - AC_MSG_ERROR([Boost development libraries required]) -]) - - - 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]) - AC_MSG_ERROR([A newer version of Boost is required]) - ]) - fi - for c in $1; do - case $c in - thread) - AC_SUBST(BOOST_THREAD_LIB) - BOOST_THREAD_LIB="-lboost_thread-mt" - LIBS="${LIBS} ${BOOST_THREAD_LIB}" - AC_MSG_CHECKING([Boost threads]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + BOOST_SYSTEM_LIB="${trylib}" + break],[]) + done + if test "${BOOST_SYSTEM_LIB}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + LIBS="${saveLIBS}" + fi + fi + ;; + thread) + AC_MSG_CHECKING([Boost threads]) + AC_SUBST([BOOST_THREAD_LIB]) + saveLIBS="${LIBS}" + BOOST_THREAD_LIB="" + for l in "${BOOST_TOOLSET}" "${BOOST_TOOLSET}-mt"; do + trylib="-lboost_thread${l}" + LIBS="${saveLIBS} ${trylib}" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include ]],[[ int x = BOOST_VERSION; -]])],[AC_MSG_RESULT([yes])],[ -AC_MSG_RESULT([no]) -AC_MSG_ERROR([Boost thread libraries required]) -]) - ;; - test) - AC_SUBST(BOOST_TEST_LIB) - saveLIBS="${LIBS}" - BOOST_TEST_LIB="-lboost_unit_test_framework-mt" - LIBS="${LIBS} ${BOOST_TEST_LIB}" - AC_MSG_CHECKING([Boost unit test framework]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +]])],[ + BOOST_THREAD_LIB="${trylib}" + break],[]) + done + if test "${BOOST_THREAD_LIB}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + LIBS="${saveLIBS}" + 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${BOOST_TOOLSET} boost_unit_test_framework${BOOST_TOOLSET}-mt; do + LIBS="${saveLIBS} -l${l}" + AC_LINK_IFELSE([AC_LANG_SOURCE([[ #define BOOST_TEST_DYN_LINK +#define BOOST_AUTO_TEST_MAIN +#define BOOST_TEST_MODULE configure #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}" + ;; + regex) + AC_MSG_CHECKING([Boost regex]) + AC_SUBST([BOOST_REGEX_LIB]) + saveLIBS="${LIBS}" + BOOST_REGEX_LIB="" + for l in boost_regex${BOOST_TOOLSET} boost_regex${BOOST_TOOLSET}-mt; do + LIBS="${saveLIBS} -l${l}" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]],[[ -]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no]) -AC_MSG_ERROR([Boost unit test framework libraries required])]) - LIBS="${saveLIBS}" - ;; +int x = BOOST_VERSION; +]])],[ + BOOST_REGEX_LIB="-l${l}" + break],[]) + done + if test "${BOOST_REGEX_LIB}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + LIBS="${saveLIBS}" + fi + ;; esac - done + done + fi CPPFLAGS="$oldCPPFLAGS" LIBS="$oldLIBS" AC_LANG_POP([C++]) ]) - +dnl Local Variables: +dnl mode:shell-script +dnl sh-indentation: 2 +dnl sh-basic-offset: 4 +dnl End: