cleanup: drop Godot-era build trees, m2dev net/pack layers and stale docs
- Untrack build-debug/ and build-asan/ (CMake trees committed by mistake in
c9389431) and ignore them.
- Remove extension/src/net and extension/src/pack (m2dev protocol and XChaCha
pack format, superseded by the ported 40250 code), their 18 unregistered tests
and the net/pack tools, the MT_BUILD_NET_TOOLS probe, and the libsodium and zstd
submodules they alone used.
- The fake login server's classic cipher, sequence table and wire layouts move to
extension/tests/classic/ (still used by port.login_flow, port.packet and the
native client's offline mode).
- Archive Godot/m2dev-era plans under docs/archive/; THIRD-PARTY.md updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
82503315c6
commit
f970f95800
+10
-47
@@ -1,56 +1,19 @@
|
||||
# Third-party native dependencies
|
||||
|
||||
The GDExtension links five native libraries that are **not** part of Godot or
|
||||
godot-cpp. Phase 1 (macOS) pulled the first three from Homebrew; that stops
|
||||
working the moment we cross-compile for the Android NDK or the iOS SDK (BACKLOG
|
||||
F1/F2), so as of 2026-08-30 they are built from source as part of our own CMake
|
||||
build. Crypto++ joined later (2026-09-02) with the `MT_PROTOCOL=classic` 40250
|
||||
backend and was vendored the same way from the start.
|
||||
|
||||
CPython joined on 2026-09-23 with 批次 2P (the embedded 40250 script layer) and is
|
||||
vendored source as well. FreeType joined the same day with 批次 2V0-g (the 40250
|
||||
font path over an emulated GDI).
|
||||
|
||||
Everything lives under `extension/third_party/` and is wired by
|
||||
`extension/third_party/CMakeLists.txt`, which exposes five aliases:
|
||||
The native client links four vendored libraries, all built from source by our own
|
||||
CMake build (the Android NDK and iOS SDK sysroots have none of them). They live under
|
||||
`extension/third_party/` and are wired by `extension/third_party/CMakeLists.txt`.
|
||||
libsodium and zstd (the m2dev-era net/pack layers) were removed on 2026-09-29 together
|
||||
with those layers.
|
||||
|
||||
| Alias | Backing target | Consumed by |
|
||||
|-------------------|------------------|------------------------------------|
|
||||
| `mt3p::sodium` | `sodium` | `mtnet`, `mtpack`, `mtproto` |
|
||||
| `mt3p::zstd` | `libzstd_static` | `mtpack` |
|
||||
| `mt3p::minilzo` | `minilzo` | `mtproto` |
|
||||
| `mt3p::cryptopp` | `cryptopp` | `mtnet` (classic backend) |
|
||||
| `mt3p::python` | `mtpython` | the script layer (`py_embed_test`) |
|
||||
| `mt3p::minilzo` | `minilzo` | `port_logic` (EterBase/lzo, proto) |
|
||||
| `mt3p::cryptopp` | `cryptopp` | `port_logic` (EterBase/cipher) |
|
||||
| `mt3p::python` | `mtpython` | the embedded 40250 script layer |
|
||||
| `mt3p::freetype` | `freetype` | `port_platform` (`platform/Win32Gdi.cpp`) |
|
||||
|
||||
No source file changed: `#include <sodium.h>`, `#include <zstd.h>`,
|
||||
`#include <lzo/lzo1x.h>` and `#include <cryptopp/…>` all still resolve (the LZO
|
||||
one via a 1-line shim header, see below).
|
||||
|
||||
## libsodium — via `robinlinden/libsodium-cmake`
|
||||
|
||||
* **Submodule:** `extension/third_party/libsodium-cmake` @ `9b2848d`
|
||||
* itself carries `jedisct1/libsodium` @ `93a7d0d` (libsodium 1.0.20 line) as a
|
||||
**nested** submodule — clones need `--recursive`.
|
||||
* **Why the wrapper:** upstream libsodium is autotools-only. This MIT-licensed
|
||||
wrapper is a pure CMakeLists over an untouched libsodium checkout; it generates
|
||||
`version.h`, sets `CONFIGURED`, and builds clean for macOS / iOS / Android /
|
||||
Windows. Used by many mobile projects.
|
||||
* **Build options we force:** `SODIUM_DISABLE_TESTS=ON`, `SODIUM_MINIMAL=OFF`
|
||||
(we need `crypto_kx`, `crypto_auth`, `crypto_aead_xchacha20poly1305`,
|
||||
`crypto_stream_xchacha20`, `crypto_generichash`/BLAKE2b — all outside the
|
||||
"minimal" set).
|
||||
* **License:** ISC (libsodium) + MIT (wrapper). Ship-safe.
|
||||
|
||||
## libzstd — `facebook/zstd`
|
||||
|
||||
* **Submodule:** `extension/third_party/zstd` @ tag **v1.5.6** (`794ea1b0`).
|
||||
* Built through upstream `build/cmake` with:
|
||||
`ZSTD_BUILD_PROGRAMS/SHARED/TESTS/CONTRIB=OFF`, `ZSTD_BUILD_STATIC=ON`,
|
||||
`ZSTD_LEGACY_SUPPORT=OFF`, `ZSTD_MULTITHREAD_SUPPORT=OFF` (the eterpack path
|
||||
only does single-shot `ZSTD_compress`/`ZSTD_decompress`).
|
||||
* Target consumed: `libzstd_static` (carries its own public include dir).
|
||||
* **License:** BSD-3-Clause / GPLv2 dual. Ship-safe under BSD.
|
||||
`#include <lzo/lzo1x.h>` resolves via a 1-line shim header, see below.
|
||||
|
||||
## miniLZO — vendored source (not a submodule)
|
||||
|
||||
@@ -60,7 +23,7 @@ one via a 1-line shim header, see below).
|
||||
* Upstream LZO has no git repo (oberhumer.com tarball only), and miniLZO is a
|
||||
4-file amalgamation, so it is copied in rather than submoduled.
|
||||
* **Shim:** `minilzo/lzo/lzo1x.h` is a 1-line `#include "../minilzo.h"` so
|
||||
`extension/src/proto/proto.cpp` keeps `#include <lzo/lzo1x.h>` unchanged.
|
||||
the ported `EterBase/lzo.h` keeps `#include <lzo/lzo1x.h>` unchanged.
|
||||
miniLZO's API (`lzo_init`, `lzo1x_decompress_safe`, `LZO_E_OK`, `lzo_uint`) is a
|
||||
strict subset of full LZO and covers everything the CLZO path uses.
|
||||
* **License:** **GPLv2**. Acceptable for this internal, non-published,
|
||||
|
||||
Reference in New Issue
Block a user