diff --git a/configure.ac b/configure.ac index a60eafdc5..dbbb5a5ac 100644 --- a/configure.ac +++ b/configure.ac @@ -630,8 +630,27 @@ dnl --------------------------------------------------------------------------- dnl Mandatory Libraries dnl --------------------------------------------------------------------------- +no_exceptions=yes + AX_BOOST_BASE([1.46],, [AC_MSG_ERROR([Boost not found])]) +dnl Don't disable exceptions on Boost older than 1.54, because +dnl Boost.Intrusive supports this compiler mode only since 1.54; +dnl see https://svn.boost.org/trac/boost/ticket/7849 +CPPFLAGS_SAVED="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +export CPPFLAGS +AC_LANG_PUSH(C++) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +@%:@include +]], [[ +#if BOOST_VERSION < 105400 +#error detected Boost older than 1.54 +#endif +]])],, [no_exceptions=no]) +AC_LANG_POP([C++]) +CPPFLAGS="$CPPFLAGS_SAVED" + AC_ARG_ENABLE(icu, AS_HELP_STRING([--enable-icu], [enable libicu for Unicode (default: enabled)]),, @@ -1726,8 +1745,12 @@ AC_LANG_PUSH([C++]) AX_APPEND_COMPILE_FLAGS([-fvisibility=hidden]) AX_APPEND_COMPILE_FLAGS([-fno-threadsafe-statics]) AX_APPEND_COMPILE_FLAGS([-fmerge-all-constants]) -AX_APPEND_COMPILE_FLAGS([-fno-exceptions]) -AX_APPEND_COMPILE_FLAGS([-fno-rtti]) + +if test x$no_exceptions = xyes; then + AX_APPEND_COMPILE_FLAGS([-fno-exceptions]) + AX_APPEND_COMPILE_FLAGS([-fno-rtti]) +fi + AX_APPEND_COMPILE_FLAGS([-ffast-math]) AX_APPEND_COMPILE_FLAGS([-ftree-vectorize]) AC_LANG_POP