mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 19:59:46 +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
|
release prerelease development profiling gprof
|
||||||
optimization -O2 -O2 -O -O2 -O2
|
optimization -O2 -O2 -O -O2 -O2
|
||||||
assertions X X
|
assertions X X
|
||||||
stdlib-debug X
|
stdlib-assertions X
|
||||||
|
stdlib-debug
|
||||||
warnings X X
|
warnings X X
|
||||||
debug X X X X
|
debug X X X X
|
||||||
maintainer-mode 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)
|
release: stable release (2.x.y)
|
||||||
prerelease: version number contains `alpha', `beta', `rc' or `pre'.
|
prerelease: version number contains `alpha', `beta', `rc' or `pre'.
|
||||||
development: version number contains `dev'.
|
development: version number contains `dev'.
|
||||||
@ -228,12 +229,17 @@ values):
|
|||||||
code which checks that some variables have sane values. Opposite
|
code which checks that some variables have sane values. Opposite
|
||||||
is --disable-assertions.
|
is --disable-assertions.
|
||||||
|
|
||||||
o --enable-stdlib-debug adds some debug code in the standard
|
o --enable-stdlib-assertions adds some bound checking code in the
|
||||||
library; this slows down the code, but has been helpful in the
|
libstdc++ standard library; this slows down the code, but has been
|
||||||
past to find bugs. Note that this is in general incompatible with
|
helpful in the past to find bugs. This has no effect when using
|
||||||
the system hunspell library (as of version 1.5). You may have to use
|
llvm's libc++ library.
|
||||||
--disable-stdlib-debug when linking development versions against
|
|
||||||
your system's hunspell 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,
|
AC_ARG_ENABLE(stdlib-debug,
|
||||||
AS_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
|
AS_HELP_STRING([--enable-stdlib-debug],[enable debug mode in libstdc++]),,
|
||||||
[AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
|
[enable_stdlib_debug=no]
|
||||||
[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
|
### set up optimization
|
||||||
@ -357,6 +362,10 @@ if test x$GXX = xyes; then
|
|||||||
CXX_VERSION="($clang_version)"
|
CXX_VERSION="($clang_version)"
|
||||||
fi
|
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"
|
AM_CXXFLAGS="$lyx_optim $AM_CXXFLAGS"
|
||||||
if test x$enable_debug = xyes ; then
|
if test x$enable_debug = xyes ; then
|
||||||
AM_CXXFLAGS="-g $AM_CXXFLAGS"
|
AM_CXXFLAGS="-g $AM_CXXFLAGS"
|
||||||
@ -381,9 +390,6 @@ if test x$GXX = xyes; then
|
|||||||
[AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-copy"], [], [-Werror])
|
[AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-copy"], [], [-Werror])
|
||||||
AC_LANG_POP(C++)
|
AC_LANG_POP(C++)
|
||||||
fi
|
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
|
if test x$enable_stdlib_debug = xyes ; then
|
||||||
dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
|
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
|
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
|
enable_stdlib_debug=no
|
||||||
fi
|
fi
|
||||||
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
|
fi
|
||||||
|
|
||||||
# Some additional flags may be needed
|
# Some additional flags may be needed
|
||||||
|
Loading…
Reference in New Issue
Block a user