Skip to content

Commit dfa1d3e

Browse files
committed
benchmark: Use boost::timer instead of Glib::Timer.
And optionally build it, when --enable-benchmark is passed to configure.
1 parent 34aa8c8 commit dfa1d3e

File tree

6 files changed

+562
-31
lines changed

6 files changed

+562
-31
lines changed

build/ax_boost_base.m4

Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
# ===========================================================================
2+
# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
3+
# ===========================================================================
4+
#
5+
# SYNOPSIS
6+
#
7+
# AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
8+
#
9+
# DESCRIPTION
10+
#
11+
# Test for the Boost C++ libraries of a particular version (or newer)
12+
#
13+
# If no path to the installed boost library is given the macro searchs
14+
# under /usr, /usr/local, /opt and /opt/local and evaluates the
15+
# $BOOST_ROOT environment variable. Further documentation is available at
16+
# <http://randspringer.de/boost/index.html>.
17+
#
18+
# This macro calls:
19+
#
20+
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
21+
#
22+
# And sets:
23+
#
24+
# HAVE_BOOST
25+
#
26+
# LICENSE
27+
#
28+
# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
29+
# Copyright (c) 2009 Peter Adolphs
30+
#
31+
# Copying and distribution of this file, with or without modification, are
32+
# permitted in any medium without royalty provided the copyright notice
33+
# and this notice are preserved. This file is offered as-is, without any
34+
# warranty.
35+
36+
#serial 26
37+
38+
AC_DEFUN([AX_BOOST_BASE],
39+
[
40+
AC_ARG_WITH([boost],
41+
[AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
42+
[use Boost library from a standard location (ARG=yes),
43+
from the specified location (ARG=<path>),
44+
or disable it (ARG=no)
45+
@<:@ARG=yes@:>@ ])],
46+
[
47+
if test "$withval" = "no"; then
48+
want_boost="no"
49+
elif test "$withval" = "yes"; then
50+
want_boost="yes"
51+
ac_boost_path=""
52+
else
53+
want_boost="yes"
54+
ac_boost_path="$withval"
55+
fi
56+
],
57+
[want_boost="yes"])
58+
59+
60+
AC_ARG_WITH([boost-libdir],
61+
AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
62+
[Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
63+
[
64+
if test -d "$withval"
65+
then
66+
ac_boost_lib_path="$withval"
67+
else
68+
AC_MSG_ERROR(--with-boost-libdir expected directory name)
69+
fi
70+
],
71+
[ac_boost_lib_path=""]
72+
)
73+
74+
if test "x$want_boost" = "xyes"; then
75+
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
76+
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
77+
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
78+
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
79+
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
80+
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
81+
boost_lib_version_req_sub_minor="0"
82+
fi
83+
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
84+
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
85+
succeeded=no
86+
87+
dnl On 64-bit systems check for system libraries in both lib64 and lib.
88+
dnl The former is specified by FHS, but e.g. Debian does not adhere to
89+
dnl this (as it rises problems for generic multi-arch support).
90+
dnl The last entry in the list is chosen by default when no libraries
91+
dnl are found, e.g. when only header-only libraries are installed!
92+
libsubdirs="lib"
93+
ax_arch=`uname -m`
94+
case $ax_arch in
95+
x86_64)
96+
libsubdirs="lib64 libx32 lib lib64"
97+
;;
98+
ppc64|s390x|sparc64|aarch64|ppc64le)
99+
libsubdirs="lib64 lib lib64 ppc64le"
100+
;;
101+
esac
102+
103+
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
104+
dnl them priority over the other paths since, if libs are found there, they
105+
dnl are almost assuredly the ones desired.
106+
AC_REQUIRE([AC_CANONICAL_HOST])
107+
libsubdirs="lib/${host_cpu}-${host_os} $libsubdirs"
108+
109+
case ${host_cpu} in
110+
i?86)
111+
libsubdirs="lib/i386-${host_os} $libsubdirs"
112+
;;
113+
esac
114+
115+
dnl first we check the system location for boost libraries
116+
dnl this location ist chosen if boost libraries are installed with the --layout=system option
117+
dnl or if you install boost with RPM
118+
if test "$ac_boost_path" != ""; then
119+
BOOST_CPPFLAGS="-I$ac_boost_path/include"
120+
for ac_boost_path_tmp in $libsubdirs; do
121+
if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
122+
BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
123+
break
124+
fi
125+
done
126+
elif test "$cross_compiling" != yes; then
127+
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
128+
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
129+
for libsubdir in $libsubdirs ; do
130+
if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
131+
done
132+
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
133+
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
134+
break;
135+
fi
136+
done
137+
fi
138+
139+
dnl overwrite ld flags if we have required special directory with
140+
dnl --with-boost-libdir parameter
141+
if test "$ac_boost_lib_path" != ""; then
142+
BOOST_LDFLAGS="-L$ac_boost_lib_path"
143+
fi
144+
145+
CPPFLAGS_SAVED="$CPPFLAGS"
146+
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
147+
export CPPFLAGS
148+
149+
LDFLAGS_SAVED="$LDFLAGS"
150+
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
151+
export LDFLAGS
152+
153+
AC_REQUIRE([AC_PROG_CXX])
154+
AC_LANG_PUSH(C++)
155+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
156+
@%:@include <boost/version.hpp>
157+
]], [[
158+
#if BOOST_VERSION >= $WANT_BOOST_VERSION
159+
// Everything is okay
160+
#else
161+
# error Boost version is too old
162+
#endif
163+
]])],[
164+
AC_MSG_RESULT(yes)
165+
succeeded=yes
166+
found_system=yes
167+
],[
168+
])
169+
AC_LANG_POP([C++])
170+
171+
172+
173+
dnl if we found no boost with system layout we search for boost libraries
174+
dnl built and installed without the --layout=system option or for a staged(not installed) version
175+
if test "x$succeeded" != "xyes"; then
176+
CPPFLAGS="$CPPFLAGS_SAVED"
177+
LDFLAGS="$LDFLAGS_SAVED"
178+
BOOST_CPPFLAGS=
179+
BOOST_LDFLAGS=
180+
_version=0
181+
if test "$ac_boost_path" != ""; then
182+
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
183+
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
184+
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
185+
V_CHECK=`expr $_version_tmp \> $_version`
186+
if test "$V_CHECK" = "1" ; then
187+
_version=$_version_tmp
188+
fi
189+
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
190+
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
191+
done
192+
dnl if nothing found search for layout used in Windows distributions
193+
if test -z "$BOOST_CPPFLAGS"; then
194+
if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
195+
BOOST_CPPFLAGS="-I$ac_boost_path"
196+
fi
197+
fi
198+
fi
199+
else
200+
if test "$cross_compiling" != yes; then
201+
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
202+
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
203+
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
204+
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
205+
V_CHECK=`expr $_version_tmp \> $_version`
206+
if test "$V_CHECK" = "1" ; then
207+
_version=$_version_tmp
208+
best_path=$ac_boost_path
209+
fi
210+
done
211+
fi
212+
done
213+
214+
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
215+
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
216+
if test "$ac_boost_lib_path" = ""; then
217+
for libsubdir in $libsubdirs ; do
218+
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
219+
done
220+
BOOST_LDFLAGS="-L$best_path/$libsubdir"
221+
fi
222+
fi
223+
224+
if test "x$BOOST_ROOT" != "x"; then
225+
for libsubdir in $libsubdirs ; do
226+
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
227+
done
228+
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
229+
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
230+
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
231+
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
232+
V_CHECK=`expr $stage_version_shorten \>\= $_version`
233+
if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
234+
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
235+
BOOST_CPPFLAGS="-I$BOOST_ROOT"
236+
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
237+
fi
238+
fi
239+
fi
240+
fi
241+
242+
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
243+
export CPPFLAGS
244+
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
245+
export LDFLAGS
246+
247+
AC_LANG_PUSH(C++)
248+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
249+
@%:@include <boost/version.hpp>
250+
]], [[
251+
#if BOOST_VERSION >= $WANT_BOOST_VERSION
252+
// Everything is okay
253+
#else
254+
# error Boost version is too old
255+
#endif
256+
]])],[
257+
AC_MSG_RESULT(yes)
258+
succeeded=yes
259+
found_system=yes
260+
],[
261+
])
262+
AC_LANG_POP([C++])
263+
fi
264+
265+
if test "$succeeded" != "yes" ; then
266+
if test "$_version" = "0" ; then
267+
AC_MSG_NOTICE([[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.]])
268+
else
269+
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
270+
fi
271+
# execute ACTION-IF-NOT-FOUND (if present):
272+
ifelse([$3], , :, [$3])
273+
else
274+
AC_SUBST(BOOST_CPPFLAGS)
275+
AC_SUBST(BOOST_LDFLAGS)
276+
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
277+
# execute ACTION-IF-FOUND (if present):
278+
ifelse([$2], , :, [$2])
279+
fi
280+
281+
CPPFLAGS="$CPPFLAGS_SAVED"
282+
LDFLAGS="$LDFLAGS_SAVED"
283+
fi
284+
285+
])

0 commit comments

Comments
 (0)