mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-21 17:51:03 +00:00
Use C++11 by default when possible
Compiler that are known to support C++11 (gcc >= 4.3 and clang) are now used in this mode by default. It is still possible to override this choice using --(en|dis)able-cxx11. Moreover, c++11 mode is detected from the compiler itself, not from the use of --enable-cxx11. This allows to support compilers other than gcc or clang. Update INSTALL file accordingly and clean it a little bit.
This commit is contained in:
parent
211ac35314
commit
893ae612e4
29
INSTALL
29
INSTALL
@ -48,16 +48,18 @@ Requirements
|
|||||||
------------
|
------------
|
||||||
|
|
||||||
First of all, you will need a recent C++ compiler, where recent means
|
First of all, you will need a recent C++ compiler, where recent means
|
||||||
that the compilers are close to C++ standard conforming (gcc 4.x).
|
that the compilers are close to C++ standard conforming like gcc (at
|
||||||
|
least 4.x) or clang. Note that the compiler will be used in C++11 mode
|
||||||
|
when possible.
|
||||||
|
|
||||||
LyX makes great use of the C++ Standard Template Library (STL).
|
LyX makes great use of the C++ Standard Template Library (STL).
|
||||||
This means that gcc users will have to install the relevant libstdc++
|
This means that gcc users will have to install the relevant libstdc++
|
||||||
library to be able to compile this version of LyX.
|
library to be able to compile this version of LyX.
|
||||||
|
|
||||||
For full LyX usability we suggest to use Qt 4.x and at least Qt 4.8 which
|
For full LyX usability we suggest to use Qt 4.x and at least Qt 4.8 which
|
||||||
has been widely tested. For compilation you need to compile against at
|
has been widely tested. For compilation you need to compile against at
|
||||||
least Qt 4.5.0 and at Windows we advise at highest Qt 4.8.4. The only
|
least Qt 4.5.0 and at Windows we advise at highest Qt 4.8.4. The only
|
||||||
special point to make is that you must ensure that both LyX and the
|
special point to make is that you must ensure that both LyX and the
|
||||||
Qt libraries are compiled with the same C++ compiler.
|
Qt libraries are compiled with the same C++ compiler.
|
||||||
|
|
||||||
To build LyX with spell checking capabilities included you have to
|
To build LyX with spell checking capabilities included you have to
|
||||||
@ -69,17 +71,13 @@ libraries. See the RELEASE-NOTES for details.
|
|||||||
|
|
||||||
If you make modifications to the source that affect any of the
|
If you make modifications to the source that affect any of the
|
||||||
translations or you change the translation files themselves (po/*.po)
|
translations or you change the translation files themselves (po/*.po)
|
||||||
files, you will need to have the GNU gettext package installed to
|
files, you will need to have the GNU gettext package installed to
|
||||||
compile LyX with up-to-date translations (at least gettext version
|
compile LyX with up-to-date translations (at least gettext version
|
||||||
0.16.1 is needed). You can get the latest version from:
|
0.16.1 is needed). You can get the latest version from:
|
||||||
ftp://ftp.gnu.org/gnu/gettext/
|
ftp://ftp.gnu.org/gnu/gettext/
|
||||||
|
|
||||||
The two following programs should be available at configuration time:
|
The two following programs should be available at configuration time:
|
||||||
|
|
||||||
o LaTeX2e should be correctly setup for the user you are logged in
|
|
||||||
as. Otherwise, LyX will not be able to run a number of tests. Note
|
|
||||||
that users can run these tests manually with Tools>Reconfigure.
|
|
||||||
|
|
||||||
o Python 2.7 must be installed. Python is used for many simple tasks
|
o Python 2.7 must be installed. Python is used for many simple tasks
|
||||||
that are executed by external scripts, such as the automatic
|
that are executed by external scripts, such as the automatic
|
||||||
configuration step and the import of older LyX documents with the
|
configuration step and the import of older LyX documents with the
|
||||||
@ -113,7 +111,7 @@ flags:
|
|||||||
debug X X X X
|
debug X X X X
|
||||||
|
|
||||||
The defaults are as follows in terms of version number
|
The defaults are as follows in terms of version number
|
||||||
release: stable release (1.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.
|
||||||
|
|
||||||
@ -209,6 +207,9 @@ The following options allow you to tweak the generated code more precisely (see
|
|||||||
optimization of LyX. The compile may be much quicker with some
|
optimization of LyX. The compile may be much quicker with some
|
||||||
compilers, but LyX will run more slowly.
|
compilers, but LyX will run more slowly.
|
||||||
|
|
||||||
|
o --disable-cxx11 forces the compiler in C++98 mode. The default is
|
||||||
|
to use C++11 mode for known good compilers.
|
||||||
|
|
||||||
o --enable-debug will add debug information to your binary. This
|
o --enable-debug will add debug information to your binary. This
|
||||||
requires a lot more disk space, but is a must if you want to try
|
requires a lot more disk space, but is a must if you want to try
|
||||||
to debug problems in LyX. There is no run-time penalty.
|
to debug problems in LyX. There is no run-time penalty.
|
||||||
@ -227,11 +228,6 @@ The following options allow you to tweak the generated code more precisely (see
|
|||||||
o --enable-concept-checks adds some compile-time checks. There is no
|
o --enable-concept-checks adds some compile-time checks. There is no
|
||||||
run-time penalty.
|
run-time penalty.
|
||||||
|
|
||||||
o --without-latex-config that disables the automatic detection of your
|
|
||||||
latex configuration. This detection is automatically disabled if
|
|
||||||
latex cannot be found. If you find that you have to use this
|
|
||||||
flag, please report it as a bug.
|
|
||||||
|
|
||||||
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
|
||||||
@ -254,8 +250,9 @@ to strip the lyx binary. In this case replace "make install" with
|
|||||||
|
|
||||||
make install-strip
|
make install-strip
|
||||||
|
|
||||||
BTW: in the images subdirectory there is also a small icon "lyx.png",
|
BTW: in the lib/images subdirectory there is also small icons
|
||||||
that can be used to display lyx-documents in filemanagers.
|
`lyx.png' and `lyx.svg', that can be used to display LyX documents in
|
||||||
|
filemanagers.
|
||||||
|
|
||||||
If configure fails for some strange reason
|
If configure fails for some strange reason
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
@ -133,7 +133,7 @@ done
|
|||||||
])dnl
|
])dnl
|
||||||
|
|
||||||
|
|
||||||
dnl Usage: LYX_PROG_CLANG: set lyx_cv_prog_clang to yes if the compiler is clang.
|
dnl Usage: LYX_PROG_CLANG: set CLANG to yes if the compiler is clang.
|
||||||
AC_DEFUN([LYX_PROG_CLANG],
|
AC_DEFUN([LYX_PROG_CLANG],
|
||||||
[AC_CACHE_CHECK([whether the compiler is clang],
|
[AC_CACHE_CHECK([whether the compiler is clang],
|
||||||
[lyx_cv_prog_clang],
|
[lyx_cv_prog_clang],
|
||||||
@ -146,6 +146,26 @@ AC_DEFUN([LYX_PROG_CLANG],
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Usage: LYX_CXX_CXX11: set lyx_use_cxx11 to yes if the compiler implements
|
||||||
|
dnl the C++11 standard.
|
||||||
|
AC_DEFUN([LYX_CXX_CXX11],
|
||||||
|
[AC_CACHE_CHECK([whether the compiler implements C++11],
|
||||||
|
[lyx_cv_cxx_cxx11],
|
||||||
|
[save_CXXFLAGS=$CXXFLAGS
|
||||||
|
CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS"
|
||||||
|
AC_LANG_PUSH(C++)
|
||||||
|
AC_TRY_COMPILE([], [
|
||||||
|
#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
this is a c++11 compiler
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[lyx_cv_cxx_cxx11=no], [lyx_cv_cxx_cxx11=yes ; lyx_flags="$lyx_flags c++11"])
|
||||||
|
AC_LANG_POP(C++)
|
||||||
|
CXXFLAGS=$save_CXXFLAGS])
|
||||||
|
lyx_use_cxx11=$lyx_cv_cxx_cxx11
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl Usage: LYX_LIB_STDCXX: set lyx_cv_lib_stdcxx to yes if the STL library is libstdc++.
|
dnl Usage: LYX_LIB_STDCXX: set lyx_cv_lib_stdcxx to yes if the STL library is libstdc++.
|
||||||
AC_DEFUN([LYX_LIB_STDCXX],
|
AC_DEFUN([LYX_LIB_STDCXX],
|
||||||
[AC_CACHE_CHECK([whether STL is libstdc++],
|
[AC_CACHE_CHECK([whether STL is libstdc++],
|
||||||
@ -159,14 +179,6 @@ AC_DEFUN([LYX_LIB_STDCXX],
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl Usage: LYX_CXX_USE_CXX11(STD): pass option -std=STD to the C++ compiler
|
|
||||||
dnl and update lyxflags
|
|
||||||
AC_DEFUN([LYX_CXX_USE_CXX11],
|
|
||||||
[lyx_flags="$lyx_flags c++11"
|
|
||||||
AM_CXXFLAGS="$AM_CXXFLAGS -std=$1"
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Usage: LYX_LIB_STDCXX_CXX11_ABI: set lyx_cv_lib_stdcxx_cxx11_abi to yes
|
dnl Usage: LYX_LIB_STDCXX_CXX11_ABI: set lyx_cv_lib_stdcxx_cxx11_abi to yes
|
||||||
dnl if the STL library is GNU libstdc++ and the C++11 ABI is used.
|
dnl if the STL library is GNU libstdc++ and the C++11 ABI is used.
|
||||||
AC_DEFUN([LYX_LIB_STDCXX_CXX11_ABI],
|
AC_DEFUN([LYX_LIB_STDCXX_CXX11_ABI],
|
||||||
@ -257,8 +269,8 @@ AC_ARG_ENABLE(pch,
|
|||||||
lyx_pch_comp=no
|
lyx_pch_comp=no
|
||||||
|
|
||||||
AC_ARG_ENABLE(cxx11,
|
AC_ARG_ENABLE(cxx11,
|
||||||
AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
|
AC_HELP_STRING([--enable-cxx11],[enable C++11 mode (default: enabled for known good compilers)]),,
|
||||||
enable_cxx11=no;)
|
enable_cxx11=auto;)
|
||||||
|
|
||||||
AC_ARG_ENABLE(assertions,
|
AC_ARG_ENABLE(assertions,
|
||||||
AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
|
AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
|
||||||
@ -333,35 +345,42 @@ if test x$GXX = xyes; then
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
if test x$enable_cxx11 = xyes ; then
|
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
|
||||||
case $gxx_version in
|
case $gxx_version in
|
||||||
4.0*|4.1*|4.2*) AC_ERROR([There is no C++11 support in gcc 4.2 or older]);;
|
4.0*|4.1*|4.2*)
|
||||||
|
if x$enable_cxx11 = xyes; then
|
||||||
|
AC_ERROR([There is no C++11 support in gcc 4.2 or older])
|
||||||
|
fi;;
|
||||||
4.3*|4.4*|4.5*|4.6*)
|
4.3*|4.4*|4.5*|4.6*)
|
||||||
dnl Note that this will define __GXX_EXPERIMENTAL_CXX0X__.
|
dnl Note that this will define __GXX_EXPERIMENTAL_CXX0X__.
|
||||||
dnl The source code relies on that.
|
dnl The source code relies on that.
|
||||||
LYX_CXX_USE_CXX11(c++0x);;
|
AM_CXXFLAGS="$AM_CXXFLAGS -std=c++0x";;
|
||||||
clang)
|
clang)
|
||||||
dnl presumably all clang version support c++11.
|
dnl presumably all clang version support c++11.
|
||||||
dnl the deprecated-register warning is very annoying with Qt4.x right now.
|
dnl the deprecated-register warning is very annoying with Qt4.x right now.
|
||||||
LYX_CXX_USE_CXX11(c++11 -Wno-deprecated-register);;
|
AM_CXXFLAGS="$AM_CXXFLAGS -std=c++11 -Wno-deprecated-register";;
|
||||||
*)
|
*)
|
||||||
LYX_CXX_USE_CXX11(c++11);;
|
AM_CXXFLAGS="$AM_CXXFLAGS -std=c++11";;
|
||||||
esac
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
LYX_CXX_CXX11
|
||||||
|
if test $lyx_use_cxx11 = yes ; then
|
||||||
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
|
||||||
case $gxx_version in
|
case $gxx_version in
|
||||||
4.0*|4.1*|4.2*|4.3*|4.4*|4.5*|4.6*|4.7*|4.8*) ;;
|
4.0*|4.1*|4.2*|4.3*|4.4*|4.5*|4.6*|4.7*|4.8*) ;;
|
||||||
*) lyx_flags="$lyx_flags stdregex"
|
*) lyx_std_regex=yes ;;
|
||||||
lyx_std_regex=yes
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
lyx_flags="$lyx_flags stdregex"
|
|
||||||
lyx_std_regex=yes
|
lyx_std_regex=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $lyx_std_regex = yes ; then
|
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])
|
AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user