Skip to content

Commit 84bb214

Browse files
committed
Sync m4 macros with upstream
1 parent d821bdc commit 84bb214

2 files changed

Lines changed: 133 additions & 117 deletions

File tree

m4/ax_boost_base.m4

Lines changed: 131 additions & 115 deletions
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 26
36+
#serial 42
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,104 +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 ppc64le"
100-
;;
101-
esac
114+
AS_CASE([${host_cpu}],
115+
[x86_64],[libsubdirs="lib64 libx32 lib lib64"],
116+
[ppc64|s390x|sparc64|aarch64|ppc64le],[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
123+
AS_CASE([${host_cpu}],
124+
[i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
125+
[multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
126+
)
114127
115128
dnl first we check the system location for boost libraries
116129
dnl this location ist chosen if boost libraries are installed with the --layout=system option
117130
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+
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
131156
done
132-
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
133-
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"
134159
break;
135160
fi
136161
done
137-
fi
162+
])
138163
139164
dnl overwrite ld flags if we have required special directory with
140165
dnl --with-boost-libdir parameter
141-
if test "$ac_boost_lib_path" != ""; then
142-
BOOST_LDFLAGS="-L$ac_boost_lib_path"
143-
fi
166+
AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
167+
[BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
144168
169+
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
145170
CPPFLAGS_SAVED="$CPPFLAGS"
146171
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
147172
export CPPFLAGS
@@ -152,15 +177,7 @@ if test "x$want_boost" = "xyes"; then
152177
153178
AC_REQUIRE([AC_PROG_CXX])
154179
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-
]])],[
180+
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
164181
AC_MSG_RESULT(yes)
165182
succeeded=yes
166183
found_system=yes
@@ -172,56 +189,66 @@ if test "x$want_boost" = "xyes"; then
172189
173190
dnl if we found no boost with system layout we search for boost libraries
174191
dnl built and installed without the --layout=system option or for a staged(not installed) version
175-
if test "x$succeeded" != "xyes"; then
192+
if test "x$succeeded" != "xyes" ; then
176193
CPPFLAGS="$CPPFLAGS_SAVED"
177194
LDFLAGS="$LDFLAGS_SAVED"
178195
BOOST_CPPFLAGS=
179-
BOOST_LDFLAGS=
196+
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
197+
BOOST_LDFLAGS=
198+
fi
180199
_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/_/./'`
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/_/./'`
185204
V_CHECK=`expr $_version_tmp \> $_version`
186-
if test "$V_CHECK" = "1" ; then
205+
if test "x$V_CHECK" = "x1" ; then
187206
_version=$_version_tmp
188207
fi
189208
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
190-
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
209+
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE"
191210
done
192211
dnl if nothing found search for layout used in Windows distributions
193212
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"
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"
196215
fi
197216
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
198225
fi
199226
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/_/./'`
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/_/./'`
205232
V_CHECK=`expr $_version_tmp \> $_version`
206-
if test "$V_CHECK" = "1" ; then
233+
if test "x$V_CHECK" = "x1" ; then
207234
_version=$_version_tmp
208-
best_path=$ac_boost_path
235+
best_path=$_AX_BOOST_BASE_boost_path
209236
fi
210237
done
211238
fi
212239
done
213240
214241
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
215242
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
216-
if test "$ac_boost_lib_path" = ""; then
243+
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
217244
for libsubdir in $libsubdirs ; do
218245
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
219246
done
220247
BOOST_LDFLAGS="-L$best_path/$libsubdir"
221248
fi
222249
fi
223250
224-
if test "x$BOOST_ROOT" != "x"; then
251+
if test -n "$BOOST_ROOT" ; then
225252
for libsubdir in $libsubdirs ; do
226253
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
227254
done
@@ -230,7 +257,7 @@ if test "x$want_boost" = "xyes"; then
230257
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
231258
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
232259
V_CHECK=`expr $stage_version_shorten \>\= $_version`
233-
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
234261
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
235262
BOOST_CPPFLAGS="-I$BOOST_ROOT"
236263
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
@@ -245,15 +272,7 @@ if test "x$want_boost" = "xyes"; then
245272
export LDFLAGS
246273
247274
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-
]])],[
275+
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
257276
AC_MSG_RESULT(yes)
258277
succeeded=yes
259278
found_system=yes
@@ -262,24 +281,21 @@ if test "x$want_boost" = "xyes"; then
262281
AC_LANG_POP([C++])
263282
fi
264283
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.]])
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.]])
268287
else
269288
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
270289
fi
271290
# execute ACTION-IF-NOT-FOUND (if present):
272291
ifelse([$3], , :, [$3])
273292
else
274-
AC_SUBST(BOOST_CPPFLAGS)
275-
AC_SUBST(BOOST_LDFLAGS)
276293
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
277294
# execute ACTION-IF-FOUND (if present):
278295
ifelse([$2], , :, [$2])
279296
fi
280297
281298
CPPFLAGS="$CPPFLAGS_SAVED"
282299
LDFLAGS="$LDFLAGS_SAVED"
283-
fi
284300
285301
])

m4/ax_boost_system.m4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# ===========================================================================
2-
# http://www.gnu.org/software/autoconf-archive/ax_boost_system.html
2+
# https://www.gnu.org/software/autoconf-archive/ax_boost_system.html
33
# ===========================================================================
44
#
55
# SYNOPSIS
@@ -31,7 +31,7 @@
3131
# and this notice are preserved. This file is offered as-is, without any
3232
# warranty.
3333

34-
#serial 18
34+
#serial 19
3535

3636
AC_DEFUN([AX_BOOST_SYSTEM],
3737
[

0 commit comments

Comments
 (0)