audit(2A): include-dependency tool, 2V0-2V3 slice unit lists and batch-2 order
port_deps.py resolves explicit #include edges plus the implicit edges each 40250 library's StdAfx.h supplies (symbol index restricted to StdAfx-visible headers), writes cumulative slice lists and the P0 topological order. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+7
-1
@@ -101,7 +101,9 @@ extension/third_party/cpython-2.7.18/ # 静态库(2P 批次
|
||||
1. `extension/src/port/common/`:`Win32Types.h`(`BYTE`/`WORD`/`DWORD`/`LONG`/`BOOL`/`UINT` 等标量的定宽映射;
|
||||
`HANDLE`/窗口句柄/消息参数另用指针宽度的平台类型)、
|
||||
40250 用到的 Win32/CRT 宏和函数(`ZeroMemory`、`_snprintf`、`stricmp`、`timeGetTime` 等)的最小实现、
|
||||
`StdAfx.h` 等价物。
|
||||
`StdAfx.h` 等价物。GameLib 的逻辑头直接使用 D3DX 数学类型(`TPixelPosition` 就是 `D3DXVECTOR3`),所以还要一个
|
||||
与平台无关的 D3DX 数学层(`D3DXVECTOR2/3/4`、`D3DXMATRIX`、`D3DXQUATERNION`、`D3DXCOLOR` 及逻辑层用到的 `D3DX*` 函数),
|
||||
按 D3DX8 的 float 语义实现。
|
||||
2. 参考公共头的最小闭包:从第一批要移植的单元出发(`PythonPlayerEventHandler.h` 依赖 `ActorInstance.h`、`FlyHandler.h`、
|
||||
`PythonNetworkStream.h`、`InstanceBase.h`),用脚本列出 `#include` 闭包,把闭包里的头文件先照抄为可编译的声明。
|
||||
3. `port_logic` 静态库 CMake 目标,链接进 `libmtgodot`;macOS、Android、iOS、Linux、Windows 五个平台分别编译。
|
||||
@@ -112,6 +114,10 @@ extension/third_party/cpython-2.7.18/ # 静态库(2P 批次
|
||||
6. port-map 重新基线(见第 6 节)。
|
||||
7. 用 `#include` 依赖图生成批次 2 的移植顺序(拓扑序),替换原来"互不共享实现文件即可并行"的假设:共享头文件的单元,
|
||||
头文件由先做的那个单元负责,后面的单元只能在它合入后开始。
|
||||
**已完成**:`port_deps.py`(显式 `#include` + 按符号解析的 StdAfx 隐式依赖)生成 `audit/slices/2V0–2V3.json`
|
||||
和 `audit/slices/batch2-order.json`。结论:每个切片的头文件闭包约 210 个(其中平台层约 110 个,来自
|
||||
`ThingInstance.h`/`GrpBase.h` 等);P0 单元里 `InstanceBase`、`PythonCharacterManager`、`PythonPlayer`、
|
||||
`PythonPlayerEventHandler` 的头文件互相包含,必须作为一组串行移植,`ActorInstance.cpp` 排在最前。
|
||||
|
||||
### 批次 2R:资源包能力盘点
|
||||
|
||||
|
||||
Reference in New Issue
Block a user