Skip to content

Commit 45929de

Browse files
authored
Merge pull request #844 from o-sdn-o/gui-bridge
Add case-insensitive APC payload marker `lua:`
2 parents 21382bd + f67340e commit 45929de

File tree

16 files changed

+263
-137
lines changed

16 files changed

+263
-137
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
arch: any
2828
cxx: c++
2929
cc: cc
30-
flags: '-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_CXX_FLAGS_RELEASE="-O2 -DNDEBUG -Wall -Wextra -Wno-missing-field-initializers -Werror"'
30+
flags: '-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_CXX_FLAGS_RELEASE="-O2 -DNDEBUG -Wall -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers -Werror"'
3131
- os: windows-latest
3232
platform: windows
3333
cpu: Win32
@@ -59,7 +59,8 @@ jobs:
5959
cc: /usr/bin/aarch64-linux-gnu-gcc-12
6060

6161
- os: ubuntu-22.04
62-
flags: '-DCMAKE_C_FLAGS="-O2 -static " -DCMAKE_CXX_FLAGS_RELEASE=" -static -s -O2 -DNDEBUG -Wall -Wextra -Wno-missing-field-initializers -Wno-psabi -Werror"'
62+
# -Wno-array-bounds: harfbuzz on 32-bit platforms warning: offset '12' outside bounds of constant string [-Warray-bounds=].
63+
flags: '-DCMAKE_C_FLAGS="-O2 -static " -DCMAKE_CXX_FLAGS_RELEASE=" -static -s -O2 -DNDEBUG -Wall -Wno-array-bounds -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers -Wno-psabi -Werror"'
6364
- os: windows-latest
6465
flags: '-DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded" -DCMAKE_EXE_LINKER_FLAGS_RELEASE="/DEBUG /OPT:REF /OPT:ICF" -DCMAKE_C_FLAGS_RELEASE="/MT /O2 /c" -DCMAKE_CXX_FLAGS_RELEASE="/MT /O2 /DNDEBUG /Zi /Zc:preprocessor /W4" -A '
6566

CMakeLists.txt

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
cmake_minimum_required(VERSION 3.22)
2+
include(FetchContent)
23

34
project("vtm")
45
# project("term")
@@ -30,25 +31,50 @@ else()
3031
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static -O2 -DLUA_USE_POSIX")
3132
endif()
3233

34+
add_executable(vtm "src/vtm.cpp" ${WIN32_RESOURCES})
35+
# add_executable(term "src/netxs/apps/term.cpp")
36+
# add_executable(calc "src/netxs/apps/calc.cpp")
37+
38+
# Set BUILD_SHARED_LIBS to OFF globally for fetched content.
39+
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries" FORCE)
40+
41+
# FreeType dependency
42+
set(FT_DISABLE_BROTLI ON CACHE BOOL "Disable brotli" FORCE)
43+
set(FT_DISABLE_ZLIB ON CACHE BOOL "Disable zlib" FORCE)
44+
set(FT_DISABLE_BZIP2 ON CACHE BOOL "Disable bzip2" FORCE)
45+
set(FT_DISABLE_PNG ON CACHE BOOL "Disable libpng" FORCE)
46+
set(FT_DISABLE_HARFBUZZ ON CACHE BOOL "Disable harfbuzz" FORCE)
47+
FetchContent_Declare(freetype
48+
GIT_REPOSITORY https://github.com/freetype/freetype.git
49+
GIT_TAG VER-2-14-1)
50+
FetchContent_MakeAvailable(freetype)
51+
52+
# HarfBuzz dependency
53+
set(HB_NO_MT ON CACHE BOOL "Single threaded" FORCE)
54+
set(HB_NO_PRAGMA_GCC_DIAGNOSTIC_ERROR ON CACHE BOOL "Disable pragma warning" FORCE)
55+
set(HB_HAVE_FREETYPE OFF CACHE BOOL "Disable freetype" FORCE)
56+
set(HB_HAVE_GLIB OFF CACHE BOOL "Disable glib" FORCE)
57+
set(HB_HAVE_GOBJECT OFF CACHE BOOL "Disable gobject" FORCE)
58+
set(HB_HAVE_ICU OFF CACHE BOOL "Disable icu" FORCE)
59+
set(HB_HAVE_CAIRO OFF CACHE BOOL "Disable cairo" FORCE)
60+
FetchContent_Declare(harfbuzz
61+
URL https://github.com/harfbuzz/harfbuzz/archive/refs/tags/12.1.0.tar.gz
62+
URL_HASH SHA256=0238bf7ada6b1fb92984f69f8b9cd66518af83cf24f7db1cfe60c772c42312d3)
63+
FetchContent_MakeAvailable(harfbuzz)
64+
3365
# Lua dependency
34-
include(FetchContent)
3566
FetchContent_Declare(lua
3667
URL https://www.lua.org/ftp/lua-5.4.7.tar.gz
3768
URL_HASH SHA256=9fbf5e28ef86c69858f6d3d34eccc32e911c1a28b4120ff3e84aaa70cfbf1e30)
3869
FetchContent_MakeAvailable(lua)
3970
file(GLOB lua_src CONFIGURE_DEPENDS ${lua_SOURCE_DIR}/src/*.c)
4071
list(REMOVE_ITEM lua_src ${lua_SOURCE_DIR}/src/lua.c ${lua_SOURCE_DIR}/src/luac.c)
41-
add_library(lua ${lua_src})
42-
target_include_directories(lua PUBLIC ${lua_SOURCE_DIR}/src)
43-
target_sources(lua PUBLIC ${lua_src})
44-
45-
add_executable(vtm "src/vtm.cpp" ${WIN32_RESOURCES})
46-
# add_executable(term "src/netxs/apps/term.cpp")
47-
# add_executable(calc "src/netxs/apps/calc.cpp")
72+
add_library(lua EXCLUDE_FROM_ALL ${lua_src})
73+
target_include_directories(vtm PRIVATE ${lua_SOURCE_DIR}/src)
4874

49-
target_link_libraries(vtm PRIVATE lua)
50-
# target_link_libraries(term PRIVATE lua)
51-
# target_link_libraries(calc PRIVATE lua)
75+
target_link_libraries(vtm PRIVATE lua freetype harfbuzz)
76+
# target_link_libraries(term PRIVATE lua freetype harfbuzz)
77+
# target_link_libraries(calc PRIVATE lua freetype harfbuzz)
5278

5379
if(NOT WIN32)
5480
install(TARGETS vtm DESTINATION bin)

CMakeSettings.json

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
{
2020
"name": "CMAKE_C_FLAGS_DEBUG",
21-
"value": "/DDEBUG /MTd /c",
21+
"value": "/DDEBUG /MTd /Zi /c",
2222
"type": "STRING"
2323
},
2424
{
@@ -45,12 +45,12 @@
4545
"variables": [
4646
{
4747
"name": "CMAKE_CXX_FLAGS_DEBUG",
48-
"value": "-O0 -DDEBUG -static -pthread -g -Wall -Wextra -Wno-missing-field-initializers",
48+
"value": "-O0 -DDEBUG -static -g -pthread -Wall -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
4949
"type": "STRING"
5050
},
5151
{
5252
"name": "CMAKE_C_FLAGS_DEBUG",
53-
"value": "-O0 -DDEBUG -static",
53+
"value": "-O0 -DDEBUG -static -g",
5454
"type": "STRING"
5555
},
5656
{
@@ -86,7 +86,7 @@
8686
},
8787
{
8888
"name": "CMAKE_C_FLAGS_DEBUG",
89-
"value": "/DDEBUG /MTd /c",
89+
"value": "/DDEBUG /MTd /Zi /c",
9090
"type": "STRING"
9191
},
9292
{
@@ -110,12 +110,12 @@
110110
"variables": [
111111
{
112112
"name": "CMAKE_CXX_FLAGS_DEBUG",
113-
"value": "-O0 -static -DDEBUG -pthread -Wall -Wextra -Wno-missing-field-initializers",
113+
"value": "-O0 -static -DDEBUG -g -pthread -Wall -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
114114
"type": "STRING"
115115
},
116116
{
117117
"name": "CMAKE_C_FLAGS_DEBUG",
118-
"value": "-O0 -static -DDEBUG",
118+
"value": "-O0 -static -DDEBUG -g",
119119
"type": "STRING"
120120
},
121121
{
@@ -147,12 +147,12 @@
147147
"variables": [
148148
{
149149
"name": "CMAKE_CXX_FLAGS_DEBUG",
150-
"value": "-O0 -DDEBUG -static -pthread -g -Wno-missing-field-initializers",
150+
"value": "-O0 -DDEBUG -static -g -pthread -Wno-missing-field-initializers",
151151
"type": "STRING"
152152
},
153153
{
154154
"name": "CMAKE_C_FLAGS_DEBUG",
155-
"value": "-O0 -DDEBUG -static",
155+
"value": "-O0 -DDEBUG -static -g",
156156
"type": "STRING"
157157
},
158158
{
@@ -171,35 +171,6 @@
171171
"addressSanitizerRuntimeFlags": "detect_leaks=0",
172172
"remoteCopyUseCompilerDefaults": true
173173
},
174-
{
175-
"name": "PROD-Win-ARM32",
176-
"generator": "Visual Studio 17 2022 ARM",
177-
"configurationType": "Release",
178-
"buildRoot": "${workspaceRoot}\\.vs\\build\\${name}",
179-
"installRoot": "${workspaceRoot}\\.vs\\build\\install\\${name}",
180-
"cmakeCommandArgs": "",
181-
"buildCommandArgs": "",
182-
"ctestCommandArgs": "",
183-
"inheritEnvironments": [ "msvc_arm_x64" ],
184-
"variables": [
185-
{
186-
"name": "CMAKE_CXX_FLAGS_RELEASE",
187-
"value": "/DNDEBUG /MT /O2 /EHsc /bigobj /utf-8 /Zc:preprocessor /W4",
188-
"type": "STRING"
189-
},
190-
{
191-
"name": "CMAKE_C_FLAGS_RELEASE",
192-
"value": "/DNDEBUG /MT /O2 /c",
193-
"type": "STRING"
194-
},
195-
{
196-
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
197-
"value": "MultiThreaded",
198-
"type": "STRING"
199-
}
200-
],
201-
"intelliSenseMode": "windows-msvc-arm"
202-
},
203174
{
204175
"name": "PROD-Win-ARM64",
205176
"generator": "Visual Studio 17 2022 ARM64",
@@ -213,12 +184,12 @@
213184
"variables": [
214185
{
215186
"name": "CMAKE_CXX_FLAGS_RELEASE",
216-
"value": "/DNDEBUG /MT /O2 /EHsc /bigobj /utf-8 /Zc:preprocessor /W4",
187+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /EHsc /bigobj /utf-8 /W4",
217188
"type": "STRING"
218189
},
219190
{
220191
"name": "CMAKE_C_FLAGS_RELEASE",
221-
"value": "/DNDEBUG /MT /O2 /c",
192+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /c",
222193
"type": "STRING"
223194
},
224195
{
@@ -242,12 +213,12 @@
242213
"variables": [
243214
{
244215
"name": "CMAKE_CXX_FLAGS_RELEASE",
245-
"value": "/DNDEBUG /MT /O2 /EHsc /bigobj /utf-8 /Zi /Zc:preprocessor /W4",
216+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /EHsc /bigobj /utf-8 /Zi /Zc:preprocessor /W4",
246217
"type": "STRING"
247218
},
248219
{
249220
"name": "CMAKE_C_FLAGS_RELEASE",
250-
"value": "/DNDEBUG /MT /O2 /c",
221+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /c",
251222
"type": "STRING"
252223
},
253224
{
@@ -275,12 +246,12 @@
275246
"variables": [
276247
{
277248
"name": "CMAKE_CXX_FLAGS_RELEASE",
278-
"value": "/DNDEBUG /MT /O2 /EHsc /bigobj /utf-8 /Zi /Zc:preprocessor /W4",
249+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /EHsc /bigobj /utf-8 /W4",
279250
"type": "STRING"
280251
},
281252
{
282253
"name": "CMAKE_C_FLAGS_RELEASE",
283-
"value": "/DNDEBUG /MT /O2 /c",
254+
"value": "/DNDEBUG /MT /O2 /Zi /Zc:preprocessor /c",
284255
"type": "STRING"
285256
},
286257
{
@@ -309,7 +280,8 @@
309280
"variables": [
310281
{
311282
"name": "CMAKE_CXX_FLAGS_RELEASE",
312-
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wno-psabi -Wall -Wextra -Wno-missing-field-initializers",
283+
"comment": "# -Wno-array-bounds: harfbuzz on 32-bit platforms warning: offset '12' outside bounds of constant string [-Warray-bounds=].",
284+
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wno-psabi -Wall -Wno-array-bounds -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
313285
"type": "STRING"
314286
},
315287
{
@@ -347,7 +319,7 @@
347319
"variables": [
348320
{
349321
"name": "CMAKE_CXX_FLAGS_RELEASE",
350-
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wextra -Wno-missing-field-initializers",
322+
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
351323
"type": "STRING"
352324
},
353325
{
@@ -385,7 +357,7 @@
385357
"variables": [
386358
{
387359
"name": "CMAKE_CXX_FLAGS_RELEASE",
388-
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wextra -Wno-missing-field-initializers",
360+
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wno-array-bounds -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
389361
"type": "STRING"
390362
},
391363
{
@@ -422,7 +394,7 @@
422394
"variables": [
423395
{
424396
"name": "CMAKE_CXX_FLAGS_RELEASE",
425-
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wextra -Wno-missing-field-initializers",
397+
"value": "-O2 -DNDEBUG -pthread -static-libstdc++ -s -Wall -Wno-unknown-pragmas -Wextra -Wno-missing-field-initializers",
426398
"type": "STRING"
427399
},
428400
{

doc/apps.md

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -97,28 +97,29 @@ printf " Hello Test\r\e[44;31m\0\0\0\0\0\0\0\e[m\n"
9797
The built-in terminal is capable of executing Lua scripts received via APC (Application Program Command) vt-sequences. The format of the vt-sequence is as follows:
9898

9999
```
100-
ESC _ <script body> ESC \
100+
ESC _ lua: <script body> ESC \
101101
```
102102
or
103103
```
104-
ESC _ <script body> BEL
104+
ESC _ lua: <script body> BEL
105105
```
106-
where:
107-
- `ESC_` is the APC vt-sequence prefix.
108-
- `<script body>` - Lua script sent for execution.
109-
- `ESC\` or `BEL` - APC vt-sequence terminator.
106+
where:
107+
- `ESC_`: APC vt-sequence prefix.
108+
- `lua:`: case-insensitive APC payload marker.
109+
- `<script body>`: Lua script body.
110+
- `ESC\` or `BEL`: APC vt-sequence terminator.
110111

111112
Usage examples:
112113
- `bash`:
113114
```
114115
# Print the current scrollback buffer limits
115-
printf "\e_local n,m,q=vtm.terminal.ScrollbackSize(); vtm.terminal.PrintLn('size=', n, ' growstep=', m, ' maxsize=', q)\e\\"
116+
printf "\e_lua: local n,m,q=vtm.terminal.ScrollbackSize(); vtm.terminal.PrintLn('size=', n, ' growstep=', m, ' maxsize=', q)\e\\"
116117
117118
# Set the scrollback buffer limit to 10K lines
118-
printf "\e_vtm.terminal.ScrollbackSize(10000)\a"
119+
printf "\e_lua: vtm.terminal.ScrollbackSize(10000)\a"
119120
120121
# Maximize the terminal window
121-
printf "\e_vtm.applet.Maximize()\e\\"
122+
printf "\e_lua: vtm.applet.Maximize()\e\\"
122123
```
123124

124125
A complete list of available script functions can be found in [settings.md](settings.md#event-sources).
@@ -127,9 +128,9 @@ Note: The terminal parser may incorrectly detect the boundaries of a control seq
127128

128129
Example in bash:
129130
```bash
130-
printf "\e_vtm.terminal.PrintLn('\\e[44mHello!\\e[m')\a"
131-
printf "\e_vtm.terminal.PrintLn('\\\u{1b}[44mHello!\\\u{1b}[m')\a"
132-
printf "\e_vtm.terminal.PrintLn('\\x1b[44mHello!\\x1b[m')\a"
131+
printf "\e_lua: vtm.terminal.PrintLn('\\e[44mHello!\\e[m')\a"
132+
printf "\e_lua: vtm.terminal.PrintLn('\\\u{1b}[44mHello!\\\u{1b}[m')\a"
133+
printf "\e_lua: vtm.terminal.PrintLn('\\x1b[44mHello!\\x1b[m')\a"
133134
```
134135

135136
### Special keyboard mode for terminal window to transfer all keyboard input to the terminal as is
@@ -138,19 +139,19 @@ The special (visible in the UI as Exclusive) terminal window mode allows all key
138139

139140
### Private control sequences
140141

141-
Name | Sequence | Description
142-
-------------|------------------------------------|------------
143-
`CCC_SBS` | `ESC [ 24 :` n `:` m `:` q `p` | Set scrollback buffer parameters:<br>`n` Initial buffer size<br>`m` Grow step<br>`q` Grow limit
144-
`CCC_SGR` | `ESC [ 28 :` m `p` | Set terminal background SGR attribute:<br>`m` SGR attribute (attribute m may include subarguments separated by colons), 0 — reset all attributes, _default is 0_
145-
`CCC_SEL` | `ESC [ 29 :` n `p` | Set text selection mode:<br>`n = 0` Selection is off<br>`n = 1` Select and copy as plaintext (default)<br>`n = 2` Select and copy as ANSI/VT text<br>`n = 3` Select and copy as RTF-document<br>`n = 4` Select and copy as HTML-code<br>`n = 5` Select and copy as protected plaintext (suppressed preview, [details](https://learn.microsoft.com/en-us/windows/win32/dataxchg/clipboard-formats#cloud-clipboard-and-clipboard-history-formats))
146-
`CCC_PAD` | `ESC [ 30 :` n `p` | Set scrollback buffer left and right side padding:<br>`n` Width in cells, _max = 255, default is 0_
147-
`CCC_RST` | `ESC [ 1 p` | Reset all parameters to default
148-
`CCC_TBS` | `ESC [ 5 :` n `p` | Set tab length in cells:<br>`n` Length in cells, _max = 256, default is 8_
149-
`CCC_JET` | `ESC [ 11 :` n `p` | Set text alignment, _default is Left_:<br>`n = 0`<br>`n = 1` Left<br>`n = 2` Right<br>`n = 3` Center
150-
`CCC_WRP` | `ESC [ 12 :` n `p` | Set text autowrap mode, _default is On_:<br>`n = 0`<br>`n = 1` On<br>`n = 2` Off (_enables horizontal scrolling_)
151-
`CCC_RTL` | `ESC [ 13 :` n `p` | Set text right-to-left mode, _default is Off_:<br>`n = 0`<br>`n = 1` On<br>`n = 2` Off
152-
153-
Note: It is possible to combine multiple command into a single sequence using a semicolon. For example, the following sequence disables line wrapping, enables text selection, and sets background to blue: `\e[12:2;29:1;28:44p` or `\e[12:2;29:1;28:48:2:0:0:255p`.
142+
Note: Since `CSI p` sequences are used by other terminals, all private vt-sequences must be replaced with alternative ones using Lua scripting via APC.
143+
144+
APC sequence | Deprecated sequence | Description
145+
---------------------------------------------------------------|------------------------------------|------------
146+
`ESC _ lua: vtm.terminal.ScrollbackSize(` n `,` m `,` q `) ST` | `ESC [ 24 :` n `:` m `:` q `p` | Set scrollback buffer parameters:<br>`n` Initial buffer size<br>`m` Grow step<br>`q` Grow limit
147+
`ESC _ lua: vtm.terminal.Print('\x1b[#{\x1b[0;` m `m'); vtm.terminal.SetBackground(); vtm.terminal.Print('\x1b[#}') ST` | `ESC [ 28 :` m `p` | Set terminal background SGR attribute:<br>`m` SGR attribute (attribute m may include subarguments separated by colons), 0 — reset all attributes, _default is 0_
148+
`ESC _ lua: vtm.terminal.ClipboardFormat(` n `) ST` | `ESC [ 29 :` n `p` | Set text selection mode:<br>`n = 0` Selection is off<br>`n = 1` Select and copy as plaintext (default)<br>`n = 2` Select and copy as ANSI/VT text<br>`n = 3` Select and copy as RTF-document<br>`n = 4` Select and copy as HTML-code<br>`n = 5` Select and copy as protected plaintext (suppressed preview, [details](https://learn.microsoft.com/en-us/windows/win32/dataxchg/clipboard-formats#cloud-clipboard-and-clipboard-history-formats))
149+
`ESC _ lua: vtm.terminal.ScrollbackPadding(` n `) ST` | `ESC [ 30 :` n `p` | Set scrollback buffer left and right side padding:<br>`n` Width in cells, _max = 255, default is 0_
150+
`ESC _ lua: vtm.terminal.ResetAttributes() ST` | `ESC [ 1 p` | Reset all parameters to default
151+
`ESC _ lua: vtm.terminal.TabLength(` n `) ST` | `ESC [ 5 :` n `p` | Set tab length in cells:<br>`n` Length in cells, _max = 256, default is 8_
152+
`ESC _ lua: vtm.terminal.LineAlignMode(` n - 1 `) ST` | `ESC [ 11 :` n `p` | Set text alignment, _default is Left_:<br>`n = 0`<br>`n = 1` Left<br>`n = 2` Right<br>`n = 3` Center
153+
`ESC _ lua: vtm.terminal.LineWrapMode(` 0(off) or 1(on) `) ST` | `ESC [ 12 :` n `p` | Set text autowrap mode, _default is On_:<br>`n = 0`<br>`n = 1` On<br>`n = 2` Off (_enables horizontal scrolling_)
154+
`ESC _ lua: vtm.terminal.RightToLeft(` 0(off) or 1(on) `) ST` | `ESC [ 13 :` n `p` | Set text right-to-left mode, _default is Off_:<br>`n = 0`<br>`n = 1` On<br>`n = 2` Off
154155

155156
### UI Shadows as SGR attribute
156157

doc/build.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
## Building from source
44

5-
Note: As part of the build process, cmake downloads and compiles the Lua source code from https://www.lua.org.
5+
Note: As part of the build process, cmake downloads and compiles:
6+
- The FreeType source code from https://github.com/freetype/freetype.
7+
- The HarfBuzz source code from https://github.com/harfbuzz/harfbuzz.
8+
- The Lua source code from https://www.lua.org.
69

710
### Unix
811

0 commit comments

Comments
 (0)