|  | ##### http://autoconf-archive.cryp.to/ax_boost_base.html | 
|  | # | 
|  | # SYNOPSIS | 
|  | # | 
|  | #   AX_BOOST_BASE([MINIMUM-VERSION]) | 
|  | # | 
|  | # DESCRIPTION | 
|  | # | 
|  | #   Test for the Boost C++ libraries of a particular version (or newer) | 
|  | # | 
|  | #   If no path to the installed boost library is given the macro | 
|  | #   searchs under /usr, /usr/local, /opt and /opt/local and evaluates | 
|  | #   the $BOOST_ROOT environment variable. Further documentation is | 
|  | #   available at <http://randspringer.de/boost/index.html>. | 
|  | # | 
|  | #   This macro calls: | 
|  | # | 
|  | #     AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS) | 
|  | # | 
|  | #   And sets: | 
|  | # | 
|  | #     HAVE_BOOST | 
|  | # | 
|  | # LAST MODIFICATION | 
|  | # | 
|  | #   2007-07-28 | 
|  | #   Modified for use in Thrift | 
|  | # | 
|  | # COPYLEFT | 
|  | # | 
|  | #   Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de> | 
|  | # | 
|  | #   Copying and distribution of this file, with or without | 
|  | #   modification, are permitted in any medium without royalty provided | 
|  | #   the copyright notice and this notice are preserved. | 
|  |  | 
|  | AC_DEFUN([AX_BOOST_BASE], | 
|  | [ | 
|  | AC_ARG_WITH([boost], | 
|  | AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use boost [default=yes]. Optionally specify the root prefix dir where boost is installed]), | 
|  | [ | 
|  | if test "$withval" = "no"; then | 
|  | want_boost="no" | 
|  | elif test "$withval" = "yes"; then | 
|  | want_boost="yes" | 
|  | ac_boost_path="" | 
|  | else | 
|  | want_boost="yes" | 
|  | ac_boost_path="$withval" | 
|  | fi | 
|  | ], | 
|  | [want_boost="yes"]) | 
|  |  | 
|  | if test "x$want_boost" = "xyes"; then | 
|  | 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 | 
|  | WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor` | 
|  | AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req) | 
|  | succeeded=no | 
|  |  | 
|  | dnl first we check the system location for boost libraries | 
|  | dnl this location ist chosen if boost libraries are installed with the --layout=system option | 
|  | dnl or if you install boost with RPM | 
|  | if test "$ac_boost_path" != ""; then | 
|  | BOOST_LDFLAGS="-L$ac_boost_path/lib" | 
|  | BOOST_CPPFLAGS="-I$ac_boost_path/include" | 
|  | BOOST_ROOT_PATH="$ac_boost_path" | 
|  | else | 
|  | for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do | 
|  | if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then | 
|  | BOOST_LDFLAGS="-L$ac_boost_path_tmp/lib" | 
|  | BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include" | 
|  | BOOST_ROOT_PATH="$ac_boost_path_tmp" | 
|  | break; | 
|  | fi | 
|  | done | 
|  | fi | 
|  |  | 
|  | CPPFLAGS_SAVED="$CPPFLAGS" | 
|  | CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" | 
|  | export CPPFLAGS | 
|  |  | 
|  | LDFLAGS_SAVED="$LDFLAGS" | 
|  | LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" | 
|  | export LDFLAGS | 
|  |  | 
|  | export BOOST_ROOT_PATH | 
|  |  | 
|  | AC_LANG_PUSH(C++) | 
|  | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | 
|  | @%:@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) | 
|  | succeeded=yes | 
|  | found_system=yes | 
|  | ],[ | 
|  | ]) | 
|  | AC_LANG_POP([C++]) | 
|  |  | 
|  |  | 
|  |  | 
|  | dnl if we found no boost with system layout we search for boost libraries | 
|  | dnl built and installed without the --layout=system option or for a staged(not installed) version | 
|  | if test "x$succeeded" != "xyes"; then | 
|  | _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 /opt/local ; 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" | 
|  | BOOST_ROOT_PATH="$best_path" | 
|  |  | 
|  | if test "x$BOOST_ROOT" != "x"; then | 
|  | if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/lib" && test -r "$BOOST_ROOT/stage/lib"; 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" | 
|  | BOOST_ROOT_PATH="$BOOST_ROOT" | 
|  | fi | 
|  | fi | 
|  | fi | 
|  | fi | 
|  |  | 
|  | CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" | 
|  | export CPPFLAGS | 
|  | LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" | 
|  | export LDFLAGS | 
|  | export BOOST_ROOT_PATH | 
|  |  | 
|  | AC_LANG_PUSH(C++) | 
|  | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | 
|  | @%:@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) | 
|  | succeeded=yes | 
|  | found_system=yes | 
|  | ],[ | 
|  | ]) | 
|  | AC_LANG_POP([C++]) | 
|  | fi | 
|  |  | 
|  | if test "$succeeded" != "yes" ; then | 
|  | if test "$_version" = "0" ; then | 
|  | AC_MSG_WARN([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). 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.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]]) | 
|  | else | 
|  | AC_MSG_WARN([Your boost libraries seems to old (version $_version).]) | 
|  | fi | 
|  | else | 
|  | AC_SUBST(BOOST_CPPFLAGS) | 
|  | AC_SUBST(BOOST_LDFLAGS) | 
|  | AC_SUBST(BOOST_ROOT_PATH) | 
|  | AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) | 
|  | fi | 
|  |  | 
|  | CPPFLAGS="$CPPFLAGS_SAVED" | 
|  | LDFLAGS="$LDFLAGS_SAVED" | 
|  | fi | 
|  |  | 
|  | ]) |