Fix boost not found on debian-testing MP-628
[m4-moved-to-github.git] / boost.m4
index 3ef2e7e..b0519da 100644 (file)
--- a/boost.m4
+++ b/boost.m4
@@ -54,9 +54,9 @@ AC_DEFUN([ID_BOOST],
            AC_LANG_CONFTEST(
                [AC_LANG_SOURCE([[
 #include <boost/version.hpp>
-version_is:BOOST_VERSION
+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`
+           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])
@@ -68,20 +68,39 @@ version_is:BOOST_VERSION
            fi
            for c in $1; do
                case $c in 
-                   thread)
+                   system)
+                       AC_SUBST([BOOST_SYSTEM_LIB])
+                       BOOST_SYSTEM_LIB=""
                        if test "$BOOST_GOT_VERSION" -ge 104100; then
-                           AC_MSG_CHECKING([Boost threads + system])
-                       else
-                           AC_MSG_CHECKING([Boost threads])
+                           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 <boost/version.hpp>
+#include <boost/system/error_code.hpp>
+]],[[ 
+int x = BOOST_VERSION;
+]])],[
+                                       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}-mt" "${BOOST_TOOLSET}"; do
+                       for l in "${BOOST_TOOLSET}" "${BOOST_TOOLSET}-mt"; do
                            trylib="-lboost_thread${l}"
-                           if test "$BOOST_GOT_VERSION" -ge 104100; then
-                               trylib="-lboost_system${l} ${trylib}"
-                           fi
                            LIBS="${saveLIBS} ${trylib}"
                        AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #include <boost/version.hpp>
@@ -96,6 +115,7 @@ int x = BOOST_VERSION;
                            AC_MSG_RESULT([yes])
                        else
                            AC_MSG_RESULT([no])
+                           LIBS="${saveLIBS}"
                        fi
                        ;;
                    test)
@@ -103,7 +123,7 @@ int x = BOOST_VERSION;
                        saveLIBS="${LIBS}"
                        AC_SUBST([BOOST_TEST_LIB])
                        BOOST_TEST_LIB=""
-                       for l in boost_unit_test_framework${BOOST_TOOLSET}-mt boost_unit_test_framework${BOOST_TOOLSET}; do
+                       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
@@ -131,7 +151,7 @@ BOOST_AUTO_TEST_CASE( t )
                        AC_SUBST([BOOST_REGEX_LIB])
                        saveLIBS="${LIBS}"
                        BOOST_REGEX_LIB=""
-                       for l in boost_regex${BOOST_TOOLSET}-mt boost_regex${BOOST_TOOLSET}; do
+                       for l in boost_regex${BOOST_TOOLSET} boost_regex${BOOST_TOOLSET}-mt; do
                            LIBS="${saveLIBS} -l${l}"
                        AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #include <boost/version.hpp>
@@ -146,6 +166,7 @@ int x = BOOST_VERSION;
                            AC_MSG_RESULT([yes])
                        else
                            AC_MSG_RESULT([no])
+                           LIBS="${saveLIBS}"
                        fi
                        ;;
                esac