1 # configure for Boost libs
3 # ID_BOOST([components],[libs])
5 # Sets the following variables:
9 # If components include "thread":
11 # If components include "test":
16 AC_SUBST([BOOST_CPPFLAGS])
19 AC_MSG_CHECKING([for Boost])
21 oldCPPFLAGS="$CPPFLAGS"
23 BOOST_REQ_VERSION=`echo "$2" | awk 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 100 + [$]3;}'`
24 CPPFLAGS="$CPPFLAGS -DBOOST_REQ_VERSION=${BOOST_REQ_VERSION}"
26 AC_ARG_WITH([boost],[ --with-boost=DIR use Boost in prefix DIR])
27 if test "$with_boost" = "yes" -o -z "$with_boost"; then
31 for b in ${with_boost}/lib ${with_boost}/lib64; do
36 BOOST_CPPFLAGS="-I${with_boost}/include"
37 if test ! -f "${with_boost}/include/boost/version.hpp"; then
38 for b in ${with_boost}/include/boost-*; do
43 AC_ARG_WITH([boost-toolset],[ --with-boost-toolset=x use Boost toolset (eg gcc43)])
44 if test "$with_boost_toolset" = "yes" -o -z "$with_boost_toolset"; then
47 BOOST_TOOLSET="-${with_boost_toolset}"
49 if test "${with_boost}" = "no"; then
50 AC_MSG_RESULT([disabled])
52 CPPFLAGS="${CPPFLAGS} ${BOOST_CPPFLAGS}"
53 LIBS="${LIBS} ${BOOST_LIB}"
56 #include <boost/version.hpp>
57 version_is:BOOST_VERSION
59 BOOST_GOT_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | $EGREP version_is 2>/dev/null | cut -d ":" -f2`
60 if test -z "$BOOST_GOT_VERSION" -o \
61 "$BOOST_GOT_VERSION" = "BOOST_VERSION"; then
63 AC_MSG_ERROR([Boost development libraries required])
65 AC_MSG_RESULT([yes ($BOOST_GOT_VERSION)])
66 if test "$BOOST_GOT_VERSION" -lt $BOOST_REQ_VERSION; then
67 AC_MSG_ERROR([Boost version $BOOST_REQ_VERSION required])
72 if test "$BOOST_GOT_VERSION" -ge 104100; then
73 AC_MSG_CHECKING([Boost threads + system])
75 AC_MSG_CHECKING([Boost threads])
77 AC_SUBST([BOOST_THREAD_LIB])
80 for l in ${BOOST_TOOLSET}-mt ${BOOST_TOOLSET}; do
81 trylib="-lboost_thread${l}"
82 if test "$BOOST_GOT_VERSION" -ge 104100; then
83 trylib="-lboost_system${l} ${trylib}"
85 LIBS="${saveLIBS} ${trylib}"
86 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
87 #include <boost/version.hpp>
88 #include <boost/thread/thread.hpp>
90 int x = BOOST_VERSION;
92 BOOST_THREAD_LIB="${trylib}"
95 if test "${BOOST_THREAD_LIB}"; then
102 AC_MSG_CHECKING([Boost unit test framework])
104 AC_SUBST([BOOST_TEST_LIB])
106 for l in boost_unit_test_framework${BOOST_TOOLSET}-mt boost_unit_test_framework${BOOST_TOOLSET}; do
107 LIBS="${saveLIBS} -l${l}"
108 AC_LINK_IFELSE([AC_LANG_SOURCE([[
109 #define BOOST_TEST_DYN_LINK
110 #define BOOST_AUTO_TEST_MAIN
111 #define BOOST_TEST_MODULE configure
112 #include <boost/test/auto_unit_test.hpp>
113 BOOST_AUTO_TEST_CASE( t )
118 BOOST_TEST_LIB="-l${l}"
122 if test "${BOOST_TEST_LIB}"; then
130 AC_MSG_CHECKING([Boost regex])
131 AC_SUBST([BOOST_REGEX_LIB])
134 for l in boost_regex${BOOST_TOOLSET}-mt boost_regex${BOOST_TOOLSET}; do
135 LIBS="${saveLIBS} -l${l}"
136 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
137 #include <boost/version.hpp>
138 #include <boost/regex.hpp>
140 int x = BOOST_VERSION;
142 BOOST_REGEX_LIB="-l${l}"
145 if test "${BOOST_REGEX_LIB}"; then
154 CPPFLAGS="$oldCPPFLAGS"
160 dnl mode:shell-script
161 dnl sh-indentation: 2
162 dnl sh-basic-offset: 4