| 30 |
ashish |
1 |
##### http://autoconf-archive.cryp.to/ax_boost_base.html
|
|
|
2 |
#
|
|
|
3 |
# SYNOPSIS
|
|
|
4 |
#
|
|
|
5 |
# AX_BOOST_BASE([MINIMUM-VERSION])
|
|
|
6 |
#
|
|
|
7 |
# DESCRIPTION
|
|
|
8 |
#
|
|
|
9 |
# Test for the Boost C++ libraries of a particular version (or newer)
|
|
|
10 |
#
|
|
|
11 |
# If no path to the installed boost library is given the macro
|
|
|
12 |
# searchs under /usr, /usr/local, /opt and /opt/local and evaluates
|
|
|
13 |
# the $BOOST_ROOT environment variable. Further documentation is
|
|
|
14 |
# available at <http://randspringer.de/boost/index.html>.
|
|
|
15 |
#
|
|
|
16 |
# This macro calls:
|
|
|
17 |
#
|
|
|
18 |
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
|
|
|
19 |
#
|
|
|
20 |
# And sets:
|
|
|
21 |
#
|
|
|
22 |
# HAVE_BOOST
|
|
|
23 |
#
|
|
|
24 |
# LAST MODIFICATION
|
|
|
25 |
#
|
|
|
26 |
# 2007-07-28
|
|
|
27 |
#
|
|
|
28 |
# COPYLEFT
|
|
|
29 |
#
|
|
|
30 |
# Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de>
|
|
|
31 |
#
|
|
|
32 |
# Copying and distribution of this file, with or without
|
|
|
33 |
# modification, are permitted in any medium without royalty provided
|
|
|
34 |
# the copyright notice and this notice are preserved.
|
|
|
35 |
|
|
|
36 |
AC_DEFUN([AX_BOOST_BASE],
|
|
|
37 |
[
|
|
|
38 |
AC_ARG_WITH([boost],
|
|
|
39 |
AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use boost (default is yes) - it is possible to specify the root directory for boost (optional)]),
|
|
|
40 |
[
|
|
|
41 |
if test "$withval" = "no"; then
|
|
|
42 |
want_boost="no"
|
|
|
43 |
elif test "$withval" = "yes"; then
|
|
|
44 |
want_boost="yes"
|
|
|
45 |
ac_boost_path=""
|
|
|
46 |
else
|
|
|
47 |
want_boost="yes"
|
|
|
48 |
ac_boost_path="$withval"
|
|
|
49 |
fi
|
|
|
50 |
],
|
|
|
51 |
[want_boost="yes"])
|
|
|
52 |
|
|
|
53 |
if test "x$want_boost" = "xyes"; then
|
|
|
54 |
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
|
|
|
55 |
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
|
|
56 |
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
|
|
|
57 |
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
|
|
58 |
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
|
|
59 |
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
|
|
|
60 |
boost_lib_version_req_sub_minor="0"
|
|
|
61 |
fi
|
|
|
62 |
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
|
|
|
63 |
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
|
|
|
64 |
succeeded=no
|
|
|
65 |
|
|
|
66 |
dnl first we check the system location for boost libraries
|
|
|
67 |
dnl this location ist chosen if boost libraries are installed with the --layout=system option
|
|
|
68 |
dnl or if you install boost with RPM
|
|
|
69 |
if test "$ac_boost_path" != ""; then
|
|
|
70 |
BOOST_LDFLAGS="-L$ac_boost_path/lib"
|
|
|
71 |
BOOST_CPPFLAGS="-I$ac_boost_path/include"
|
|
|
72 |
else
|
|
|
73 |
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
|
|
74 |
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
|
|
|
75 |
BOOST_LDFLAGS="-L$ac_boost_path_tmp/lib"
|
|
|
76 |
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
|
|
|
77 |
break;
|
|
|
78 |
fi
|
|
|
79 |
done
|
|
|
80 |
fi
|
|
|
81 |
|
|
|
82 |
CPPFLAGS_SAVED="$CPPFLAGS"
|
|
|
83 |
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
|
84 |
export CPPFLAGS
|
|
|
85 |
|
|
|
86 |
LDFLAGS_SAVED="$LDFLAGS"
|
|
|
87 |
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
|
88 |
export LDFLAGS
|
|
|
89 |
|
|
|
90 |
AC_LANG_PUSH(C++)
|
|
|
91 |
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
|
92 |
@%:@include <boost/version.hpp>
|
|
|
93 |
]], [[
|
|
|
94 |
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
|
|
95 |
// Everything is okay
|
|
|
96 |
#else
|
|
|
97 |
# error Boost version is too old
|
|
|
98 |
#endif
|
|
|
99 |
]])],[
|
|
|
100 |
AC_MSG_RESULT(yes)
|
|
|
101 |
succeeded=yes
|
|
|
102 |
found_system=yes
|
|
|
103 |
],[
|
|
|
104 |
])
|
|
|
105 |
AC_LANG_POP([C++])
|
|
|
106 |
|
|
|
107 |
|
|
|
108 |
|
|
|
109 |
dnl if we found no boost with system layout we search for boost libraries
|
|
|
110 |
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
|
|
111 |
if test "x$succeeded" != "xyes"; then
|
|
|
112 |
_version=0
|
|
|
113 |
if test "$ac_boost_path" != ""; then
|
|
|
114 |
BOOST_LDFLAGS="-L$ac_boost_path/lib"
|
|
|
115 |
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
|
|
116 |
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
|
117 |
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
|
118 |
V_CHECK=`expr $_version_tmp \> $_version`
|
|
|
119 |
if test "$V_CHECK" = "1" ; then
|
|
|
120 |
_version=$_version_tmp
|
|
|
121 |
fi
|
|
|
122 |
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
|
123 |
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
|
|
124 |
done
|
|
|
125 |
fi
|
|
|
126 |
else
|
|
|
127 |
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
|
|
|
128 |
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
|
|
129 |
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
|
130 |
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
|
131 |
V_CHECK=`expr $_version_tmp \> $_version`
|
|
|
132 |
if test "$V_CHECK" = "1" ; then
|
|
|
133 |
_version=$_version_tmp
|
|
|
134 |
best_path=$ac_boost_path
|
|
|
135 |
fi
|
|
|
136 |
done
|
|
|
137 |
fi
|
|
|
138 |
done
|
|
|
139 |
|
|
|
140 |
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
|
141 |
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
|
|
142 |
BOOST_LDFLAGS="-L$best_path/lib"
|
|
|
143 |
|
|
|
144 |
if test "x$BOOST_ROOT" != "x"; then
|
|
|
145 |
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/lib" && test -r "$BOOST_ROOT/stage/lib"; then
|
|
|
146 |
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
|
|
|
147 |
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
|
|
148 |
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
|
|
149 |
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
|
|
150 |
if test "$V_CHECK" = "1" ; then
|
|
|
151 |
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
|
|
152 |
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
|
|
153 |
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/lib"
|
|
|
154 |
fi
|
|
|
155 |
fi
|
|
|
156 |
fi
|
|
|
157 |
fi
|
|
|
158 |
|
|
|
159 |
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
|
160 |
export CPPFLAGS
|
|
|
161 |
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
|
162 |
export LDFLAGS
|
|
|
163 |
|
|
|
164 |
AC_LANG_PUSH(C++)
|
|
|
165 |
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
|
166 |
@%:@include <boost/version.hpp>
|
|
|
167 |
]], [[
|
|
|
168 |
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
|
|
169 |
// Everything is okay
|
|
|
170 |
#else
|
|
|
171 |
# error Boost version is too old
|
|
|
172 |
#endif
|
|
|
173 |
]])],[
|
|
|
174 |
AC_MSG_RESULT(yes)
|
|
|
175 |
succeeded=yes
|
|
|
176 |
found_system=yes
|
|
|
177 |
],[
|
|
|
178 |
])
|
|
|
179 |
AC_LANG_POP([C++])
|
|
|
180 |
fi
|
|
|
181 |
|
|
|
182 |
if test "$succeeded" != "yes" ; then
|
|
|
183 |
if test "$_version" = "0" ; then
|
|
|
184 |
AC_MSG_ERROR([[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.]])
|
|
|
185 |
else
|
|
|
186 |
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
|
|
|
187 |
fi
|
|
|
188 |
else
|
|
|
189 |
AC_SUBST(BOOST_CPPFLAGS)
|
|
|
190 |
AC_SUBST(BOOST_LDFLAGS)
|
|
|
191 |
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
|
|
|
192 |
fi
|
|
|
193 |
|
|
|
194 |
CPPFLAGS="$CPPFLAGS_SAVED"
|
|
|
195 |
LDFLAGS="$LDFLAGS_SAVED"
|
|
|
196 |
fi
|
|
|
197 |
|
|
|
198 |
])
|