~ubuntu-branches/ubuntu/maverick/mosh/maverick-backports

« back to all changes in this revision

Viewing changes to m4/ax_boost_base.m4

  • Committer: Package Import Robot
  • Author(s): Keith Winstein
  • Date: 2012-03-03 14:05:15 UTC
  • Revision ID: package-import@ubuntu.com-20120303140515-l3xm6fzvrybmu9xd
Tags: upstream-0.96a
ImportĀ upstreamĀ versionĀ 0.96a

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
])