Mercurial > libpst
comparison m4/ax_boost_base.m4 @ 394:3cbda103e0ef
changes to build on centos 6
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Sun, 12 Jan 2020 11:33:45 -0800 |
parents | 1e1970f93f94 |
children |
comparison
equal
deleted
inserted
replaced
393:ffbb5e3f2551 | 394:3cbda103e0ef |
---|---|
1 # =========================================================================== | |
2 # https://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 43 | |
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 ]])]) | |
45 | |
46 AC_DEFUN([AX_BOOST_BASE], | |
47 [ | |
48 AC_ARG_WITH([boost], | |
49 [AS_HELP_STRING([--with-boost@<:@=ARG@:>@], | |
50 [use Boost library from a standard location (ARG=yes), | |
51 from the specified location (ARG=<path>), | |
52 or disable it (ARG=no) | |
53 @<:@ARG=yes@:>@ ])], | |
54 [ | |
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"]) | |
59 ], | |
60 [want_boost="yes"]) | |
61 | |
62 | |
63 AC_ARG_WITH([boost-libdir], | |
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=""]) | |
75 | |
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]) | |
105 succeeded=no | |
106 | |
107 | |
108 AC_REQUIRE([AC_CANONICAL_HOST]) | |
109 dnl On 64-bit systems check for system libraries in both lib64 and lib. | |
110 dnl The former is specified by FHS, but e.g. Debian does not adhere to | |
111 dnl this (as it rises problems for generic multi-arch support). | |
112 dnl The last entry in the list is chosen by default when no libraries | |
113 dnl are found, e.g. when only header-only libraries are installed! | |
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 ) | |
119 | |
120 dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give | |
121 dnl them priority over the other paths since, if libs are found there, they | |
122 dnl are almost assuredly the ones desired. | |
123 AS_CASE([${host_cpu}], | |
124 [i?86],[multiarch_libsubdir="lib/i386-${host_os}"], | |
125 [multiarch_libsubdir="lib/${host_cpu}-${host_os}"] | |
126 ) | |
127 | |
128 dnl first we check the system location for boost libraries | |
129 dnl this location ist chosen if boost libraries are installed with the --layout=system option | |
130 dnl or if you install boost with RPM | |
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 | |
156 done | |
157 BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir" | |
158 BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include" | |
159 break; | |
160 fi | |
161 done | |
162 ]) | |
163 | |
164 dnl overwrite ld flags if we have required special directory with | |
165 dnl --with-boost-libdir parameter | |
166 AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"], | |
167 [BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"]) | |
168 | |
169 AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)]) | |
170 CPPFLAGS_SAVED="$CPPFLAGS" | |
171 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" | |
172 export CPPFLAGS | |
173 | |
174 LDFLAGS_SAVED="$LDFLAGS" | |
175 LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" | |
176 export LDFLAGS | |
177 | |
178 AC_REQUIRE([AC_PROG_CXX]) | |
179 AC_LANG_PUSH(C++) | |
180 AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[ | |
181 AC_MSG_RESULT(yes) | |
182 succeeded=yes | |
183 found_system=yes | |
184 ],[ | |
185 ]) | |
186 AC_LANG_POP([C++]) | |
187 | |
188 | |
189 | |
190 dnl if we found no boost with system layout we search for boost libraries | |
191 dnl built and installed without the --layout=system option or for a staged(not installed) version | |
192 if test "x$succeeded" != "xyes" ; then | |
193 CPPFLAGS="$CPPFLAGS_SAVED" | |
194 LDFLAGS="$LDFLAGS_SAVED" | |
195 BOOST_CPPFLAGS= | |
196 if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then | |
197 BOOST_LDFLAGS= | |
198 fi | |
199 _version=0 | |
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/_/./'` | |
204 V_CHECK=`expr $_version_tmp \> $_version` | |
205 if test "x$V_CHECK" = "x1" ; then | |
206 _version=$_version_tmp | |
207 fi | |
208 VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` | |
209 BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE" | |
210 done | |
211 dnl if nothing found search for layout used in Windows distributions | |
212 if test -z "$BOOST_CPPFLAGS"; then | |
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" | |
215 fi | |
216 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 | |
225 fi | |
226 else | |
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/_/./'` | |
232 V_CHECK=`expr $_version_tmp \> $_version` | |
233 if test "x$V_CHECK" = "x1" ; then | |
234 _version=$_version_tmp | |
235 best_path=$_AX_BOOST_BASE_boost_path | |
236 fi | |
237 done | |
238 fi | |
239 done | |
240 | |
241 VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` | |
242 BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" | |
243 if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then | |
244 for libsubdir in $libsubdirs ; do | |
245 if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi | |
246 done | |
247 BOOST_LDFLAGS="-L$best_path/$libsubdir" | |
248 fi | |
249 fi | |
250 | |
251 if test -n "$BOOST_ROOT" ; then | |
252 for libsubdir in $libsubdirs ; do | |
253 if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi | |
254 done | |
255 if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then | |
256 version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` | |
257 stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` | |
258 stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'` | |
259 V_CHECK=`expr $stage_version_shorten \>\= $_version` | |
260 if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then | |
261 AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT) | |
262 BOOST_CPPFLAGS="-I$BOOST_ROOT" | |
263 BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir" | |
264 fi | |
265 fi | |
266 fi | |
267 fi | |
268 | |
269 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" | |
270 export CPPFLAGS | |
271 LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" | |
272 export LDFLAGS | |
273 | |
274 AC_LANG_PUSH(C++) | |
275 AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[ | |
276 AC_MSG_RESULT(yes) | |
277 succeeded=yes | |
278 found_system=yes | |
279 ],[ | |
280 ]) | |
281 AC_LANG_POP([C++]) | |
282 fi | |
283 | |
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.]]) | |
287 else | |
288 AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).]) | |
289 fi | |
290 # execute ACTION-IF-NOT-FOUND (if present): | |
291 ifelse([$3], , :, [$3]) | |
292 else | |
293 AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) | |
294 # execute ACTION-IF-FOUND (if present): | |
295 ifelse([$2], , :, [$2]) | |
296 fi | |
297 | |
298 CPPFLAGS="$CPPFLAGS_SAVED" | |
299 LDFLAGS="$LDFLAGS_SAVED" | |
300 | |
301 ]) |