
Hi, I updated the macro. If a path to --with-boost is given I assume there is a installed boost version. E.g. --with-boost=/usr/local means I can find include files under /usr/local/include/boost-* and the libs in /usr/local/lib. If multiple boost-installations are found I take the newest one. If no path was specified I look in /usr /usr/local and /opt and assume an installed boost library (and no staged one). As a last resort I evaluate $BOOST_ROOT. Any further thoughts ? AC_DEFUN([AX_PATH_BOOST], [ boost_lib_version_req=ifelse([$1], ,1.20.0,$1) boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\. [[0-9]]*\)'` boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'` boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\. \([[0-9]]*\)'` boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\. [[0-9]]*\.\([[0-9]]*\)'` if test "x$boost_lib_version_req_sub_minor" = "x" ; then boost_lib_version_req_sub_minor="0" fi AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req) succeeded=no AC_ARG_WITH(boost, [ --with-boost=DIR root directory for boost library ], [ if test "$withval" = "no"; then AC_MSG_ERROR('You specified --with-boost=no. Sorry we need boost. Please download from http://boost.org.') elif test "$withval" = "yes"; then ac_boost_path="" else ac_boost_path="$withval" fi ],[ac_boost_path=""]) _version=0 if test "$ac_boost_path" != ""; then BOOST_LDFLAGS="-L$ac_boost_path/lib" if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "$V_CHECK" = "1" ; then _version=$_version_tmp fi VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$ac_boost_path/include/boost- $VERSION_UNDERSCORE" done fi else for ac_boost_path in /usr /usr/local/ /opt ; do if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/ null`; do _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "$V_CHECK" = "1" ; then _version=$_version_tmp best_path=$ac_boost_path fi done fi done VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" BOOST_LDFLAGS="-L$best_path/lib" if test "x$BOOST_ROOT" != "x"; then if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT"; then version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` stage_version_shorten=`expr $stage_version : '\([[0-9]] *\.[[0-9]]*\)'` V_CHECK=`expr $stage_version_shorten \>\= $_version` if test "$V_CHECK" = "1" ; then AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT) BOOST_CPPFLAGS="-I$BOOST_ROOT" BOOST_LDFLAGS="-L$BOOST_ROOT/stage/lib" fi fi fi fi AC_SUBST(BOOST_CPPFLAGS) AC_SUBST(BOOST_LDFLAGS) CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor` AC_TRY_COMPILE( [ #include <boost/version.hpp> ], [ #if BOOST_VERSION >= $WANT_BOOST_VERSION // Everything is okay #else # error Boost version is too old #endif ], [ AC_MSG_RESULT(yes ($_version)) succeeded=yes ifelse([$2], , :, [$2]) ], [ AC_MSG_RESULT(no ($_version)) ifelse([$3], , :, [$3]) ]) if test "$VERSION_CHECK" = "1" ; then succeeded=yes fi if test "$succeeded" != "yes" ; then if test "$_version" = "0" ; then AC_MSG_ERROR('We did not find a directory include/boost- <version> under $ac_boost_path. This means we could not detect the boost libraries. Sorry we need boost. Please download from http://boost.org. If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option') else AC_MSG_ERROR('Your boost libraries seems to old (version $_version). We need at least $boost_lib_version_shorten') fi fi ])