
On Dec 29, 2005, at 9:14 AM, Thomas Porschberg wrote:
Thomas Porschberg <thomas.porschberg <at> osp-dd.de> writes:
But I note that a lot of software components come with a m4 macro to support the configuration process. I found a boost.m4 file at http://alien.cern.ch/cache/org.glite/ project/boost. m4.
I discovered http://autoconf-archive.cryp.to/ which comes with some m4 macros for boost too. In the meanwhile I wrote a own m4 macro which does set BOOST_LDFLAGS and BOOST_CPPFLAGS and checks a version number. I call it with AX_BOOST_LIB_VERSION(1.33) in my configure.ac I post it here and hope it is not considered as spam. If someone has improvements please let me know. How I already mentioned I'm a GNU-build-tool-greenhorn by myself.
I hacked up the following M4 macro for Boost a while ago. The version detection might be a bit better in this macro, because it checks the Boost version in the Boost version header (instead of checking the include directory). Otherwise, the macro you've written looks fine. We don't have an "official" m4 macro for Boost. Doug dnl AC_PATH_BOOST([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF- NOT-FOUND]) dnl Test for the Boost C++ libraries of a particular version (or newer) dnl Defines: dnl BOOST_CXXFLAGS to the set of flags required to compiled Boost AC_DEFUN([AC_PATH_BOOST], [ BOOST_CXXFLAGS="" path_given="no" dnl Extract the path name from a --with-boost=PATH argument AC_ARG_WITH(boost, [ --with-boost=PATH absolute path name where the Boost C++ libraries reside. Alternatively, the BOOST_ROOT environment variable will be used], if test "$withval" = no ; then path_given="no" BOOST_CXXFLAGS="" else if test "$withval" != yes ; then path_given="yes" BOOST_CXXFLAGS="-I$withval" fi fi ) dnl If no path with given and there is a BOOST_ROOT environment variable, dnl use it if test "$path_given" = "no"; then if test "x$BOOST_ROOT" = "x"; then BOOST_CXXFLAGS="" else BOOST_CXXFLAGS="-I$BOOST_ROOT" fi fi boost_min_version=ifelse([$1], ,1.20.0,$1) AC_LANG_SAVE AC_LANG_CPLUSPLUS OLD_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS $BOOST_CXXFLAGS" AC_MSG_CHECKING([for the Boost C++ libraries, version $boost_min_version or newer]) AC_TRY_COMPILE( [ #include <boost/version.hpp> ], [], [ have_boost="yes" ], [ AC_MSG_RESULT(no) have_boost="no" ifelse([$3], , :, [$3]) ]) if test "$have_boost" = "yes"; then WANT_BOOST_MAJOR=`expr $boost_min_version : '\([[0-9]]*\)'` WANT_BOOST_MINOR=`expr $boost_min_version : '[[0-9]]*\.\([[0-9]]* \)'` WANT_BOOST_SUB_MINOR=`expr $boost_min_version : '[[0-9]]*\. [[0-9]]*\.\([[0-9]]*\)'` WANT_BOOST_VERSION=`expr $WANT_BOOST_MAJOR \* 100000 \+ $WANT_BOOST_MINOR \* 100 \+ $WANT_BOOST_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) ifelse([$2], , :, [$2]) ], [ AC_MSG_RESULT([no, version of installed Boost libraries is too old]) ifelse([$3], , :, [$3]) ]) fi CXXFLAGS=$OLD_CXXFLAGS AC_LANG_RESTORE ]) Doug