e5eb4fb12c
We failed to propagate the BOOST_\(.*\)FLAGS -> OPM_BOOST_\1FLAGS fix
(commit 6b57a00
) to all clients, notably our own macro for recognising
whether or not the Boost.Test library should be linked dynamically or
statically. This commit remedies that oversight.
81 lines
2.3 KiB
Plaintext
81 lines
2.3 KiB
Plaintext
# _OPM_DYNLINK_BOOST_TEST_SRC(Symbol)
|
|
# Generate source text for use in AC_LINK_IFELSE when determining
|
|
# how to link the Boost.Test library.
|
|
#
|
|
# Note:
|
|
# We use AC_LANG_SOURCE rather than AC_LANG_PROGRAM to avoid
|
|
# multiple definitions of "main()" (defined by both the UTF
|
|
# *and* the AC_LANG_PROGRAM macro).
|
|
AC_DEFUN([_OPM_DYNLINK_BOOST_TEST_SRC],
|
|
[AC_LANG_SOURCE(
|
|
[[$1
|
|
#define BOOST_TEST_MODULE OPM_DYNLINK_TEST
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
int f(int x) { return 2 * x; }
|
|
|
|
BOOST_AUTO_TEST_CASE(DynlinkConfigureTest) {
|
|
BOOST_CHECK_MESSAGE(f(2) == 4,
|
|
"Apparently, multiplication doesn't "
|
|
"work: f(2) = " << f(2));
|
|
}
|
|
]]dnl
|
|
)[]dnl
|
|
])
|
|
|
|
dnl -------------------------------------------------------------------
|
|
|
|
# OPM_DYNLINK_BOOST_TEST
|
|
# Determine how to link (or compile+link) tests based on the UTF.
|
|
#
|
|
# If the system uses dynamic linking, then all tests need to
|
|
#
|
|
# #define BOOST_TEST_DYN_LINK
|
|
#
|
|
# Otherwise, this symbol must *not* be #define'd.
|
|
#
|
|
# Macro defines the symbol HAVE_DYNAMIC_BOOST_TEST (to 1) if the
|
|
# system uses dynamic linking of Boost.Test .
|
|
AC_DEFUN([OPM_DYNLINK_BOOST_TEST],
|
|
[
|
|
AC_REQUIRE([OPM_BOOST_BASE])
|
|
AC_REQUIRE([AX_BOOST_UNIT_TEST_FRAMEWORK])
|
|
|
|
_opm_LIBS_SAVE="${LIBS}"
|
|
_opm_CPPFLAGS_SAVE="${CPPFLAGS}"
|
|
|
|
LIBS="${OPM_BOOST_LDFLAGS} ${BOOST_UNIT_TEST_FRAMEWORK_LIB} ${LIBS}"
|
|
CPPFLAGS="${OPM_BOOST_CPPFLAGS} ${CPPFLAGS}"
|
|
|
|
AC_LANG_PUSH([C++])
|
|
|
|
AC_CACHE_CHECK([if the Boost.Test library can be linked statically],dnl
|
|
[opm_cv_boost_link_static],dnl
|
|
[AC_LINK_IFELSE([_OPM_DYNLINK_BOOST_TEST_SRC([])],
|
|
[opm_cv_boost_link_static=yes],dnl
|
|
[opm_cv_boost_link_static=no])[]dnl
|
|
])[]dnl
|
|
|
|
AC_CACHE_CHECK([if the Boost.Test library can be linked dynamically],dnl
|
|
[opm_cv_boost_link_dynamic],dnl
|
|
[AC_LINK_IFELSE([_OPM_DYNLINK_BOOST_TEST_SRC(dnl
|
|
[#define BOOST_TEST_DYN_LINK])],
|
|
[opm_cv_boost_link_dynamic=yes],dnl
|
|
[opm_cv_boost_link_dynamic=no])[]dnl
|
|
])[]dnl
|
|
|
|
AC_LANG_POP([C++])
|
|
|
|
LIBS="${_opm_LIBS_SAVE}"
|
|
CPPFLAGS="${_opm_CPPFLAGS_SAVE}"
|
|
|
|
AS_IF([test x"${opm_cv_boost_link_static}" = x"yes" -o \
|
|
x"${opm_cv_boost_link_dynamic}" = x"yes"],
|
|
[AS_IF([test x"${opm_cv_boost_link_dynamic}" = x"yes"],
|
|
[AC_DEFINE([HAVE_DYNAMIC_BOOST_TEST], [1],
|
|
[Define to `1' if Boost.Test should use BOOST_TEST_DYN_LINK])]
|
|
[:])[]dnl
|
|
],dnl
|
|
[AC_MSG_NOTICE([Boost.Test is not supported on this system])])
|
|
])[]dnl
|