Skip to content

Commit

Permalink
Merge pull request #224 from roystgnr/new_boost_m4
Browse files Browse the repository at this point in the history
Use newest tsuna/boost.m4
  • Loading branch information
pbauman authored Jul 7, 2016
2 parents c0c5d0b + 02fa829 commit 577aeaa
Showing 1 changed file with 131 additions and 18 deletions.
149 changes: 131 additions & 18 deletions m4/common/boost.m4
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.

m4_define([_BOOST_SERIAL], [m4_translit([
# serial 25
# serial 26
], [#
], [])])

Expand Down Expand Up @@ -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],
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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


Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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


Expand Down Expand Up @@ -785,19 +867,41 @@ 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])
# -----------------------------
# 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


Expand All @@ -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


Expand Down Expand Up @@ -1305,6 +1416,8 @@ 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) \
Expand Down

0 comments on commit 577aeaa

Please sign in to comment.