-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.gitmodules
More file actions
333 lines (327 loc) · 16.1 KB
/
Copy path.gitmodules
File metadata and controls
333 lines (327 loc) · 16.1 KB
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
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
; mono.vendor/ holds submodules and nothing else. A third-party source file
; copied into the tree works once and then drifts invisibly.
;
; shallow = true keeps `just setup` to a single commit per vendor. The exact
; commit is still pinned by the superproject, so a clone is reproducible.
; The window, the input and the GPU abstraction. Pinned to the `release-3.4.14`
; tag rather than to the head of its branch, because the version is a number
; documents quote and a branch head is not one.
;
; **Moved 3.2.31 to 3.4.14 at v0.15, and nothing in this repository changed with
; it.** All 219 SDL symbols the engine names still exist - checked against the
; 3.4 headers rather than by building and hoping - so the bump is additive. What
; it buys is `SDL_GetGPUDeviceProperties` (device and driver name, version and
; info, for a probe that currently has none) and the GPU device-creation feature
; toggles that let a device be made on hardware missing clip distance, depth
; clamping or anisotropy.
;
; **It does not buy a GPU timestamp query, and that was checked rather than
; hoped for**: 3.4.14's `SDL_gpu.h` still has no timestamp, no query pool and no
; `SDL_GPUQuery`. `docs/DEFERRED.md` D00046 is blocked on exactly that and is
; unmoved by this.
;
; One new configure warning comes with it and it is honest: 3.4 warns when
; `libdecor-0` is absent, which 3.2 checked for silently. Wayland window
; decorations on GNOME and Weston want it; an X11 session does not care. Install
; `libdecor-0-dev` to silence it rather than turning the feature off.
[submodule "mono.vendor/sdl"]
path = mono.vendor/sdl
url = https://github.com/libsdl-org/SDL.git
branch = release-3.4.x
shallow = true
[submodule "mono.vendor/glm"]
path = mono.vendor/glm
url = https://github.com/g-truc/glm.git
branch = master
shallow = true
[submodule "mono.vendor/spdlog"]
path = mono.vendor/spdlog
url = https://github.com/gabime/spdlog.git
branch = v1.x
shallow = true
[submodule "mono.vendor/tracy"]
path = mono.vendor/tracy
url = https://github.com/wolfpld/tracy.git
branch = master
shallow = true
[submodule "mono.vendor/catch2"]
path = mono.vendor/catch2
url = https://github.com/catchorg/Catch2.git
branch = devel
shallow = true
; shaderc is the one vendor `just setup` cannot finish on its own. It pins
; glslang, SPIRV-Tools and SPIRV-Headers in its own DEPS file rather than as
; submodules, so `git submodule update --recursive` clones shaderc and leaves
; third_party/ empty. The Justfile runs utils/git-sync-deps for that, and
; MonoVendor.cmake stops with instructions if it has not been run.
[submodule "mono.vendor/shaderc"]
path = mono.vendor/shaderc
url = https://github.com/google/shaderc.git
branch = main
shallow = true
; The docking branch, not master. repo_layout.md §8 has mono.studio doing
; "editor shell · docking · inspectors", and master has neither docking nor
; viewports. It is a long-lived feature branch, which is fine - the superproject
; pins the commit either way.
[submodule "mono.vendor/imgui"]
path = mono.vendor/imgui
url = https://github.com/ocornut/imgui.git
branch = docking
shallow = true
; Standalone asio, not Boost.Asio. The headers are under asio/include and there
; is no CMakeLists - MonoVendor.cmake declares the target.
[submodule "mono.vendor/asio"]
path = mono.vendor/asio
url = https://github.com/chriskohlhoff/asio.git
branch = master
shallow = true
[submodule "mono.vendor/doxygen-awesome-css"]
path = mono.vendor/doxygen-awesome-css
url = https://github.com/jothepro/doxygen-awesome-css.git
branch = main
; Crypto++ is two submodules, and that is the whole story of this entry.
;
; weidai11/cryptopp ships GNUmakefile and GNUmakefile-cross and no CMakeLists at
; all - not an awkward one, none. That is normally the cue to declare the target
; in MonoVendor.cmake the way asio and imgui are, but those are one INTERFACE
; library and six source files. Crypto++ is 202 translation units whose compile
; flags are chosen per file and per ISA - rijndael_simd.cpp wants -msse4.1
; -maes, gcm_simd.cpp -mssse3 -mpclmul, chacha_avx.cpp -mavx2, with separate
; matrices again for ARMv7 NEON, ARMv8 crypto extensions and POWER8 - and whose
; first three objects must link in the order cryptlib, cpu, integer for static
; initialisation to be correct (GNUmakefile:1187). Upstream picks the flags by
; compiling probe programs from TestPrograms/.
;
; So the build system is vendored rather than reimplemented. Hand-porting it
; would be ~250 lines of our build logic shadowing their makefile, drifting
; silently at the first bump - the same failure mode AGENTS.md forbids for
; source files, for the same reason.
[submodule "mono.vendor/cryptopp"]
path = mono.vendor/cryptopp
url = https://github.com/weidai11/cryptopp.git
branch = master
shallow = true
; The wrapper the Crypto++ wiki points at. BSD-3-Clause, so a second notice.
;
; MonoVendor.cmake points its CRYPTOPP_SOURCES at the sibling submodule above.
; That setting is what stops it running FetchContent against github during
; configure, and dropping it would make a build need the network and stop being
; reproducible - it is the one line in the block that is load-bearing.
;
; The two move together. cryptopp-cmake carries an explicit source list in
; cryptopp/sources.cmake rather than a glob, so a Crypto++ bump that adds or
; renames a .cpp needs the matching cryptopp-cmake commit or the library quietly
; loses a file. Bump both or neither, and re-run the file-list comparison
; recorded in THIRD_PARTY_NOTICES.md.
;
; master on both, because neither publishes a release branch - the same
; situation as glm above, and the superproject pins the SHA regardless.
[submodule "mono.vendor/cryptopp-cmake"]
path = mono.vendor/cryptopp-cmake
url = https://github.com/abdes/cryptopp-cmake.git
branch = master
shallow = true
[submodule "mono.vendor/blake3"]
path = mono.vendor/blake3
url = https://github.com/BLAKE3-team/BLAKE3.git
branch = master
shallow = true
[submodule "mono.vendor/zstd"]
path = mono.vendor/zstd
url = https://github.com/facebook/zstd.git
branch = release
shallow = true
; Luau is vendored ahead of its consumer. Nothing links it until v0.6 runs a
; script; MonoVendor.cmake adds it EXCLUDE_FROM_ALL so it costs a clone and no
; build time until then. `v05.md` open question 3 is what this answers, and it
; is answered early because the bindings manifest generates Luau type
; declarations and those are written against a value model rather than in the
; abstract.
;
; master, because Luau tags releases rather than publishing a release branch -
; the same situation as glm and the cryptopp pair above, and the superproject
; pins the SHA regardless.
;
; **Held at luau-lsp's revision deliberately, and this is the one submodule that
; is not simply "as new as possible".** It is pinned to the same commit as
; `mono.vendor/luau-lsp/luau`, so the language server in an editor and
; `mono.tools/scriptcheck` in `just typecheck` type-check against one Luau and
; cannot disagree about the language.
;
; **What sets the number is luau-lsp, not us.** It is `fd83819b`, one commit
; before the 0.734 tag, which is what luau-lsp `d5df9af` - "Sync to upstream Luau
; 0.733" - pins. `just luau-lsp` asserts the two match rather than trusting this
; comment, and `docs/DEFERRED.md` D00019 carries the reopen trigger: bump both
; the day luau-lsp syncs again.
;
; It was 0.731 from v0.7 to v0.15, held there because 0.732 removed the
; `ConstraintSolver::reportError` overloads luau-lsp called in
; `src/platform/roblox/RobloxLuauExt.cpp`. Upstream did that work, so the ceiling
; that argument describes is gone rather than raised.
[submodule "mono.vendor/luau"]
path = mono.vendor/luau
url = https://github.com/luau-lang/luau.git
branch = master
shallow = true
; The second VM. Luau and JavaScript/TypeScript are two scripting choices over
; one binding surface, so this is vendored alongside Luau rather than instead
; of it.
;
; quickjs-ng rather than Bellard's original repository: the two merged efforts
; after the original went dormant, and ng is where development continues. MIT
; either way, and the licence file still carries Bellard's copyright.
;
; What made it the choice over the other embeddable engines is in
; MonoVendor.cmake, and it is not size - it is that the *host* drives the
; microtask queue, the collector and the interrupt, so a JS script can live
; inside a deterministic tick.
[submodule "mono.vendor/quickjs"]
path = mono.vendor/quickjs
url = https://github.com/quickjs-ng/quickjs.git
branch = master
shallow = true
; luau-lsp is the editor's language server, and it is the one vendor this build
; never compiles. `update = none` is why `just setup` walks past it: setup's
; contract is what a fresh clone needs *before it can configure*, and nothing
; here needs a language server to configure. `just luau-lsp` clones and builds
; it on demand, for whoever wants completion in an editor.
;
; **It brings its own Luau, and that is the reason it is built in a tree of its
; own rather than added to ours.** Its CMakeLists does `add_subdirectory(luau)`
; against a submodule pinned to its own commit, which declares `Luau.Ast`,
; `Luau.Analysis` and `Luau.VM` - the same target names `mono.vendor/luau`
; already gives us. Adding it to this build fails at configure time with "another
; target with the same name already exists", and there is no flag that makes it
; consume an existing Luau.
;
; **The two Luaus are pinned to the same commit**, so the editor and
; `just typecheck` type-check against one language rather than two. That is a
; constraint on `mono.vendor/luau` as much as on this one - see its entry - and
; `just luau-lsp` asserts it instead of trusting either comment.
;
; The revision is luau-lsp's: whatever its nested `luau` pins is what both trees
; build against, because it is the tree that cannot follow upstream freely. That
; was 0.731 for eight versions - 0.732 removed the
; `ConstraintSolver::reportError` overloads it calls in
; `src/platform/roblox/RobloxLuauExt.cpp` - and `d5df9af` is upstream doing that
; work. `docs/DEFERRED.md` D00019 holds the reopen trigger.
;
; Pinned to a commit on `main` rather than to the 1.69.0 tag, because that tag
; carries an older Luau still: matching the engine matters more here than
; matching a release number.
;
; **It is also the one vendor that is patched, and the patch never touches this
; working tree.** `scripts/vendor-tree.sh` archives the commit pinned here into
; `.cache/vendor/luau-lsp` and applies `mono.vendor/patches/luau-lsp/*.patch`
; there; the submodule stays exactly as cloned, so a superproject `git status` is
; clean and a `git submodule update` has nothing to revert. It was applied here
; once, and a permanently modified submodule in every status - one `git commit
; -a` away from a pointer nobody meant to move - is why it is not any more.
; `mono.vendor/AGENTS.md` argues the shape and says why it does not generalise
; to a vendor the engine links.
[submodule "mono.vendor/luau-lsp"]
path = mono.vendor/luau-lsp
url = https://github.com/JohnnyMorganz/luau-lsp.git
branch = main
update = none
; JSON, for the one place this engine speaks it: the control server in
; `mono.studio` answers Model Context Protocol, which is JSON-RPC 2.0 over a
; socket. Nothing else here parses JSON - a `.agame` is XML, a snapshot is
; binary, and the bindings manifest is written with an ostringstream and never
; read back by us.
;
; **Vendored rather than hand-rolled, and that is the unusual call.** This
; repository writes its own Arguments, its own log wrapper and its own save
; format, so a 300-line JSON parser would be in keeping. It is not worth it
; here: JSON's edge cases are string escapes, surrogate pairs and number
; formats, and a parser that is subtly wrong about any of them breaks a
; protocol rather than a feature - silently, at the far end, in a client that
; is not ours.
;
; Header-only, so `MonoVendor.cmake` declares an INTERFACE target the way it
; does for asio. Nothing links it but the studio.
[submodule "mono.vendor/json"]
path = mono.vendor/json
url = https://github.com/nlohmann/json.git
branch = master
shallow = true
; MP3 decoding, for `Engine::audio`. Two headers and no build system.
;
; `master` rather than a release branch because upstream cuts none - there is no
; tag in the repository and the last commit is from 2022. That is a finished
; decoder rather than an abandoned one: MP3 has not changed since 1993. The
; superproject pins the SHA either way, so a clone is still reproducible.
;
; CC0-1.0, which is why this was addable at all - `mono.vendor/AGENTS.md` asks
; for the licence check before the submodule, and a codec is where that question
; usually ends the conversation.
[submodule "mono.vendor/minimp3"]
path = mono.vendor/minimp3
url = https://github.com/lieff/minimp3.git
branch = master
shallow = true
[submodule "mono.vendor/tomlplusplus"]
path = mono.vendor/tomlplusplus
url = https://github.com/marzer/tomlplusplus.git
branch = master
; SPIR-V to MSL, and it is the other half of shaderc rather than a second
; compiler. glslc turns this engine's GLSL into SPIR-V and SDL's Metal backend
; takes MSL or a metallib and never SPIR-V, so without a translator a macOS
; client has nothing to hand `SDL_CreateGPUShader`. `docs/DEFERRED.md` D00001 is
; the argument; what belongs here is why it is a submodule and which branch.
;
; Apache-2.0, checked before the clone as `mono.vendor/AGENTS.md` asks. The same
; licence shaderc and SPIRV-Tools are already under, so it adds a notice row and
; no new obligation.
;
; **A release branch rather than `main`, which is the first pin here that could
; have one.** Khronos cuts `vulkan-sdk-<version>` off main for each SDK release
; and then leaves it alone, so it is a branch in SDL's sense - a line that gets
; fixes and not features. `main` moves with every merged pull request.
;
; **It is needed in two places, and that is why it is a normal submodule rather
; than a build-time-only tool.** `mono.tools/shadercross` translates the built-in
; shaders during the build, and `render::ShaderCompiler` translates
; runtime-authored ones inside the shipped client - a `ShaderScript` does not
; exist at build time, so a build-time-only translator would leave every one of
; them broken on the platform.
;
; It brings no third-party tree of its own: `spirv.hpp` and `GLSL.std.450.h` are
; checked into the repository, so unlike shaderc there is nothing for `just
; setup` to sync afterwards.
[submodule "mono.vendor/spirv-cross"]
path = mono.vendor/spirv-cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
branch = vulkan-sdk-1.4.357
shallow = true
; QUIC. `docs/QUIC.md` is the survey that chose it and `docs/DEFERRED.md`
; D00014 is the argument for wanting it at all; what belongs here is why this
; library and not one of the seven that were considered.
;
; MIT, C, and **nothing under its `lib/` names a TLS stack** - which is the
; property that decides it, because every other candidate hard-wires one. That
; is what lets the crypto stay in `engine::net::quic` over Crypto++, and what
; keeps a fresh clone needing CMake, Ninja and a C++ compiler and nothing else.
; picoquic and quicly require picotls, lsquic requires BoringSSL which requires
; Go, quiche is Rust, mvfst depends on folly, and msquic brings its own event
; loop and a different TLS per platform.
;
; **Every entry point takes an explicit `ngtcp2_tstamp`**, which is the only
; shape compatible with `net`'s standing rule that time is passed in and never
; read. A library that called `clock_gettime` inside would put a
; non-deterministic input in the middle of the subsystem whose failures are
; hardest to reproduce, and `just determinism` and `just replay-check` both
; depend on it not doing that.
;
; Pinned at the `v1.25.0` tag rather than at the head of `main`, for the reason
; SDL is pinned at a release: the version is a number documents quote. Upstream
; cuts no release branch, so `main` is what the tag sits on.
;
; Only `lib/` is built - `MonoVendor.cmake` configures with `ENABLE_LIB_ONLY`,
; so the `crypto/` helpers for OpenSSL, GnuTLS, wolfSSL and picotls are never
; configured and none of their dependencies is looked for.
[submodule "mono.vendor/ngtcp2"]
path = mono.vendor/ngtcp2
url = https://github.com/ngtcp2/ngtcp2.git
branch = main
shallow = true