961797a5ee9a661ec3380089b5cfa60e8532701b
[m4-moved-to-github.git] / boost.m4
1 # configure for Boost libs
2 #
3 # ID_BOOST([components],[libs])
4 #
5 # Sets the following variables:
6 #
7 #   BOOST_CPPFLAGS
8 #   BOOST_LIB
9 # If components include "thread":
10 #   BOOST_THREAD_LIB
11 # If components include "test":
12 #   BOOST_TEST_LIB
13
14 AC_DEFUN([ID_BOOST],
15     [
16         AC_SUBST(BOOST_CPPFLAGS)
17         AC_SUBST(BOOST_LIB)
18         
19         AC_MSG_CHECKING([for Boost])
20         AC_LANG_PUSH([C++])
21         oldCPPFLAGS="$CPPFLAGS"
22         oldLIBS="$LIBS"
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}"
25
26         AC_ARG_WITH([boost],[[  --with-boost=DIR  use Boost in prefix DIR]])
27         if test "$with_boost" = "yes" -o -z "$with_boost"; then
28             BOOST_CPPFLAGS=""
29             BOOST_LIB=""
30         else
31             BOOST_CPPFLAGS="-I${with_boost}/include"
32             BOOST_LIB="-L${with_boost}/lib"
33         fi
34         if test "${with_boost}" = "no"; then
35             AC_MSG_RESULT([disabled])
36         else
37             CPPFLAGS="${CPPFLAGS} ${BOOST_CPPFLAGS}"
38             LIBS="${LIBS} ${BOOST_LIB}"
39             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
40 #include <boost/version.hpp>
41 ]],[[ 
42 int x = BOOST_VERSION;
43 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no])
44             AC_MSG_ERROR([Boost development libraries required])
45 ])
46
47
48             AC_MSG_CHECKING([Boost version])
49             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
50 #include <boost/version.hpp>
51 ]],[[
52 #if BOOST_VERSION < BOOST_REQ_VERSION
53 #error Version too old
54 #endif
55 ]])],[
56             AC_MSG_RESULT([ok])
57 ],[
58             AC_MSG_RESULT([version too old])
59             AC_MSG_ERROR([A newer version of Boost is required])
60         ])
61         fi
62         for c in $1; do
63             case $c in 
64                 thread)
65                     AC_SUBST(BOOST_THREAD_LIB)
66                     BOOST_THREAD_LIB="-lboost_thread-mt"
67                     LIBS="${LIBS} ${BOOST_THREAD_LIB}"
68                     AC_MSG_CHECKING([Boost threads])
69                     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
70 #include <boost/version.hpp>
71 #include <boost/thread/thread.hpp>
72 ]],[[ 
73 int x = BOOST_VERSION;
74 ]])],[AC_MSG_RESULT([yes])],[
75 AC_MSG_RESULT([no])
76 AC_MSG_ERROR([Boost thread libraries required])
77 ])
78                     ;;
79                 test)
80                     AC_SUBST(BOOST_TEST_LIB)
81                     saveLIBS="${LIBS}"
82                     BOOST_TEST_LIB="-lboost_unit_test_framework-mt"
83                     LIBS="${LIBS} ${BOOST_TEST_LIB}"
84                     AC_MSG_CHECKING([Boost unit test framework])
85                     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
86 #define BOOST_TEST_DYN_LINK
87 #include <boost/test/auto_unit_test.hpp>
88 BOOST_AUTO_TEST_CASE( t ) 
89 {
90     BOOST_CHECK(1);
91 }
92 ]],[[ 
93 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no])
94 AC_MSG_ERROR([Boost unit test framework libraries required])])
95                     LIBS="${saveLIBS}"
96                     ;;
97                 esac
98         done
99         CPPFLAGS="$oldCPPFLAGS"
100         LIBS="$oldLIBS"
101         AC_LANG_POP([C++])
102     ])
103  
104