Do not link against system boost regex lib or build included boost regex when not needed.
if MONOLITHIC_BOOST
+if LYX_USE_STD_REGEX
+
+liblyxboost_a_SOURCES = \
+ lyxboostsignals.cpp
+
+else
+
liblyxboost_a_SOURCES = \
lyxboost.cpp \
libs/regex/src/instances.cpp \
libs/regex/src/cpp_regex_traits.cpp \
libs/regex/src/c_regex_traits.cpp
+endif #LYX_USE_STD_REGEX
+
+else
+
+if LYX_USE_STD_REGEX
+
+liblyxboost_a_SOURCES = \
+ libs/signals/src/connection.cpp \
+ libs/signals/src/named_slot_map.cpp \
+ libs/signals/src/signal_base.cpp \
+ libs/signals/src/slot.cpp \
+ libs/signals/src/trackable.cpp
+
else
liblyxboost_a_SOURCES = \
- \
libs/regex/src/internals.hpp \
libs/regex/src/c_regex_traits.cpp \
libs/regex/src/cpp_regex_traits.cpp \
libs/signals/src/slot.cpp \
libs/signals/src/trackable.cpp
-endif
+endif #LYX_USE_STD_REGEX
+
+
+endif #MONOLITHIC_BOOST
#include "libs/regex/src/regex_debug.cpp"
#include "libs/regex/src/winstances.cpp"
-#include "libs/signals/src/connection.cpp"
-#include "libs/signals/src/named_slot_map.cpp"
-#include "libs/signals/src/signal_base.cpp"
-#include "libs/signals/src/slot.cpp"
-#include "libs/signals/src/trackable.cpp"
-
+#include "lyxboostsignals.cpp"
--- /dev/null
+#include "libs/signals/src/connection.cpp"
+#include "libs/signals/src/named_slot_map.cpp"
+#include "libs/signals/src/signal_base.cpp"
+#include "libs/signals/src/slot.cpp"
+#include "libs/signals/src/trackable.cpp"
+
lyx_flags="$lyx_flags c++11-mode"
CXXFLAGS="-std=gnu++0x $CXXFLAGS"
;;
- 4.7*|4.8*)
+ 4.7*|4.8*|4.9*)
lyx_flags="$lyx_flags c++11-mode"
CXXFLAGS="-std=gnu++11 $CXXFLAGS"
;;
esac
+ lyx_std_regex=no
+ if test x$CLANG = xno || test $lyx_cv_lib_stdcxx = yes; then
+ dnl <regex> in gcc is unusable in versions less than 4.9.0
+ dnl see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
+ case $gxx_version in
+ 4.9*)
+ lyx_flags="$lyx_flags stdregex"
+ lyx_std_regex=yes
+ ;;
+ esac
+ else
+ lyx_flags="$lyx_flags stdregex"
+ lyx_std_regex=yes
+ fi
+
+ if test $lyx_std_regex = yes ; then
+ AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex])
+ fi
+ AM_CONDITIONAL([LYX_USE_STD_REGEX], test $lyx_std_regex = yes)
fi
fi
test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
LIBS=$save_LIBS
AC_LANG_POP(C++)
BOOST_INCLUDES=
- BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
+ if test $lyx_std_regex = yes ; then
+ BOOST_LIBS="-lboost_signals${BOOST_MT}"
+ else
+ BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
+ fi
fi
AC_SUBST(BOOST_INCLUDES)
AC_SUBST(BOOST_LIBS)
#define BOOST_NO_WSTRING 1
#define BOOST_SIGNALS_NO_DEPRECATION_WARNING 1
-// <regex> in gcc is unusable in versions less than 4.9.0
-// see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
-// clang defines __GNUC__ but how do the versions match?
-#ifndef LYX_USE_STD_REGEX
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4 || defined(USE_LLVM_LIBCPP)
-# define LYX_USE_STD_REGEX
-# endif
-#endif
-
#ifdef __CYGWIN__
# define NOMINMAX
# define BOOST_POSIX 1