docs: 文档审计——修正失效链接与过期结论
按 docs/ 目录逐篇核对,只改与事实/路径不符的部分,不动尚未验证的计划条目: - `docs/steps/**` 在早前整理时已迁到 `docs/reference/steps/**`,全仓的旧路径 引用(PLAN.md / README.md / M0-gr2-reader.md 及 libgr2 的头注释)一并改正。 - CLIENT-GAP.md / CLIENT-GAP-FIX.md / BACKLOG.md / MIDREVIEW.md:把已经落地的 条目从「待办」改为已完成,删掉与代码现状矛盾的描述。 - ANDROID-TESTING.md / CLIENT-PORT.md / CLIENT-ROADMAP.md / GODOT-POC-PLAN.md / SHINSOO-WORLD-RENDERING.md / PARITY-GAP.md:同上,另补当前实际的构建/测试入口。 - THIRD-PARTY.md:补齐实际在用的第三方来源与许可说明。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJugvEJwz3FK4hw9ti3SRb
This commit is contained in:
+45
-15
@@ -1,22 +1,25 @@
|
||||
# Third-party native dependencies
|
||||
|
||||
The GDExtension links three native libraries that are **not** part of Godot or
|
||||
godot-cpp. Phase 1 (macOS) pulled them 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 all three are built from source as part of our own CMake build.
|
||||
The GDExtension links four 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.
|
||||
|
||||
Everything lives under `extension/third_party/` and is wired by
|
||||
`extension/third_party/CMakeLists.txt`, which exposes three aliases:
|
||||
`extension/third_party/CMakeLists.txt`, which exposes four aliases:
|
||||
|
||||
| Alias | Backing target | Consumed by |
|
||||
|-----------------|------------------|------------------------|
|
||||
| `mt3p::sodium` | `sodium` | `mtnet`, `mtpack`, `mtproto` |
|
||||
| `mt3p::zstd` | `libzstd_static` | `mtpack` |
|
||||
| `mt3p::minilzo` | `minilzo` | `mtproto` |
|
||||
| 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) |
|
||||
|
||||
No source file changed: `#include <sodium.h>`, `#include <zstd.h>` and
|
||||
`#include <lzo/lzo1x.h>` all still resolve (the last via a 1-line shim header,
|
||||
see below).
|
||||
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`
|
||||
|
||||
@@ -60,11 +63,38 @@ see below).
|
||||
or commercial use. (item_proto/mob_proto are the only LZO consumers; a
|
||||
clean-room LZO1X decompressor is the eventual fix.)
|
||||
|
||||
## Crypto++ — vendored source (not a submodule)
|
||||
|
||||
* **Files:** `extension/third_party/cryptopp/` (~6.6 MB), copied from the 40250
|
||||
client tree (`ClientVS22/extern/include/cryptopp`), `CRYPTOPP_VERSION 840` =
|
||||
**8.4.0**. The 40250 server links this exact version
|
||||
(`Server/.../extern/cryptopp_8_4_0.tar.gz`), so the version is pinned by
|
||||
wire compatibility, not preference.
|
||||
* **Why:** the `MT_PROTOCOL=classic` backend's `_IMPROVED_PACKET_ENCRYPTION_`
|
||||
cipher — DH2 key agreement + hint-selected block ciphers (Twofish default) in
|
||||
CTR mode. Only consumer is `extension/src/net/classic/classic_cipher.{h,cpp}`.
|
||||
The m2dev backend does not use it (that one is libsodium/XChaCha20).
|
||||
* **No upstream CMakeLists**, so `cryptopp/CMakeLists.txt` is ours: it globs the
|
||||
library TUs and drops the cryptest / benchmark / adhoc / FIPS-selftest ones
|
||||
(`adhoc`, `bench1..3`, `datatest`, `dlltest`, `fipsalgt`, `fipstest`, `pch`,
|
||||
`regtest1..4`, `test`, `validat0..10`).
|
||||
* **ASM disabled everywhere** (`CRYPTOPP_DISABLE_ASM` / `_SSSE3` / `_AESNI`) so
|
||||
one pure-C++ build works on macOS, the Android NDK and the iOS SDK; the classic
|
||||
cipher needs no AES-NI / SHA-ext. Android additionally compiles the NDK's
|
||||
`sources/android/cpufeatures/cpu-features.c` in, because upstream `cpu.cpp`
|
||||
includes `cpu-features.h` unconditionally under `__ANDROID__`.
|
||||
* Built with `-w` (upstream is not warning-clean under `-Wall`) and
|
||||
`-fno-strict-aliasing`.
|
||||
* **License:** **public domain** — the compilation carries Wei Dai's copyright,
|
||||
but every individual file is placed in the public domain by its authors
|
||||
(`extension/third_party/cryptopp/License.txt`). Ship-safe; unlike miniLZO it
|
||||
imposes no obligation before a public or commercial release.
|
||||
|
||||
## Rebuilding / fetching
|
||||
|
||||
`./build.sh` auto-runs `git submodule update --init --recursive` if any of the
|
||||
three (godot-cpp, zstd, libsodium-cmake+libsodium) is missing. miniLZO needs no
|
||||
fetch.
|
||||
three submodules (godot-cpp, zstd, libsodium-cmake+libsodium) is missing.
|
||||
miniLZO and Crypto++ are vendored source and need no fetch.
|
||||
|
||||
Homebrew `libsodium` / `zstd` / `lzo` are no longer referenced by the build and
|
||||
can be uninstalled.
|
||||
|
||||
Reference in New Issue
Block a user