
Hi, I want integrate some of the boost libraries in a project which has the GNU autoconf/automake tools as build system. I have to cope some questions like: Where is your boost library installed ? Is the version of your boost-lib recent enough ? Can I compile a small program using the boost libraries ? Unfortunately I'm not an experienced GNU auto[conf/make] user. 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 tried it to include to my project but it needs some revision. Can someone from the boost people give some advice ? I know that boost does use bjam. But GNU auto[conf/make] are very common(due to cygwin/mingw even under windows) so that I hope to find an answer. best regards, Thomas --

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. AC_DEFUN([AX_BOOST_LIB_VERSION], [ BOOST_LIB_VERSION_REQ="$1" 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_MSG_WARN('You did not specify a directory for the --with- boost option. We try /usr/local.') ac_boost_path=/usr/local else ac_boost_path="$withval" fi ],[ac_boost_path=/usr/local]) _version=0 if test "$ac_boost_path" != ""; then LDFLAGS="$LDFLAGS -L$ac_boost_path/lib" export LDFLAGS AC_SUBST(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 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS AC_SUBST(BOOST_CPPFLAGS) fi fi VERSION_CHECK=`expr $BOOST_LIB_VERSION_REQ \<\= "$_version"` if test "$VERSION_CHECK" = "1" ; then succeeded=yes fi if test "$succeeded" = "yes" ; then AC_MSG_RESULT(yes (found version $_version)) else AC_MSG_RESULT(no) 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.') else AC_MSG_ERROR('Your boost libraries seems to old (version $_version). We need at least $BOOST_LIB_VERSION_REQ') fi fi ])

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

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).
Yes I see. In my version I search for the newest boost version and take the version number from that include directory. I should refine my macro, if I find multiple boost installations I could use your approach for the newest directory version. However the fallback alternative with BOOSTROOT looks fine too (CXXFLAGS can be extended by $BOOSTROOT) but how is it possible to determine the linker path (LDFLAGS) in such a case. As long as not installed all the libraries reside in their $BOOSTROOT/bin/boost/libs/<special-dir> ?

On Dec 30, 2005, at 7:43 AM, Thomas Porschberg wrote:
but how is it possible to determine the linker path (LDFLAGS) in such a case. As long as not installed all the libraries reside in their $BOOSTROOT/bin/boost/libs/<special-dir> ?
When I wrote the macro, I didn't even think about LDFLAGS. Actually, we might not have had any libraries that had compiled bits with them back when I wrote it :) Finding the LDFLAGS could be a bit tricky. We could probably assume that Boost has been either installed or staged; if staged, we can find the libraries in $BOOST_ROOT/stage. If installed, we'd need to go back and find the lib/ directory that corresponds to the include directory for $BOOST_ROOT, e.g., if it's something like /usr/local/include then we strip off "include" and replace it with "lib": /usr/local/lib I'm guessing it will take us a few iterations to get the right scheme to find the lib directories on each platform, especially with several Linux distributions installing in different ways. Doug

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 ])

Thomas Porschberg wrote:
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 ?
I typically compile and install boost with the --layout=system option, which produces the same directory layout I get with the boost rpms. I think AX_PATH_BOOST should recognize that, too. (Headers are in <prefix>/include/boost, not <prefix>/include/boost-<version>, and libraries don't contain a version tag in their name.) Regards, Stefan

Stefan Seefeld <seefeld <at> sympatico.ca> writes:
I typically compile and install boost with the --layout=system option, which produces the same directory layout I get with the boost rpms. I think AX_PATH_BOOST should recognize that, too.
Yes I see. I updated the macro and post it here again. Now it looks first for boost in the "system location" (installed with the --layout=system or via RPMs). If nothing was found, it looks further in the native boost installation directories and evaluates BOOST_ROOT. At the end of the macro I set the names for the filesystem and program_options libraries. If the procedure is accepted I could extend it for the other boost libraries. As always improvements are very welcome. AC_DEFUN([AX_PATH_BOOST], [ AC_ARG_WITH([boost], AC_HELP_STRING([--with-boost=DIR], [use boost (default is NO) , specify the root directory for boost library (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="no"]) 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 ; 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_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 found_system=yes ifelse([$2], , :, [$2]) ], [ ]) 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 ; 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 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS 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]) ]) fi if test "$succeeded" != "yes" ; then if test "$_version" = "0" ; then AC_MSG_ERROR('We could not detect the boost libraries. 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 else AC_MSG_NOTICE(BOOST_CPPFLAGS: $BOOST_CPPFLAGS) AC_MSG_NOTICE(BOOST_LDFLAGS: $BOOST_LDFLAGS) AC_SUBST(BOOST_CPPFLAGS) AC_SUBST(BOOST_LDFLAGS) AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) AC_CACHE_CHECK(whether the Boost::Filesystem library is available, ax_cv_boost_filesystem, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include <boost/ filesystem/path.hpp>]], [[using namespace boost::filesystem; path my_path( "foo/bar/data.txt" ); return 0;]]), ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no) AC_LANG_RESTORE ]) if test "$ax_cv_boost_filesystem" = "yes"; then AC_DEFINE(HAVE_BOOST_FILE,,[define if the Boost:: FILESYSTEM library is available]) if test "x$found_system" = "xyes"; then ax_lib="boost_filesystem" else ax_lib="boost_filesystem-$CC" fi AC_MSG_NOTICE(ax_lib=$ax_lib) AC_CHECK_LIB($ax_lib, main, [BOOST_FILESYSTEM_LIB=$ax_lib AC_SUBST(BOOST_FILESYSTEM_LIB) break],[link_filesystem="no"]) if test "x$link_filesystem" = "xno"; then AC_MSG_NOTICE(Could not link against $ax_lib !) fi fi AC_CACHE_CHECK(whether the Boost::Program_Options library is available, ax_cv_boost_program_options, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include <boost/ program_options.hpp>]], [[boost::program_options::options_description generic("Generic options"); return 0;]]), ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no) AC_LANG_RESTORE ]) if test "$ax_cv_boost_program_options" = yes; then AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available]) if test "x$found_system" = "xyes"; then ax_lib="boost_program_options" else ax_lib="boost_program_options-$CC" fi AC_MSG_NOTICE(ax_lib=$ax_lib) AC_CHECK_LIB($ax_lib, main, [BOOST_PROGRAM_OPTIONS_LIB=$ax_lib AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) break], [link_program_options="no"]) if test "x$link_program_options" = "xno"; then AC_MSG_NOTICE(Could not link against $ax_lib !) fi fi fi fi ])

Thomas Porschberg <thomas.porschberg <at> osp-dd.de> writes: The rules for finding the right library to link are too primitive. E.g. if you install BOOST for Cygwin you get only libboost_filesystem-gcc-mt-s-1_33_1.a and libboost_filesystem-gcc-mt-s.a which are identical. I use now the following procedure to find the right library name: if test "$ax_cv_boost_filesystem" = "yes"; then AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::FILESYSTEM library is available]) for ax_lib in boost_filesystem boost_filesystem-$CC boost_filesystem-$CC-mt boost_filesystem-$CC-mt-s ; do AC_CHECK_LIB($ax_lib, main, [BOOST_FILESYSTEM_LIB="-l$ax_lib" AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes" break], [link_filesystem="no"]) done if test "x$link_filesystem" = "xno"; then AC_MSG_NOTICE(Could not link against $ax_lib !) fi fi

On Wed, Dec 28, 2005 at 01:14:56PM +0100, Thomas Porschberg wrote:
Hi,
I want integrate some of the boost libraries in a project which has the GNU autoconf/automake tools as build system.
I have to cope some questions like: Where is your boost library installed ? Is the version of your boost-lib recent enough ? Can I compile a small program using the boost libraries ?
Unfortunately I'm not an experienced GNU auto[conf/make] user. 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 tried it to include to my project but it needs some revision.
This has evolved into this: http://tinyurl.com/d3q63 The macro is not thoroughly tested and can certainly be improved but it suits our needs. In our project we moved from version 1.29 to 1.32, that's the reason for the test $ac_boost_version -lt 103000. If you find some useful ideas to improve your macro feel free to use them. It would be nice if we could come up with a common macro. Best regards, Francesco.
participants (4)
-
Douglas Gregor
-
Francesco Giacomini
-
Stefan Seefeld
-
Thomas Porschberg