Skip to content

Commit d390a14

Browse files
laanwjxdustinface
authored andcommitted
Merge bitcoin#15461: [depends] update to Boost 1.70
2620e24 [depends] boost: update to 1.70 (Sjors Provoost) Pull request description: Version [1.70](https://www.boost.org/users/history/version_1_70_0.html) is most recent. Versions needed for: * 1.66: bitcoin#12557: fixes the single arm64 configuration ([06ee5b5](ruslo/hunter@06ee5b5)) ACKs for commit 2620e2: Tree-SHA512: 6e0174f1d92c2c24314c0689d4809e048914f8f42d17aa73799f5ee232169e0dd0ed71f5f973903c44c08309f2837c629c493f15e5c31ec6c7bd1daae5f3b25f
1 parent 77e9a4a commit d390a14

File tree

3 files changed

+137
-128
lines changed

3 files changed

+137
-128
lines changed

build-aux/m4/ax_boost_base.m4

+131-121
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# ===========================================================================
2-
# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
2+
# https://www.gnu.org/software/autoconf-archive/ax_boost_base.html
33
# ===========================================================================
44
#
55
# SYNOPSIS
@@ -33,7 +33,15 @@
3333
# and this notice are preserved. This file is offered as-is, without any
3434
# warranty.
3535

36-
#serial 27
36+
#serial 45
37+
38+
# example boost program (need to pass version)
39+
m4_define([_AX_BOOST_BASE_PROGRAM],
40+
[AC_LANG_PROGRAM([[
41+
#include <boost/version.hpp>
42+
]],[[
43+
(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));
44+
]])])
3745

3846
AC_DEFUN([AX_BOOST_BASE],
3947
[
@@ -44,110 +52,121 @@ AC_ARG_WITH([boost],
4452
or disable it (ARG=no)
4553
@<:@ARG=yes@:>@ ])],
4654
[
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
55+
AS_CASE([$withval],
56+
[no],[want_boost="no";_AX_BOOST_BASE_boost_path=""],
57+
[yes],[want_boost="yes";_AX_BOOST_BASE_boost_path=""],
58+
[want_boost="yes";_AX_BOOST_BASE_boost_path="$withval"])
5659
],
5760
[want_boost="yes"])
5861
5962
6063
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-
)
64+
[AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
65+
[Force given directory for boost libraries.
66+
Note that this will override library path detection,
67+
so use this parameter only if default library detection fails
68+
and you know exactly where your boost libraries are located.])],
69+
[
70+
AS_IF([test -d "$withval"],
71+
[_AX_BOOST_BASE_boost_lib_path="$withval"],
72+
[AC_MSG_ERROR([--with-boost-libdir expected directory name])])
73+
],
74+
[_AX_BOOST_BASE_boost_lib_path=""])
7375
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)
76+
BOOST_LDFLAGS=""
77+
BOOST_CPPFLAGS=""
78+
AS_IF([test "x$want_boost" = "xyes"],
79+
[_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])])
80+
AC_SUBST(BOOST_CPPFLAGS)
81+
AC_SUBST(BOOST_LDFLAGS)
82+
])
83+
84+
85+
# convert a version string in $2 to numeric and affect to polymorphic var $1
86+
AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[
87+
AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"])
88+
_AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'`
89+
_AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'`
90+
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"],
91+
[AC_MSG_ERROR([You should at least specify libboost major version])])
92+
_AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'`
93+
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"],
94+
[_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"])
95+
_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
96+
AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"],
97+
[_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"])
98+
_AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor`
99+
AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET)
100+
])
101+
102+
dnl Run the detection of boost should be run only if $want_boost
103+
AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
104+
_AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1])
85105
succeeded=no
86106
107+
108+
AC_REQUIRE([AC_CANONICAL_HOST])
87109
dnl On 64-bit systems check for system libraries in both lib64 and lib.
88110
dnl The former is specified by FHS, but e.g. Debian does not adhere to
89111
dnl this (as it rises problems for generic multi-arch support).
90112
dnl The last entry in the list is chosen by default when no libraries
91113
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"
100-
;;
101-
esac
114+
AS_CASE([${host_cpu}],
115+
[x86_64],[libsubdirs="lib64 libx32 lib lib64"],
116+
[ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64],[libsubdirs="lib64 lib lib64"],
117+
[libsubdirs="lib"]
118+
)
102119
103120
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
104121
dnl them priority over the other paths since, if libs are found there, they
105122
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 some arches may advertise a cpu type that doesn't line up with their
116-
dnl prefix's cpu type. For example, uname may report armv7l while libs are
117-
dnl installed to /usr/lib/arm-linux-gnueabihf. Try getting the compiler's
118-
dnl value for an extra chance of finding the correct path.
119-
libsubdirs="lib/`$CXX -dumpmachine 2>/dev/null` $libsubdirs"
123+
AS_CASE([${host_cpu}],
124+
[i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
125+
[multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
126+
)
120127
121128
dnl first we check the system location for boost libraries
122129
dnl this location ist chosen if boost libraries are installed with the --layout=system option
123130
dnl or if you install boost with RPM
124-
if test "$ac_boost_path" != ""; then
125-
BOOST_CPPFLAGS="-I$ac_boost_path/include"
126-
for ac_boost_path_tmp in $libsubdirs; do
127-
if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
128-
BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
129-
break
130-
fi
131-
done
132-
elif test "$cross_compiling" != yes; then
133-
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
134-
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
135-
for libsubdir in $libsubdirs ; do
136-
if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
131+
AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[
132+
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"])
133+
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"],[
134+
AC_MSG_RESULT([yes])
135+
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include"
136+
for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do
137+
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) lib path in "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"])
138+
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ],[
139+
AC_MSG_RESULT([yes])
140+
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp";
141+
break;
142+
],
143+
[AC_MSG_RESULT([no])])
144+
done],[
145+
AC_MSG_RESULT([no])])
146+
],[
147+
if test X"$cross_compiling" = Xyes; then
148+
search_libsubdirs=$multiarch_libsubdir
149+
else
150+
search_libsubdirs="$multiarch_libsubdir $libsubdirs"
151+
fi
152+
for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
153+
if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then
154+
for libsubdir in $search_libsubdirs ; do
155+
if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
137156
done
138-
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
139-
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
157+
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir"
158+
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include"
140159
break;
141160
fi
142161
done
143-
fi
162+
])
144163
145164
dnl overwrite ld flags if we have required special directory with
146165
dnl --with-boost-libdir parameter
147-
if test "$ac_boost_lib_path" != ""; then
148-
BOOST_LDFLAGS="-L$ac_boost_lib_path"
149-
fi
166+
AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
167+
[BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
150168
169+
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
151170
CPPFLAGS_SAVED="$CPPFLAGS"
152171
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
153172
export CPPFLAGS
@@ -158,15 +177,7 @@ if test "x$want_boost" = "xyes"; then
158177
159178
AC_REQUIRE([AC_PROG_CXX])
160179
AC_LANG_PUSH(C++)
161-
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
162-
@%:@include <boost/version.hpp>
163-
]], [[
164-
#if BOOST_VERSION >= $WANT_BOOST_VERSION
165-
// Everything is okay
166-
#else
167-
# error Boost version is too old
168-
#endif
169-
]])],[
180+
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
170181
AC_MSG_RESULT(yes)
171182
succeeded=yes
172183
found_system=yes
@@ -178,56 +189,66 @@ if test "x$want_boost" = "xyes"; then
178189
179190
dnl if we found no boost with system layout we search for boost libraries
180191
dnl built and installed without the --layout=system option or for a staged(not installed) version
181-
if test "x$succeeded" != "xyes"; then
192+
if test "x$succeeded" != "xyes" ; then
182193
CPPFLAGS="$CPPFLAGS_SAVED"
183194
LDFLAGS="$LDFLAGS_SAVED"
184195
BOOST_CPPFLAGS=
185-
BOOST_LDFLAGS=
196+
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
197+
BOOST_LDFLAGS=
198+
fi
186199
_version=0
187-
if test "$ac_boost_path" != ""; then
188-
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
189-
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
190-
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
200+
if test -n "$_AX_BOOST_BASE_boost_path" ; then
201+
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then
202+
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
203+
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
191204
V_CHECK=`expr $_version_tmp \> $_version`
192-
if test "$V_CHECK" = "1" ; then
205+
if test "x$V_CHECK" = "x1" ; then
193206
_version=$_version_tmp
194207
fi
195208
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
196-
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
209+
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE"
197210
done
198211
dnl if nothing found search for layout used in Windows distributions
199212
if test -z "$BOOST_CPPFLAGS"; then
200-
if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
201-
BOOST_CPPFLAGS="-I$ac_boost_path"
213+
if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then
214+
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path"
202215
fi
203216
fi
217+
dnl if we found something and BOOST_LDFLAGS was unset before
218+
dnl (because "$_AX_BOOST_BASE_boost_lib_path" = ""), set it here.
219+
if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then
220+
for libsubdir in $libsubdirs ; do
221+
if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
222+
done
223+
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir"
224+
fi
204225
fi
205226
else
206-
if test "$cross_compiling" != yes; then
207-
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
208-
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
209-
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
210-
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
227+
if test "x$cross_compiling" != "xyes" ; then
228+
for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do
229+
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then
230+
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
231+
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
211232
V_CHECK=`expr $_version_tmp \> $_version`
212-
if test "$V_CHECK" = "1" ; then
233+
if test "x$V_CHECK" = "x1" ; then
213234
_version=$_version_tmp
214-
best_path=$ac_boost_path
235+
best_path=$_AX_BOOST_BASE_boost_path
215236
fi
216237
done
217238
fi
218239
done
219240
220241
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
221242
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
222-
if test "$ac_boost_lib_path" = ""; then
243+
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
223244
for libsubdir in $libsubdirs ; do
224245
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
225246
done
226247
BOOST_LDFLAGS="-L$best_path/$libsubdir"
227248
fi
228249
fi
229250
230-
if test "x$BOOST_ROOT" != "x"; then
251+
if test -n "$BOOST_ROOT" ; then
231252
for libsubdir in $libsubdirs ; do
232253
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
233254
done
@@ -236,7 +257,7 @@ if test "x$want_boost" = "xyes"; then
236257
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
237258
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
238259
V_CHECK=`expr $stage_version_shorten \>\= $_version`
239-
if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
260+
if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
240261
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
241262
BOOST_CPPFLAGS="-I$BOOST_ROOT"
242263
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
@@ -251,15 +272,7 @@ if test "x$want_boost" = "xyes"; then
251272
export LDFLAGS
252273
253274
AC_LANG_PUSH(C++)
254-
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
255-
@%:@include <boost/version.hpp>
256-
]], [[
257-
#if BOOST_VERSION >= $WANT_BOOST_VERSION
258-
// Everything is okay
259-
#else
260-
# error Boost version is too old
261-
#endif
262-
]])],[
275+
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
263276
AC_MSG_RESULT(yes)
264277
succeeded=yes
265278
found_system=yes
@@ -268,24 +281,21 @@ if test "x$want_boost" = "xyes"; then
268281
AC_LANG_POP([C++])
269282
fi
270283
271-
if test "$succeeded" != "yes" ; then
272-
if test "$_version" = "0" ; then
273-
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.]])
284+
if test "x$succeeded" != "xyes" ; then
285+
if test "x$_version" = "x0" ; then
286+
AC_MSG_NOTICE([[We could not detect the boost libraries (version $1 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.]])
274287
else
275288
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
276289
fi
277290
# execute ACTION-IF-NOT-FOUND (if present):
278291
ifelse([$3], , :, [$3])
279292
else
280-
AC_SUBST(BOOST_CPPFLAGS)
281-
AC_SUBST(BOOST_LDFLAGS)
282293
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
283294
# execute ACTION-IF-FOUND (if present):
284295
ifelse([$2], , :, [$2])
285296
fi
286297
287298
CPPFLAGS="$CPPFLAGS_SAVED"
288299
LDFLAGS="$LDFLAGS_SAVED"
289-
fi
290300
291301
])

0 commit comments

Comments
 (0)