mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-24 02:35:20 +00:00
Add support for libstdc++ assertions in autoconf builds
This is less powerful than stdlib-debug, but at least it does not change the ABI. This avoids crashes with Qt6 in particular. The new defaults are: - stdlib-assertions is enabled by default in development builds; - stdlib-debug has to be enabled explicitely. Fixes bug #12215.
This commit is contained in:
parent
6f4f7442ef
commit
e658113ea6
22
INSTALL
22
INSTALL
@ -109,12 +109,13 @@ flags:
|
||||
release prerelease development profiling gprof
|
||||
optimization -O2 -O2 -O -O2 -O2
|
||||
assertions X X
|
||||
stdlib-debug X
|
||||
stdlib-assertions X
|
||||
stdlib-debug
|
||||
warnings X X
|
||||
debug X X X X
|
||||
maintainer-mode X
|
||||
|
||||
The defaults are as follows in terms of version number
|
||||
The defaults are as follows in terms of version number:
|
||||
release: stable release (2.x.y)
|
||||
prerelease: version number contains `alpha', `beta', `rc' or `pre'.
|
||||
development: version number contains `dev'.
|
||||
@ -228,12 +229,17 @@ values):
|
||||
code which checks that some variables have sane values. Opposite
|
||||
is --disable-assertions.
|
||||
|
||||
o --enable-stdlib-debug adds some debug code in the standard
|
||||
library; this slows down the code, but has been helpful in the
|
||||
past to find bugs. Note that this is in general incompatible with
|
||||
the system hunspell library (as of version 1.5). You may have to use
|
||||
--disable-stdlib-debug when linking development versions against
|
||||
your system's hunspell library.
|
||||
o --enable-stdlib-assertions adds some bound checking code in the
|
||||
libstdc++ standard library; this slows down the code, but has been
|
||||
helpful in the past to find bugs. This has no effect when using
|
||||
llvm's libc++ library.
|
||||
|
||||
o --enable-stdlib-debug encompasses stdlib-assertions and adds
|
||||
additional checks in libstdc++. Note that this changes the ABI and
|
||||
is in general incompatible with the system hunspell library (as of
|
||||
version 1.5). You may have to use --disable-stdlib-debug when
|
||||
linking development versions against your system's hunspell
|
||||
library. This has no effect when using llvm's libc++ library.
|
||||
|
||||
|
||||
|
||||
|
@ -310,9 +310,14 @@ AC_ARG_ENABLE(debug,
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(stdlib-debug,
|
||||
AS_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
|
||||
[AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
|
||||
[enable_stdlib_debug=no])]
|
||||
AS_HELP_STRING([--enable-stdlib-debug],[enable debug mode in libstdc++]),,
|
||||
[enable_stdlib_debug=no]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(stdlib-assertions,
|
||||
AS_HELP_STRING([--enable-stdlib-assertions],[enable assertions in libstdc++]),,
|
||||
[AS_CASE([$build_type], [dev*], [enable_stdlib_assertions=yes],
|
||||
[enable_stdlib_assertions=no])]
|
||||
)
|
||||
|
||||
### set up optimization
|
||||
@ -357,6 +362,10 @@ if test x$GXX = xyes; then
|
||||
CXX_VERSION="($clang_version)"
|
||||
fi
|
||||
|
||||
case $gxx_version in
|
||||
2.*|3.*|4.@<:@0-8@:>@*) AC_MSG_ERROR([gcc >= 4.9 is required]);;
|
||||
esac
|
||||
|
||||
AM_CXXFLAGS="$lyx_optim $AM_CXXFLAGS"
|
||||
if test x$enable_debug = xyes ; then
|
||||
AM_CXXFLAGS="-g $AM_CXXFLAGS"
|
||||
@ -381,9 +390,6 @@ if test x$GXX = xyes; then
|
||||
[AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-copy"], [], [-Werror])
|
||||
AC_LANG_POP(C++)
|
||||
fi
|
||||
case $gxx_version in
|
||||
2.*|3.*|4.@<:@0-8@:>@*) AC_MSG_ERROR([gcc >= 4.9 is required]);;
|
||||
esac
|
||||
if test x$enable_stdlib_debug = xyes ; then
|
||||
dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
|
||||
dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
|
||||
@ -396,6 +402,14 @@ if test x$GXX = xyes; then
|
||||
enable_stdlib_debug=no
|
||||
fi
|
||||
fi
|
||||
if test x$enable_stdlib_assertions = xyes ; then
|
||||
if test x$lyx_cv_lib_stdcxx = xyes ; then
|
||||
lyx_flags="$lyx_flags stdlib-assertions"
|
||||
AC_DEFINE(_GLIBCXX_ASSERTIONS, 1, [libstdc++ assertions mode])
|
||||
else
|
||||
enable_stdlib_assertions=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Some additional flags may be needed
|
||||
|
Loading…
Reference in New Issue
Block a user