]> git.lyx.org Git - lyx.git/commitdiff
Fix some compilation problems in C++11 mode
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 25 Sep 2015 11:58:52 +0000 (13:58 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 25 Sep 2015 12:12:30 +0000 (14:12 +0200)
Only enable std::regex when the header <regex> 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
config/lyxinclude.m4

diff --git a/INSTALL b/INSTALL
index d3e266ff924c314504af38b0ebbd7dc5bd7ebdaa..2ddcd8d055264f7685dbfe65d57025260feb5816 100644 (file)
--- 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
index 275e2e866107c096364a18affe0303e3d4401e5a..ff38dadea4b4bfbc82bc533b41d60e383d88caec 100644 (file)
@@ -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 <regex> 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