Commit 3d3e2dc
committed
feat(build): 汇编源一等公民 — .S/.s/.asm 进 sources,NASM 按目标推导 -f
设计: .agents/docs/2026-07-17-asm-sources-and-general-build-capabilities-design.md (PR-A)
- .S/.s (GAS) 走 C 驱动的新 asm_object 规则(asm 安全旗标子集,无 -std/-O,
PIC/调试/工具链定位旗标保留);.asm (NASM) 走 nasm_object 规则,-f 由
Triple::nasm_format() 从目标三元组推导(elf64/win64/macho64/...,交叉零特判),
%include 经 -MD/-MQ 进 ninja deps 通道
- 默认 sources glob 扩为 src/**/*.{cppm,cpp,cc,c,S,s,asm};汇编对象名带全扩展
限定(foo.asm.o),同 stem 的 .c/.asm 兄弟不再撞对象
- 扩展名路由四处同改并单测锁住:scanner 跳模块扫描、plan 链接收集
(is_implementation_source)、ninja pick_rule、cdb(.asm 不进
compile_commands,clangd 读不懂;.S 以 cc + asm 旗标进)
- nasm 惰性解析(仅当计划含 .asm 单元):PATH → mcpp 沙箱 → xlings install,
版本 floor ≥2.16,不可得即硬失败,绝不静默跳过;非 x86 目标遇 .asm、
MSVC 工具链遇 .S 均硬报错并给出门控指引
- G8a: 源 glob 跟随目录软链接(递归栈祖先链防环 + 文件级 canonical 去重);
顺带修 path_matches_glob 用 fs::relative 会解析软链致匹配失效的问题
(改词法 lexically_relative)
- e2e 104(GAS 全链路+增量+build/test 双路径)/105(NASM/-f 推导/%include
依赖追踪/CDB 排除),run_all.sh 增 nasm capability;单测 35/35 过,
e2e 106 过(3 失败均为既有环境性:22/54/62)1 parent 450c24b commit 3d3e2dc
19 files changed
Lines changed: 1125 additions & 38 deletions
File tree
- .agents/docs
- docs
- zh
- src
- build
- manifest
- modgraph
- toolchain
- tests
- e2e
- unit
Lines changed: 397 additions & 0 deletions
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | | - | |
| 137 | + | |
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
191 | 203 | | |
192 | 204 | | |
193 | 205 | | |
| |||
718 | 730 | | |
719 | 731 | | |
720 | 732 | | |
721 | | - | |
| 733 | + | |
722 | 734 | | |
723 | 735 | | |
724 | 736 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
| 132 | + | |
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| |||
635 | 635 | | |
636 | 636 | | |
637 | 637 | | |
638 | | - | |
| 638 | + | |
639 | 639 | | |
640 | 640 | | |
641 | 641 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
127 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
128 | 135 | | |
129 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
130 | 139 | | |
131 | 140 | | |
132 | 141 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
319 | 321 | | |
320 | 322 | | |
321 | 323 | | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
322 | 348 | | |
323 | 349 | | |
324 | 350 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
151 | 151 | | |
152 | 152 | | |
153 | 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 | + | |
154 | 183 | | |
155 | 184 | | |
156 | 185 | | |
| |||
275 | 304 | | |
276 | 305 | | |
277 | 306 | | |
278 | | - | |
| 307 | + | |
279 | 308 | | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
284 | 312 | | |
285 | 313 | | |
286 | 314 | | |
287 | 315 | | |
288 | | - | |
| 316 | + | |
289 | 317 | | |
| 318 | + | |
| 319 | + | |
290 | 320 | | |
291 | 321 | | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
292 | 330 | | |
293 | 331 | | |
294 | 332 | | |
| |||
406 | 444 | | |
407 | 445 | | |
408 | 446 | | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
409 | 469 | | |
410 | 470 | | |
411 | 471 | | |
| |||
533 | 593 | | |
534 | 594 | | |
535 | 595 | | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
536 | 600 | | |
537 | 601 | | |
538 | 602 | | |
| |||
549 | 613 | | |
550 | 614 | | |
551 | 615 | | |
552 | | - | |
| 616 | + | |
553 | 617 | | |
554 | 618 | | |
555 | 619 | | |
| |||
580 | 644 | | |
581 | 645 | | |
582 | 646 | | |
583 | | - | |
| 647 | + | |
584 | 648 | | |
585 | 649 | | |
586 | 650 | | |
| |||
618 | 682 | | |
619 | 683 | | |
620 | 684 | | |
621 | | - | |
| 685 | + | |
622 | 686 | | |
623 | 687 | | |
624 | 688 | | |
| |||
637 | 701 | | |
638 | 702 | | |
639 | 703 | | |
640 | | - | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
641 | 708 | | |
642 | 709 | | |
643 | 710 | | |
| |||
653 | 720 | | |
654 | 721 | | |
655 | 722 | | |
656 | | - | |
657 | | - | |
| 723 | + | |
| 724 | + | |
658 | 725 | | |
659 | 726 | | |
660 | 727 | | |
| |||
684 | 751 | | |
685 | 752 | | |
686 | 753 | | |
687 | | - | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
688 | 758 | | |
689 | 759 | | |
690 | 760 | | |
| |||
0 commit comments