| ##### 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 is yes) - it is possible to specify the root directory for boost (optional)]), |
| [ |
| 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" |
| 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" |
| break; |
| fi |
| done |
| fi |
| |
| CPPFLAGS_SAVED="$CPPFLAGS" |
| CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" |
| export CPPFLAGS |
| |
| LDFLAGS_SAVED="$LDFLAGS" |
| LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" |
| export LDFLAGS |
| |
| 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" |
| |
| 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" |
| fi |
| fi |
| fi |
| fi |
| |
| CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" |
| export CPPFLAGS |
| LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" |
| export LDFLAGS |
| |
| 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_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) |
| fi |
| |
| CPPFLAGS="$CPPFLAGS_SAVED" |
| LDFLAGS="$LDFLAGS_SAVED" |
| fi |
| |
| ]) |