]> git.pld-linux.org Git - packages/povray.git/blame - povray-ax_boost_base.m4
- boost 1.61 rebuild
[packages/povray.git] / povray-ax_boost_base.m4
CommitLineData
786d863c
AG
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 20
37
38AC_DEFUN([AX_BOOST_BASE],
39[
40AC_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
60AC_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
74if 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 if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
8b2043c3 95 libsubdirs="lib64 libx32 lib"
786d863c
AG
96 fi
97
98 dnl first we check the system location for boost libraries
99 dnl this location ist chosen if boost libraries are installed with the --layout=system option
100 dnl or if you install boost with RPM
101 if test "$ac_boost_path" != ""; then
102 BOOST_CPPFLAGS="-I$ac_boost_path/include"
103 for ac_boost_path_tmp in $libsubdirs; do
104 if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
105 BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
106 break
107 fi
108 done
109 elif test "$cross_compiling" != yes; then
110 for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
111 if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
112 for libsubdir in $libsubdirs ; do
113 if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
114 done
115 BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
116 BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
117 break;
118 fi
119 done
120 fi
121
122 dnl overwrite ld flags if we have required special directory with
123 dnl --with-boost-libdir parameter
124 if test "$ac_boost_lib_path" != ""; then
125 BOOST_LDFLAGS="-L$ac_boost_lib_path"
126 fi
127
128 CPPFLAGS_SAVED="$CPPFLAGS"
129 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
130 export CPPFLAGS
131
132 LDFLAGS_SAVED="$LDFLAGS"
133 LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
134 export LDFLAGS
135
136 AC_REQUIRE([AC_PROG_CXX])
137 AC_LANG_PUSH(C++)
138 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
139 @%:@include <boost/version.hpp>
140 ]], [[
141 #if BOOST_VERSION >= $WANT_BOOST_VERSION
142 // Everything is okay
143 #else
144 # error Boost version is too old
145 #endif
146 ]])],[
147 AC_MSG_RESULT(yes)
148 succeeded=yes
149 found_system=yes
150 ],[
151 ])
152 AC_LANG_POP([C++])
153
154
155
156 dnl if we found no boost with system layout we search for boost libraries
157 dnl built and installed without the --layout=system option or for a staged(not installed) version
158 if test "x$succeeded" != "xyes"; then
159 _version=0
160 if test "$ac_boost_path" != ""; then
161 if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
162 for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
163 _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
164 V_CHECK=`expr $_version_tmp \> $_version`
165 if test "$V_CHECK" = "1" ; then
166 _version=$_version_tmp
167 fi
168 VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
169 BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
170 done
171 fi
172 else
173 if test "$cross_compiling" != yes; then
174 for ac_boost_path in /usr /usr/local /opt /opt/local ; do
175 if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
176 for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
177 _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
178 V_CHECK=`expr $_version_tmp \> $_version`
179 if test "$V_CHECK" = "1" ; then
180 _version=$_version_tmp
181 best_path=$ac_boost_path
182 fi
183 done
184 fi
185 done
186
187 VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
188 BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
189 if test "$ac_boost_lib_path" = ""; then
190 for libsubdir in $libsubdirs ; do
191 if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
192 done
193 BOOST_LDFLAGS="-L$best_path/$libsubdir"
194 fi
195 fi
196
197 if test "x$BOOST_ROOT" != "x"; then
198 for libsubdir in $libsubdirs ; do
199 if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
200 done
201 if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
202 version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
203 stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
204 stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
205 V_CHECK=`expr $stage_version_shorten \>\= $_version`
206 if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
207 AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
208 BOOST_CPPFLAGS="-I$BOOST_ROOT"
209 BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
210 fi
211 fi
212 fi
213 fi
214
215 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
216 export CPPFLAGS
217 LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
218 export LDFLAGS
219
220 AC_LANG_PUSH(C++)
221 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
222 @%:@include <boost/version.hpp>
223 ]], [[
224 #if BOOST_VERSION >= $WANT_BOOST_VERSION
225 // Everything is okay
226 #else
227 # error Boost version is too old
228 #endif
229 ]])],[
230 AC_MSG_RESULT(yes)
231 succeeded=yes
232 found_system=yes
233 ],[
234 ])
235 AC_LANG_POP([C++])
236 fi
237
238 if test "$succeeded" != "yes" ; then
239 if test "$_version" = "0" ; then
240 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.]])
241 else
242 AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
243 fi
244 # execute ACTION-IF-NOT-FOUND (if present):
245 ifelse([$3], , :, [$3])
246 else
247 AC_SUBST(BOOST_CPPFLAGS)
248 AC_SUBST(BOOST_LDFLAGS)
249 AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
250 # execute ACTION-IF-FOUND (if present):
251 ifelse([$2], , :, [$2])
252 fi
253
254 CPPFLAGS="$CPPFLAGS_SAVED"
255 LDFLAGS="$LDFLAGS_SAVED"
256fi
257
258])
This page took 0.102035 seconds and 4 git commands to generate.