From e1938aa2404e9e1a4343de7139e52cac4ac71739 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 25 Sep 2015 13:58:52 +0200 Subject: [PATCH] Fix some compilation problems in C++11 mode Only enable std::regex when the header is present (fix Mac OS X issue). Remove support for concept checks. The page https://gcc.gnu.org/onlinedocs/libstdc++/manual/concept_checking.html says about concept checking: Please note that the checks are based on the requirements in the original C++ standard, many of which were relaxed in the C++11 standard and so valid C++11 code may be incorrectly rejected by the concept checks. Additionally, some correct C++03 code might be rejected by the concept checks, for example template argument types may need to be complete when used in a template definition, rather than at the point of instantiation. There are no plans to address these shortcomings. Therefore it seems reasonable to remove our support for this. --- INSTALL | 4 ---- config/lyxinclude.m4 | 32 +++++++++----------------------- 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/INSTALL b/INSTALL index d3e266ff92..2ddcd8d055 100644 --- a/INSTALL +++ b/INSTALL @@ -106,7 +106,6 @@ flags: optimization -O2 -O2 -O -O2 -O2 assertions X X stdlib-debug X - concept-checks X X warnings X X debug X X X X @@ -229,9 +228,6 @@ The following options allow you to tweak the generated code more precisely (see --disable-stdlib-debug when linking development versions against your system's boost library. - o --enable-concept-checks adds some compile-time checks. There is no - run-time penalty. - o --enable-monolithic-build[=boost,client,insets,mathed,core,tex2lyx,frontend-qt4] that enables monolithic build of the given parts of the source code. This should reduce the compilation time provided you have diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4 index 275e2e8661..ff38dadea4 100644 --- a/config/lyxinclude.m4 +++ b/config/lyxinclude.m4 @@ -239,15 +239,6 @@ AC_ARG_ENABLE(stdlib-debug, [enable_stdlib_debug=no])] ) -AC_ARG_ENABLE(concept-checks, - AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),, - [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes], - [enable_concept_checks=no])] - if test x$USE_QT5 = xyes ; then - enable_concept_checks=no - fi -) - ### set up optimization AC_ARG_ENABLE(optimization, AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),, @@ -323,15 +314,6 @@ if test x$GXX = xyes; then ;; esac fi - if test x$enable_concept_checks = xyes ; then - case $gxx_version in - 4.*) - lyx_flags="$lyx_flags concept-checks" - dnl FIXME check whether this makes sense with clang/libc++ - AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking]) - ;; - esac - fi dnl enable_cxx11 can be yes/no/auto. dnl By default, it is auto and we enable C++11 when possible if test x$enable_cxx11 != xno ; then @@ -357,6 +339,7 @@ if test x$GXX = xyes; then LYX_CXX_CXX11 if test $lyx_use_cxx11 = yes ; then + AC_CHECK_HEADER([regex], [lyx_std_regex=yes], [lyx_std_regex=no]) if test x$CLANG = xno || test $lyx_cv_lib_stdcxx = yes; then dnl in gcc is unusable in versions less than 4.9.0 dnl see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631 @@ -367,12 +350,15 @@ if test x$GXX = xyes; then else lyx_std_regex=yes fi - - if test $lyx_std_regex = yes ; then - lyx_flags="$lyx_flags stdregex" - AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex]) - fi fi +else + dnl This is not gcc, not sure what setup we can do + AC_CHECK_HEADER([regex], [lyx_std_regex=yes], [lyx_std_regex=no]) +fi + +if test $lyx_std_regex = yes ; then + lyx_flags="$lyx_flags stdregex" + 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) ])dnl