]> git.pld-linux.org Git - packages/povray.git/blob - povray-ax_boost_base.m4
54a2a1bee74e97f9c20eae32667dc6cf66c05bdd
[packages/povray.git] / povray-ax_boost_base.m4
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
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     if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
95         libsubdirs="lib64 lib lib64"
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"
256 fi
257
258 ])
This page took 0.069404 seconds and 2 git commands to generate.