Fix some compilation problems in C++11 mode

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.
This commit is contained in:
Jean-Marc Lasgouttes 2015-09-25 13:58:52 +02:00
parent b7909e7e6c
commit e1938aa240
2 changed files with 9 additions and 27 deletions

View File

@ -106,7 +106,6 @@ flags:
optimization -O2 -O2 -O -O2 -O2 optimization -O2 -O2 -O -O2 -O2
assertions X X assertions X X
stdlib-debug X stdlib-debug X
concept-checks X X
warnings X X warnings X X
debug X X 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 --disable-stdlib-debug when linking development versions against
your system's boost library. 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] o --enable-monolithic-build[=boost,client,insets,mathed,core,tex2lyx,frontend-qt4]
that enables monolithic build of the given parts of the source that enables monolithic build of the given parts of the source
code. This should reduce the compilation time provided you have code. This should reduce the compilation time provided you have

View File

@ -239,15 +239,6 @@ AC_ARG_ENABLE(stdlib-debug,
[enable_stdlib_debug=no])] [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 ### set up optimization
AC_ARG_ENABLE(optimization, AC_ARG_ENABLE(optimization,
AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),, AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
@ -323,15 +314,6 @@ if test x$GXX = xyes; then
;; ;;
esac esac
fi 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 enable_cxx11 can be yes/no/auto.
dnl By default, it is auto and we enable C++11 when possible dnl By default, it is auto and we enable C++11 when possible
if test x$enable_cxx11 != xno ; then if test x$enable_cxx11 != xno ; then
@ -357,6 +339,7 @@ if test x$GXX = xyes; then
LYX_CXX_CXX11 LYX_CXX_CXX11
if test $lyx_use_cxx11 = yes ; then 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 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 <regex> in gcc is unusable in versions less than 4.9.0
dnl see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631 dnl see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
@ -367,12 +350,15 @@ if test x$GXX = xyes; then
else else
lyx_std_regex=yes lyx_std_regex=yes
fi 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 if test $lyx_std_regex = yes ; then
lyx_flags="$lyx_flags stdregex" lyx_flags="$lyx_flags stdregex"
AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex]) AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex])
fi
fi
fi fi
AM_CONDITIONAL([LYX_USE_STD_REGEX], test $lyx_std_regex = yes) AM_CONDITIONAL([LYX_USE_STD_REGEX], test $lyx_std_regex = yes)
])dnl ])dnl