-
Notifications
You must be signed in to change notification settings - Fork 2
/
build.txt
221 lines (172 loc) · 6.6 KB
/
build.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
BUILD NOTES
static site checker
https://ssc.lu/
(c) 2020-2024 Dylan Harris
Introduction
============
SSC can be built on various unii with CMake and gcc or clang for C++ 17
or better, or Visual Studios 2017 / 2019 / 2022 under Windows. I have
built & tested a 64-bit version in various OSs on intel/amd & arm64
(m2) architecture.
Although ssc builds with older compilers on some older systems, not all
features are available.
Libraries
=========
Common dependencies
-------------------
The Visual Studio solutions use vcpkg, so dependencies should be
automagically installed.
Otherwise, ssc needs boost version 1.75 or better (https://boost.org),
a recent copy of the ICU libraries (https://icu-project.org/),
Microsoft's GSL library (https://github.com/Microsoft/GSL) (or define
NO_GSL), and a recent version of libcurl (https://curl.se/)* (or define
NOCURL). Usually, an Operating System's package manager has appropriate
versions ready to install.
You may need to set these environment variables:
- BOOST: if you're not using your operating system's packaged flavour
of boost, then set BOOST to your boost source root directory;
- ICU_ROOT: if you're not using your operating system's packaged ICU,
set ICU_ROOT to your ICU source root directory;
- GSL: set it to your GSL root directory.
- WX_ROOT: if you're building the gui front end to ssc, you'll need to
install wxWidgets and set WX_ROOT to its installation directory.
*libcurl requires a thread-safe underlying SSL library: see
https://curl.se/libcurl/c/threadsafe.html.
hunspell
--------
Building SSC under unii, including macos, requires a development
installation of hunspell (https://hunspell.github.io/).
winspell
--------
The Windows build, by default, uses the native Windows spellchecker,
although, except for Windows 11, that doesn't seem to work so well in
contexts unimpaired by monolingualism.
Notes on the GUI
================
wxWidgets
---------
Why use this ancient behemoth given the good number of somewhat less
archaic C++ GUI libraries? The requirements were: (i) Open Source;
(ii) supports Windows/MacOS/Linux/OpenBSD. Of those libraries I found,
only wxWidgets was documented to support OpenBSD.
Polylingualism
--------------
ssc is written for coders. HTML/etc. code is based on English, so
ssc's GUI text is similarly monolingual.
Unstable
--------
The GUI will evolve rapidly over the coming few months, so expect it to
change significantly.
Building
========
Windows
-------
To build from Visual Studio, navigate to recipe/tea, open the
appropriate .sln file, then build. Only Visual Studios 2017, 2019 and
2022 have been built & tested, for amd64 (x64) and arm64 (M2), under
Windows 10 & 11.
On low memory machines, disable the /MP switch.
The Visual Studio solutions use vcpkg, which resolves dependencies.
For all versions, except recent editions of Visual Studio 2022, you may
need to first download and install vcpkg yourself, from
https://vcpkg.io/.
Unii & mock Unii
----------------
You will need CMake 3.19 or better. On Linux, you will also need
lsb-release. These can be found in most distributions' standard
packages. For macos, I used macports, but brew is good too. From the
home ssc directory, compile a normal build thus:
cmake .
make
ctest
make install
For a debug build:
cmake -DCMAKE_BUILD_TYPE=Debug .
make
ctest
make install
If everything works correctly, then everything will be built, a series
of tests run, with a final result at the very end saying no failures.
Having said that, given SSC is alpha, don't be too surprised to see
some warnings or some final test errors. Note in particular that
complaints about being unable to find or copy files during testing are
not of concern, these come from scripts that set up or tear down
individual tests, and the standard commands used sometimes complain if
they can't find files they're supposed to delete, which is a bit silly
given that means things are already in the required state.
The following have, at some point, been successfully built as x64 amd:
FreeBSD: 13.2 / 13.1 / 12.4 / 12.3
Linux: Alma Linux 9, AOSC, Centos 8 / 9, SUSE Tumbleweed,
Ubuntu 20.04 / 22.04
MacOS: Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave. Older
versions of ssc have been built under High Sierra, Sierra, El
Capitan and Yosemite
OpenBSD: 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.9 / 6.8
The following have been successfully built as arm64:
Linux: Centos 9
MacOS: Sonoma, Ventura
The current version of ssc requires the current version of an operating
system. Older operating systems require older versions of ssc. Not all
features work on all systems.
I've sometimes found it necessary to use cmake's
-DCMAKE_CXX_COMPILER=... switch.
Centos 9
--------
The appropriate CMake command is:
cmake . -DFLAVOUR=CentosOSStream -DFLAVOUR_VER=9
(note the standard English spelling of flavour.)
OpenBSD
-------
You may need to increase significantly the available memory setting
for your build account in login.conf.
Macos
-----
Certain versions of macos clang produce buggy code, whether or not
optimisations are applied. Use an alternative compiler if you want
a stable executable.
Testing
=======
Windows
-------
Under Visual Studio, run ssc??-test using these arguments:
-v -x $(ProjectDir)..\..\ssc.exe
-f $(ProjectDir)..\toast\ssc-test\win.lst
(on one line)
Add '-d' if you want the test utility to retain temporary files.
CMake
-----
Under CMake, run ctest:
ctest -V
(which runs ssc-test for you, using nix.lst).
Dimitude
--------
The testing utility is rather dim; it will test unbuilt features,
causing failures.
Spelling test results depend on the dictionaries installed.
Supporting libraries
====================
GSL
---
If you can't find a copy of Microsoft's GSL in your system's standard
package suite, then grab a current copy from its github repository
(https://github.com/Microsoft/GSL), then unpack, build and install it.
In Windows, remember to add its root directory to your local path.
Boost
-----
Boost is to C++ as breakfast to the working day.
Most package managers support it, including vcpkg. Alternatively, build
your own version using the source found at boost.org.
Curl
----
curl is used for link checking and, where necessary, obtaining remote
resources. Most package managers support it.
wxWidgets
---------
This is only required if you make a GUI build, which is not recommended
(yet). It can be found at wxwidgets.org. Note that I have not tested it
under many supported (by wxWidgets) systems.
Editions
========
Currently, there are new, work-in-progress, server and gui editions in
the Visual Studio solution. These do not work and should not be used.
Stick to the standard edition.