diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-10-11 08:02:05 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-10-11 08:02:05 +0300 |
commit | 6e67f5a682ff46d69888fec61b94bf45cec46721 (patch) | |
tree | 4d3bdae0e48a3d69e238c369f6b283975560546d /INSTALL | |
parent | 9b273f1664946543a6f3d8de5058450d412249a1 (diff) | |
download | sciteco-6e67f5a682ff46d69888fec61b94bf45cec46721.tar.gz |
upgraded to Scintilla 5.1.3 and Scinterm 3.1
* Previous Scintilla version was 3.6.4 and Scinterm was 1.7 (with lots of custom patches).
All of the patches are now either irrelevant or have been merged upstream.
* Since Scintilla 5 requires C++17, this increases the minimum GCC version at least
to 5.0. We may actually require even newer versions.
* I could not upgrade the scintilla-mirror (which was imported from Mercurial),
so the old sciteco-dev branch was renamed to sciteco-dev-pre-v2.0.0,
master was deleted and I reimported the entire Scintilla repo using
git-remote-hg.
This means that scintilla-mirror now contains two entirely separate trees.
But it is still possible to clone old SciTECO repos.
* The strategy/workflow of maintaining hotfix branches on scintilla-mirror has been changed.
Instead of having one sciteco-dev branch that is rebased onto new Scintilla upstream
releases and tagging SciTECO releases in scintilla-mirror (to keep the commits referenced),
we now create a branch for every Scintilla version we are based on (eg. sciteco-rel-5-1-3).
This branch is never rebased or deleted. Therefore, we are guaranteed to be able to
clone arbitrary SciTECO repo commits - not only releases.
Releases no longer have to be tagged in scintilla-mirror.
On the downside, fixup commits may accumulate in these new branches.
They can only be squashed once a new branch for a new Scintilla release is created
(e.g. by cherry-picking followed by rebase).
* Scinterm does no longer have to reside in the Scintilla subdirectory,
so we added it as a regular submodule.
There are no more recursive submodules.
The Scinterm build system has not been improved at all, but we use
a trick based on VPATH to build Scinterm in scintilla/bin/.
* Scinterm is now in Git and we reference the upstream repo for the
time being.
We might mirror it and apply the same branching workflow as with Scintilla
if necessary.
The scinterm-mirror repository still exists but has not been touched.
We will also have to rewrite its master branch as it was a non-reproducible
Mercurial import.
* Scinterm now also comes with patches for Scintilla which we simply applied
on our sciteco-rel-5-1-3 branch.
* Scintilla 5 outsourced its lexers into the Lexilla project.
We added it as yet another submodule.
* All submodules have been moved into contrib/.
* The Scintilla API for setting lexers has consequently changed.
We now have to call SCI_SETILEXER(0, CreateLexer(name)).
As I did not want to introduce a separate command for setting lexers,
<ES> has been extended to allow setting lexers by name with the SCI_SETILEXER
message which effectively replaces SCI_SETLEXERLANGUAGE.
* The lexer macros (SCLEX_...) no longer serve any purpose - they weren't used
in the SciTECO standard library anyway - and have consequently been removed
from symbols-scilexer.c.
The style macros from SciLexer.h (SCE_...) are theoretically still useful - even
though they are not used by our current color schemes - and have therefore been
retained. They can be specified as wParam in <ES>.
* <ES> no longer allows symbolic constants for lParam.
This never made any sense since all supported symbols were always wParam.
* Scinterm supports new native cursor modes.
They are not used for the time being and the previous CARETSTYLE_BLOCK_AFTER
caret style is configured by default.
It makes no sense to enable native cursor modes now since the
command line should have a native cursor but is not yet a Scintilla view.
* The Scintilla upgrade performed much worse than before,
so some optimizations will be necessary.
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 34 |
1 files changed, 15 insertions, 19 deletions
@@ -15,8 +15,8 @@ SciTECO Build and Runtime Dependencies * Autotools and an UNIX-like environment * GNU Make - * A GCC-compatible C11 and C++11 compiler, e.g. GNU C/C++ - (v4.4 or later) or LLVM/gcc or LLVM/Clang. + * A GCC-compatible C11 and C++17 compiler, e.g. GNU C/C++ + (v5.0 or later) or LLVM/gcc or LLVM/Clang. SciTECO itself does not require C++, but Scintilla does. * Glib 2 as a cross-platform runtime library (v2.44 or later): https://developer.gnome.org/glib/ @@ -43,11 +43,13 @@ These dependencies are bundled with the SciTECO Git repository and with source tar balls, so they usually do not have to be installed by the user manually: - * Scintilla (v3.6.3 or later): + * Scintilla (v5.0.0 or later): http://www.scintilla.org/ * When choosing the Curses interface: - * Scinterm (v1.7 or later): + * Scinterm (v3.1 or later): http://foicica.com/scinterm/ + * Lexilla (v5.0.0 or later): + https://www.scintilla.org/Lexilla.html On Ubuntu, you can install all dependencies you could possibly need as follows: @@ -79,13 +81,13 @@ Just make sure you have cloned your repository as follows: $ git clone https://github.com/rhaberkorn/sciteco.git $ cd sciteco/ - $ git submodule update --init --recursive + $ git submodule update --init If you already have a Git clone of the SciTECO repository and want to update it, you should issue the following commands: $ git pull - $ git submodule update --recursive + $ git submodule update When building from Git, you must first generate the ./configure script using Autoconf/Automake: @@ -139,28 +141,22 @@ Out of Tree Builds Like any Autoconf/Automake-based project, SciTECO can generally be built out-of-tree (in a different directory than its sources). This is often useful, especially when cross-compiling. -Unfortunately, the Scintilla build-system does not support -out-of-tree builds, so even though Scintilla has been tied +Unfortunately, the Scintilla (and related libraries') build-system +does not support out-of-tree builds, so even though Scintilla has been tied into SciTECO's build system for convenience, out-of-tree builds cannot be performed directly as Scintilla would still be built in SciTECO's source directory by default. -Fortunately, SciTECO allows you to overwrite the Scintilla -source and build path via the ./configure --with-scintilla option. -This may be used to clone a copy of Scintilla into SciTECO's -build directory, initialize its Scinterm submodule and direct -SciTECO's build system to this copy. +However, you may copy Scintilla, Scinterm and Lexilla into +SciTECO's build directory. An out-of-tree build of SciTECO can thus be achieved using the following steps (supposing that the build directory will be a subdirectory of the Git repository called `build-dir`): - $ mkdir build-dir + $ mkdir -p build-dir/contrib + $ cp -r contrib/{scintilla,scinterm,lexilla} build-dir/contrib/ $ cd build-dir - $ git clone ../scintilla - $ cd scintilla - $ git submodule update --init - $ cd .. - $ ../configure --with-scintilla=scintilla + $ ../configure $ make ... |