parent
b81ba97dfb
commit
5d9fc732fe
@ -0,0 +1,310 @@
|
|||||||
|
From 9ffb376c21f7f55fb9237d83f7ea322517f691e2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Thu, 16 Jun 2016 15:03:37 +0200
|
||||||
|
Subject: [PATCH] update boost.m4 to fix version detection with gcc 6.1
|
||||||
|
|
||||||
|
---
|
||||||
|
m4/boost.m4 | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
1 file changed, 151 insertions(+), 25 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/m4/boost.m4 b/m4/boost.m4
|
||||||
|
index a4c366a..2c1df68 100644
|
||||||
|
--- a/m4/boost.m4
|
||||||
|
+++ b/m4/boost.m4
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
m4_define([_BOOST_SERIAL], [m4_translit([
|
||||||
|
-# serial 24
|
||||||
|
+# serial 26
|
||||||
|
], [#
|
||||||
|
], [])])
|
||||||
|
|
||||||
|
@@ -86,9 +86,10 @@ dnl boost-lib-version =
|
||||||
|
dnl # 2 "conftest.cc" 3
|
||||||
|
dnl "1_56"
|
||||||
|
dnl
|
||||||
|
-dnl So get rid of the # lines, and glue the remaining ones together.
|
||||||
|
+dnl So get rid of the # and empty lines, and glue the remaining ones together.
|
||||||
|
(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
|
||||||
|
grep -v '#' |
|
||||||
|
+ grep -v '^[[[:space:]]]*$' |
|
||||||
|
tr -d '\r' |
|
||||||
|
tr -s '\n' ' ' |
|
||||||
|
$SED -n -e "$1" >conftest.i 2>&1],
|
||||||
|
@@ -110,7 +111,7 @@ AC_LANG_POP([C++])dnl
|
||||||
|
# On # success, defines HAVE_BOOST. On failure, calls the optional
|
||||||
|
# ACTION-IF-NOT-FOUND action if one was supplied.
|
||||||
|
# Otherwise aborts with an error message.
|
||||||
|
-AC_DEFUN([BOOST_REQUIRE],
|
||||||
|
+AC_DEFUN_ONCE([BOOST_REQUIRE],
|
||||||
|
[AC_REQUIRE([AC_PROG_CXX])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_GREP])dnl
|
||||||
|
echo "$as_me: this is boost.m4[]_BOOST_SERIAL" >&AS_MESSAGE_LOG_FD
|
||||||
|
@@ -548,6 +549,13 @@ BOOST_DEFUN([Asio],
|
||||||
|
BOOST_FIND_HEADER([boost/asio.hpp])])
|
||||||
|
|
||||||
|
|
||||||
|
+# BOOST_ASSIGN()
|
||||||
|
+# -------------
|
||||||
|
+# Look for Boost.Assign
|
||||||
|
+BOOST_DEFUN([Assign],
|
||||||
|
+[BOOST_FIND_HEADER([boost/assign.hpp])])
|
||||||
|
+
|
||||||
|
+
|
||||||
|
# BOOST_BIND()
|
||||||
|
# ------------
|
||||||
|
# Look for Boost.Bind.
|
||||||
|
@@ -574,7 +582,7 @@ BOOST_FIND_LIB([chrono], [$1],
|
||||||
|
[boost/chrono.hpp],
|
||||||
|
[boost::chrono::thread_clock d;])
|
||||||
|
if test $enable_static_boost = yes && test $boost_major_version -ge 135; then
|
||||||
|
- BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"
|
||||||
|
+ BOOST_CHRONO_LIBS="$BOOST_CHRONO_LIBS $BOOST_SYSTEM_LIBS"
|
||||||
|
fi
|
||||||
|
LIBS=$boost_filesystem_save_LIBS
|
||||||
|
LDFLAGS=$boost_filesystem_save_LDFLAGS
|
||||||
|
@@ -584,27 +592,79 @@ LDFLAGS=$boost_filesystem_save_LDFLAGS
|
||||||
|
# BOOST_CONTEXT([PREFERRED-RT-OPT])
|
||||||
|
# -----------------------------------
|
||||||
|
# Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the
|
||||||
|
-# documentation of BOOST_FIND_LIB above. This library was introduced in Boost
|
||||||
|
-# 1.51.0
|
||||||
|
+# documentation of BOOST_FIND_LIB above.
|
||||||
|
+#
|
||||||
|
+# * This library was introduced in Boost 1.51.0
|
||||||
|
+# * The signatures of make_fcontext() and jump_fcontext were changed in 1.56.0
|
||||||
|
+# * A dependency on boost_thread appears in 1.57.0
|
||||||
|
BOOST_DEFUN([Context],
|
||||||
|
-[BOOST_FIND_LIB([context], [$1],
|
||||||
|
+[boost_context_save_LIBS=$LIBS
|
||||||
|
+ boost_context_save_LDFLAGS=$LDFLAGS
|
||||||
|
+if test $boost_major_version -ge 157; then
|
||||||
|
+ BOOST_THREAD([$1])
|
||||||
|
+ m4_pattern_allow([^BOOST_THREAD_(LIBS|LDFLAGS)$])dnl
|
||||||
|
+ LIBS="$LIBS $BOOST_THREAD_LIBS"
|
||||||
|
+ LDFLAGS="$LDFLAGS $BOOST_THREAD_LDFLAGS"
|
||||||
|
+fi
|
||||||
|
+BOOST_FIND_LIB([context], [$1],
|
||||||
|
[boost/context/all.hpp],[[
|
||||||
|
+
|
||||||
|
// creates a stack
|
||||||
|
void * stack_pointer = new void*[4096];
|
||||||
|
std::size_t const size = sizeof(void*[4096]);
|
||||||
|
|
||||||
|
-// context fc uses f() as context function
|
||||||
|
-// fcontext_t is placed on top of context stack
|
||||||
|
-// a pointer to fcontext_t is returned
|
||||||
|
+#if BOOST_VERSION <= 105100
|
||||||
|
+ctx::make_fcontext(&fc, f);
|
||||||
|
+return ctx::jump_fcontext(&fcm, &fc, 3) == 6;
|
||||||
|
+
|
||||||
|
+#else
|
||||||
|
+
|
||||||
|
fc = ctx::make_fcontext(stack_pointer, size, f);
|
||||||
|
-return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl
|
||||||
|
+return ctx::jump_fcontext(&fcm, fc, 3) == 6;
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+]],[dnl
|
||||||
|
+
|
||||||
|
+#include <boost/version.hpp>
|
||||||
|
+#if BOOST_VERSION <= 105100
|
||||||
|
+
|
||||||
|
+namespace ctx = boost::ctx;
|
||||||
|
+
|
||||||
|
+static ctx::fcontext_t fcm, fc;
|
||||||
|
+
|
||||||
|
+static void f(intptr_t i) {
|
||||||
|
+ ctx::jump_fcontext(&fc, &fcm, i * 2);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#elif BOOST_VERSION <= 105500
|
||||||
|
+
|
||||||
|
namespace ctx = boost::context;
|
||||||
|
+
|
||||||
|
// context
|
||||||
|
static ctx::fcontext_t fcm, *fc;
|
||||||
|
+
|
||||||
|
// context-function
|
||||||
|
static void f(intptr_t i) {
|
||||||
|
ctx::jump_fcontext(fc, &fcm, i * 2);
|
||||||
|
-}])
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#else
|
||||||
|
+
|
||||||
|
+namespace ctx = boost::context;
|
||||||
|
+
|
||||||
|
+// context
|
||||||
|
+static ctx::fcontext_t fcm, fc;
|
||||||
|
+
|
||||||
|
+// context-function
|
||||||
|
+static void f(intptr_t i) {
|
||||||
|
+ ctx::jump_fcontext(&fc, fcm, i * 2);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+])
|
||||||
|
+LIBS=$boost_context_save_LIBS
|
||||||
|
+LDFLAGS=$boost_context_save_LDFLAGS
|
||||||
|
])# BOOST_CONTEXT
|
||||||
|
|
||||||
|
|
||||||
|
@@ -636,10 +696,21 @@ m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)])
|
||||||
|
LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS"
|
||||||
|
LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS"
|
||||||
|
|
||||||
|
-BOOST_FIND_LIB([coroutine], [$1],
|
||||||
|
- [boost/coroutine/coroutine.hpp],
|
||||||
|
- [boost::coroutines::coroutine< int(int) > coro; coro.empty();])
|
||||||
|
-
|
||||||
|
+# in 1.53 coroutine was a header only library
|
||||||
|
+if test $boost_major_version -eq 153; then
|
||||||
|
+ BOOST_FIND_HEADER([boost/coroutine/coroutine.hpp])
|
||||||
|
+else
|
||||||
|
+ BOOST_FIND_LIB([coroutine], [$1],
|
||||||
|
+ [boost/coroutine/coroutine.hpp],
|
||||||
|
+ [
|
||||||
|
+ #include <boost/version.hpp>
|
||||||
|
+ #if BOOST_VERSION <= 105500
|
||||||
|
+ boost::coroutines::coroutine<int(int)> coro; coro.get();
|
||||||
|
+ #else
|
||||||
|
+ boost::coroutines::asymmetric_coroutine<int>::pull_type coro; coro.get();
|
||||||
|
+ #endif
|
||||||
|
+ ])
|
||||||
|
+fi
|
||||||
|
# Link-time dependency from coroutine to context, existed only in 1.53, in 1.54
|
||||||
|
# coroutine doesn't use context from its headers but from its library.
|
||||||
|
if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then
|
||||||
|
@@ -751,8 +822,19 @@ BOOST_DEFUN([Geometry],
|
||||||
|
# Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the
|
||||||
|
# documentation of BOOST_FIND_LIB above.
|
||||||
|
BOOST_DEFUN([Graph],
|
||||||
|
-[BOOST_FIND_LIB([graph], [$1],
|
||||||
|
+[boost_graph_save_LIBS=$LIBS
|
||||||
|
+boost_graph_save_LDFLAGS=$LDFLAGS
|
||||||
|
+# Link-time dependency from graph to regex was added as of 1.40.0.
|
||||||
|
+if test $boost_major_version -ge 140; then
|
||||||
|
+ BOOST_REGEX([$1])
|
||||||
|
+ m4_pattern_allow([^BOOST_REGEX_(LIBS|LDFLAGS)$])dnl
|
||||||
|
+ LIBS="$LIBS $BOOST_REGEX_LIBS"
|
||||||
|
+ LDFLAGS="$LDFLAGS $BOOST_REGEX_LDFLAGS"
|
||||||
|
+fi
|
||||||
|
+BOOST_FIND_LIB([graph], [$1],
|
||||||
|
[boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;])
|
||||||
|
+LIBS=$boost_graph_save_LIBS
|
||||||
|
+LDFLAGS=$boost_graph_save_LDFLAGS
|
||||||
|
])# BOOST_GRAPH
|
||||||
|
|
||||||
|
|
||||||
|
@@ -785,9 +867,21 @@ BOOST_DEFUN([Lambda],
|
||||||
|
# --------------
|
||||||
|
# Look for Boost.Locale
|
||||||
|
BOOST_DEFUN([Locale],
|
||||||
|
-[BOOST_FIND_LIB([locale], [$1],
|
||||||
|
+[
|
||||||
|
+boost_locale_save_LIBS=$LIBS
|
||||||
|
+boost_locale_save_LDFLAGS=$LDFLAGS
|
||||||
|
+# require SYSTEM for boost-1.50.0 and up
|
||||||
|
+if test $boost_major_version -ge 150; then
|
||||||
|
+ BOOST_SYSTEM([$1])
|
||||||
|
+ m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl
|
||||||
|
+ LIBS="$LIBS $BOOST_SYSTEM_LIBS"
|
||||||
|
+ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
|
||||||
|
+fi # end of the Boost.System check.
|
||||||
|
+BOOST_FIND_LIB([locale], [$1],
|
||||||
|
[boost/locale.hpp],
|
||||||
|
[[boost::locale::generator gen; std::locale::global(gen(""));]])
|
||||||
|
+LIBS=$boost_locale_save_LIBS
|
||||||
|
+LDFLAGS=$boost_locale_save_LDFLAGS
|
||||||
|
])# BOOST_LOCALE
|
||||||
|
|
||||||
|
# BOOST_LOG([PREFERRED-RT-OPT])
|
||||||
|
@@ -795,9 +889,19 @@ BOOST_DEFUN([Locale],
|
||||||
|
# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the
|
||||||
|
# documentation of BOOST_FIND_LIB above.
|
||||||
|
BOOST_DEFUN([Log],
|
||||||
|
-[BOOST_FIND_LIB([log], [$1],
|
||||||
|
+[boost_log_save_LIBS=$LIBS
|
||||||
|
+boost_log_save_LDFLAGS=$LDFLAGS
|
||||||
|
+BOOST_SYSTEM([$1])
|
||||||
|
+BOOST_FILESYSTEM([$1])
|
||||||
|
+BOOST_DATE_TIME([$1])
|
||||||
|
+m4_pattern_allow([^BOOST_(SYSTEM|FILESYSTEM|DATE_TIME)_(LIBS|LDFLAGS)$])dnl
|
||||||
|
+LIBS="$LIBS $BOOST_DATE_TIME_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"
|
||||||
|
+LDFLAGS="$LDFLAGS $BOOST_DATE_TIME_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS $BOOST_SYSTEM_LDFLAGS"
|
||||||
|
+BOOST_FIND_LIB([log], [$1],
|
||||||
|
[boost/log/core/core.hpp],
|
||||||
|
[boost::log::attribute a; a.get_value();])
|
||||||
|
+LIBS=$boost_log_save_LIBS
|
||||||
|
+LDFLAGS=$boost_log_save_LDFLAGS
|
||||||
|
])# BOOST_LOG
|
||||||
|
|
||||||
|
|
||||||
|
@@ -806,10 +910,17 @@ BOOST_DEFUN([Log],
|
||||||
|
# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the
|
||||||
|
# documentation of BOOST_FIND_LIB above.
|
||||||
|
BOOST_DEFUN([Log_Setup],
|
||||||
|
-[AC_REQUIRE([BOOST_LOG])dnl
|
||||||
|
+[boost_log_setup_save_LIBS=$LIBS
|
||||||
|
+boost_log_setup_save_LDFLAGS=$LDFLAGS
|
||||||
|
+BOOST_LOG([$1])
|
||||||
|
+m4_pattern_allow([^BOOST_LOG_(LIBS|LDFLAGS)$])dnl
|
||||||
|
+LIBS="$LIBS $BOOST_LOG_LIBS"
|
||||||
|
+LDFLAGS="$LDFLAGS $BOOST_LOG_LDFLAGS"
|
||||||
|
BOOST_FIND_LIB([log_setup], [$1],
|
||||||
|
[boost/log/utility/setup/from_settings.hpp],
|
||||||
|
[boost::log::basic_settings<char> bs; bs.empty();])
|
||||||
|
+LIBS=$boost_log_setup_save_LIBS
|
||||||
|
+LDFLAGS=$boost_log_setup_save_LDFLAGS
|
||||||
|
])# BOOST_LOG_SETUP
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1067,15 +1178,24 @@ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag"
|
||||||
|
|
||||||
|
# When compiling for the Windows platform, the threads library is named
|
||||||
|
-# differently.
|
||||||
|
-case $host_os in
|
||||||
|
- (*mingw*) boost_thread_lib_ext=_win32;;
|
||||||
|
-esac
|
||||||
|
+# differently. This suffix doesn't exist in new versions of Boost, or
|
||||||
|
+# possibly new versions of GCC on mingw I am assuming it's Boost's change for
|
||||||
|
+# now and I am setting version to 1.48, for lack of knowledge as to when this
|
||||||
|
+# change occurred.
|
||||||
|
+if test $boost_major_version -lt 148; then
|
||||||
|
+ case $host_os in
|
||||||
|
+ (*mingw*) boost_thread_lib_ext=_win32;;
|
||||||
|
+ esac
|
||||||
|
+fi
|
||||||
|
BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext],
|
||||||
|
[$1],
|
||||||
|
[boost/thread.hpp], [boost::thread t; boost::mutex m;])
|
||||||
|
|
||||||
|
-BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag"
|
||||||
|
+case $host_os in
|
||||||
|
+ (*mingw*) boost_thread_w32_socket_link=-lws2_32;;
|
||||||
|
+esac
|
||||||
|
+
|
||||||
|
+BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag $boost_thread_w32_socket_link"
|
||||||
|
BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS"
|
||||||
|
BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag"
|
||||||
|
LIBS=$boost_thread_save_LIBS
|
||||||
|
@@ -1296,6 +1416,12 @@ if test x$boost_cv_inc_path != xno; then
|
||||||
|
# I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines
|
||||||
|
# the same defines as GCC's).
|
||||||
|
for i in \
|
||||||
|
+ _BOOST_mingw_test(5, 3) \
|
||||||
|
+ _BOOST_gcc_test(5, 3) \
|
||||||
|
+ _BOOST_mingw_test(5, 2) \
|
||||||
|
+ _BOOST_gcc_test(5, 2) \
|
||||||
|
+ _BOOST_mingw_test(5, 1) \
|
||||||
|
+ _BOOST_gcc_test(5, 1) \
|
||||||
|
_BOOST_mingw_test(5, 0) \
|
||||||
|
_BOOST_gcc_test(5, 0) \
|
||||||
|
_BOOST_mingw_test(4, 10) \
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
Loading…
Reference in new issue