This is not needed for recent cmake versions, but since we expect
also older cmake version be used, sort the list nevertheless.
See https://reproducible-builds.org/ for why this matters.
Amends b8e3615
- since CMake 3.5 the path to the cmake.exe is no longer by default written to Windows' PATH variable. Therefore this has to be done in the script.
- Windows path can contain spaces (CMake's default installation folder does) so we must use quotes around the paths
- set the CMAKE_PREFIX_PATH variable
The added cmake-parameter is:
-DLYX_EXTERNAL_MYTHES=<value>
where <value> is one of
AUTO (Default) Search first on system for mythes (lib and include)
ON Use installed only (errors if not installed)
OFF Compile the provided source in 3rdparty
The new cmake 3.6 now also inserts correctly
this file into its control-file. But the syntax of the control-file
expects the description lines be indented by a space.
Also empty lines (only spaces) are not allowed.
With both Qt4 and Qt5, when using a click-to-focus policy, the first
attempt to paste a selection by middle mouse in an external application
which has no focus may fail. It is not clear why this succeeds for some
applications and fails for others, but refreshing the timestamp of the
selection request cures the issue. The cmake part is by Kornel.
See also this thread:
http://thread.gmane.org/gmane.editors.lyx.devel/162491
MSVC does not need a special flag to specify the standard. Using --std=c++14
produces a warning, but compilation succeeds, so the old code did mistakenly
choose --std=c++14 for MSVC.
Older gcc versions (e.g. the first one which has usable std::regex: gcc 4.9)
require the --std=c++11 flag to be set. Otherwise std::regex is not made
available. Therefore we need to keep the flag in the loop.
This was dead code that did never work, and most of it was boilerplate that
you can steel in 15 minutes from any existing math inset. Apart from that it
did contain a pointer to InsetXYMatrix which would create the same problems
we saw with the macros.
Boost.Signals is deprecated. This fixes bug #9943.
The only thing left to do is to rewrite (or get rid of) the boost -mt test
in config/lyxinclude.m4 not to use signals anymore.
As discussed on the list. If no C++11 compiler is found configuration stops
with an error. There are now unneeded parts of boost, the will be removed in
a second commit.
For a suffixed version (with suffix 2.3) and installation dir (/usr/local)
the new paths are:
binary -> /usr/local/bin
system-lib -> /usr/local/share/lyx2.3
fonts -> /usr/local/fonts/truetype/lyx2.3
manuals -> /usr/local/man/man1
locales -> /usr/local/share/locale
tex -> /usr/local/texmf/tex/latex/lyx2.3
On mingw-w64, long long (64bit wide) is larger than long (32bit wide).
Therefore we need some more specializations for string, docstring,
otextstream and << overloaded ostream functions. The configuration code
is by me, the source code changes by Shankar Giri Venkita Giri (bug 10053).
In collaboration with Günter Milde:
1.) Allow char ':' be part of a ctest-label
2.) Eliminate redundant label naming and directory names
(The testnames should not repeat the directory name)
Nothing changes for already cached values.
With fresh build-dir and in 'AUTO'-mode we try to determine if the c++ compiler
is able to use this feature.
- build4-2010.bat: MSVC 2010 and Qt 4.8.7 (as backup)
- build5-2010.bat: MSVC 2010 and Qt 5.5.1
I tested both scripts thoroughly and the resulting LyX build is stable. Please feel free to modify them if something can be improved.
LyXMacros.cmake: Overseen the macro 'setmarkedtestlabel()' which added it automatically
if the test was to invert the test result.
ExportTests.cmake: Correct label handling
The GNU libstdc++ that ships witch gcc 5 can be used with the same ABI as
older versions, or with a new ABI which is conformant to the C++11 standard.
LyX did not build if the latter was used:
https://kojipkgs.fedoraproject.org//work/tasks/1267/9651267/build.log
This is now fixed by detecting the ABI version and disabling the wrong forward
declarations. At the same time, STD_STRING_USES_COW is switched off for the
C++11 ABI version, because the std::basic_string implementation is now C++11
conformant. Since the GNU libstdc++ can also used by other compilers such as
clang, we must not test for the compiler version.
As discussed on the list. We don't need it anymore, either we have a modern
compiler that supports C++11, or we fall back to boost. I kept and adjusted
the regex #define, since we cannot use std regex completely yet.
The old detection did only work if CFLAGS contained -std=c++11, since ciso646
was only included for __cplusplus > 199711.
Thanks to Koernel for the cmake part.
1.) The only file which needs this define is src/version.cpp. Our use in config.h
resulted in recompiling most of our sources.
With this change, only version.cpp needs to be recompiled.
2.) Without reconfiguring, the old commit hash was still valid. Now the
detection of commit hash is done at compile time.