Commit 1813835
committed
fix(bench): make the cmake arm actually compile, and stop handing bench a shim
**1. cmake + clang 建不了任何真实工程 —— 因为 `set()` 的顺序。**
`CMAKE_CXX_EXTENSIONS OFF` 写在 `project()` **之后**。CMake 为 std 模块合成的
那个目标是在 `project()` 里的编译器探测阶段建出来的,它捕获的是**那一刻**的
`CMAKE_CXX_EXTENSIONS` —— 默认 ON。于是 std.pcm 按 `gnu++23` 编,而所有真实目标
按 `c++23` 编,clang 拒绝加载:
error: GNU extensions was enabled in precompiled file 'std.pcm'
but is currently disabled
`import std;` 什么都没提供,构建在 19 处死于 `use of undeclared identifier 'std'`
—— 报错指着 mcpp 的源码,既不提 std.pcm 也不提 extensions。**同一个文件里紧挨着
的注释已经为实验性 key 写下了「必须在 project() 之前」,方言设置漏了同一条规矩。**
mcpp 与 xlings 两份描述都有,都已修。本地实测:改前 19 个错误 build 失败,
改后 `1 ok, 0 failed`,整棵 137 模块的树用 cmake+clang 编通。
**2. `$MCPP` 不是二进制,是 shim —— 上一次「按路径指定」的修复没有走出 shim。**
`$MCPP` = `<xlings home>/subos/default/bin/mcpp`,是一个**指向 `xlings` 的符号
链接**,按 argv[0] 分发并**依据被调用时的工作目录**重新决定 exec 哪个 mcpp。而
bench 刻意让每个引擎在**被测树里**跑,那些树各自带 `.xlings.json`。于是:
mcpp@2026.8.11.2 | [error] unknown command: build
上一版把裸 `mcpp` 换成 `$MCPP`,只是把解析提前了一步,**没有离开 shim** ——
症状从 `version not found` 变成 `unknown command`,缺陷没动。现在从 xlings 的
`data/runtimedir/mcpp-<ver>-<os>-<arch>/` 里解析出真正的 ELF,并且**断言它自己
报出的版本号等于 pin**(靠目录名叫这个版本是不够的)。解析不到就只跑单臂并
`::warning::`,不再拿一个会失败的引擎充数。
本地直接复现过:同一个目录下 shim 报 2026.8.11.2,解析出的二进制报 2026.8.11.3。
**3. xlings 的 lua_stdlib 生成器静默 return。** 包不在就跳过生成,构建随后死于
`missing mcpplibs.xpkg.lua_stdlib dependency`,指着消费者。与今天早些时候
mcpplibs.cmdline 那个是同一个形状,改成 raise。1 parent bbd9c21 commit 1813835
4 files changed
Lines changed: 84 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 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 | + | |
246 | 270 | | |
247 | 271 | | |
248 | 272 | | |
| |||
387 | 411 | | |
388 | 412 | | |
389 | 413 | | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
394 | 422 | | |
395 | | - | |
396 | | - | |
| 423 | + | |
397 | 424 | | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
402 | 436 | | |
403 | 437 | | |
404 | 438 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
34 | 50 | | |
35 | 51 | | |
36 | 52 | | |
| 53 | + | |
| 54 | + | |
37 | 55 | | |
38 | 56 | | |
39 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
47 | | - | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
48 | 53 | | |
49 | 54 | | |
50 | 55 | | |
| 56 | + | |
| 57 | + | |
51 | 58 | | |
52 | 59 | | |
53 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
149 | 159 | | |
150 | 160 | | |
151 | 161 | | |
| |||
0 commit comments