build: examples вне регрессной сборки; эталон размеров пересобран
`make all` собирал и examples/, из-за чего цикл «правка libc -> проверка» упирался в mdview (компилируется минутами) и ничего нового про libc не показывал. Регресс ловит разжирение библиотеки, а для этого хватает мелких tests/ — каждый тянет свой кусок libc и пересобирается за секунды. - `make all` = tools lib tests; examples собираются явно (`make examples`, и как зависимость `make floppy`); - size_check.py смотрит только tests/*. Эталон принят заново. Разбор расхождения, чтобы оно не выглядело необъяснённым: эталон стоял с 30 июля (0280b05), а libc менялась 1 и 3 августа (b56f2b4kbd_raw_poll,1f16e8ffake shift) — _irq_tramp вырос 267 -> 336 Б и не был перебазирован, отсюда +33 Б у всех, кто линкует трамплин (cbl*, irqtest, rt_test), и +22 у gfx_dbuf (gfx_set_idle_hook в libbgi из того же KBD-1). Текущий фикс BUG-KBD-5 вернул 36 Б из этих 69. Заодно выкинуты мёртвые строки эталона (rpgprof/rpgwalk/scroll/space — их давно нет в APPS, mdview/mdview2 — теперь вне регресса). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
# Sprinter C Compiler — top-level Makefile
|
||||
#
|
||||
# make build host tools, libc archive, all tests, all apps
|
||||
# make build host tools, libc archive, all tests
|
||||
# make tools build only host tools (mkexe)
|
||||
# make lib build lib/sprinter.lib (libc) + lib/bgi256.lib (libbgi)
|
||||
# make tests build all libc feature tests under tests/
|
||||
# make examples build all real applications under examples/
|
||||
# make examples build all real applications under examples/ (НЕ входит
|
||||
# в `make all`: это регрессная сборка, а examples/ —
|
||||
# крупные приложения, которые её только замедляют
|
||||
# (mdview компилируется минутами) и ничего нового про
|
||||
# libc не показывают. Собирать явно перед `make floppy`.)
|
||||
# make floppy package every .exe + test fixtures into mame/v306/IMG/mc.img
|
||||
# make check run mkexe unit tests
|
||||
# make clean remove all build artefacts
|
||||
@@ -41,7 +45,7 @@ DATA_FILES := \
|
||||
.PHONY: all tools lib tests examples check clean sdcc floppy \
|
||||
size-check size-baseline host-tests $(TESTS) $(APPS)
|
||||
|
||||
all: tools lib tests examples
|
||||
all: tools lib tests
|
||||
|
||||
tools:
|
||||
$(MAKE) -C toolchain/mkexe
|
||||
|
||||
+7
-13
@@ -4,7 +4,6 @@ argv 3431
|
||||
assrtest 3847
|
||||
atlas 9193
|
||||
attrprob 4087
|
||||
balls 6031
|
||||
banked 1056
|
||||
bankedbg 1067
|
||||
banklocl 4683
|
||||
@@ -15,9 +14,9 @@ bios_text 4461
|
||||
blitperf 5860
|
||||
blitw 4939
|
||||
cat 913
|
||||
cblstream 6431
|
||||
cbltest 6580
|
||||
cblwav 6648
|
||||
cblstream 6464
|
||||
cbltest 6613
|
||||
cblwav 6681
|
||||
conio 4605
|
||||
conio2 3929
|
||||
dec_test 860
|
||||
@@ -27,30 +26,25 @@ fdmax 6023
|
||||
filetest 10547
|
||||
fpsdiv 4870
|
||||
gets 509
|
||||
gfx_dbuf 5112
|
||||
gfx_dbuf 5134
|
||||
gfx_demo 4117
|
||||
gfxbanks 6044
|
||||
hello 4167
|
||||
hello2 4244
|
||||
irqtest 6647
|
||||
irqtest 6680
|
||||
kbdpoll 1219
|
||||
kbdraw 4911
|
||||
ls 4835
|
||||
malloc 4461
|
||||
mdview 18878
|
||||
mdview2 27031
|
||||
mem_test 4555
|
||||
mouse 4382
|
||||
openenv 6124
|
||||
palfile 5406
|
||||
ptime 5744
|
||||
rpgprof 12082
|
||||
rpgwalk 10309
|
||||
rt_test 5154
|
||||
scroll 2974
|
||||
rt_test 5187
|
||||
seek 4188
|
||||
simple 955
|
||||
solidt 11531
|
||||
space 11272
|
||||
spranim 9431
|
||||
spriteclip 4119
|
||||
sprites 6791
|
||||
|
||||
|
+13
-8
@@ -1,17 +1,23 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
size_check.py — размерный регресс-тест: сравнение _CODE всех тестов и
|
||||
приложений с эталоном docs/size_baseline.tsv.
|
||||
size_check.py — размерный регресс-тест: сравнение _CODE тестов с эталоном
|
||||
docs/size_baseline.tsv.
|
||||
|
||||
Использование:
|
||||
python3 toolchain/size_check.py # сверка с эталоном
|
||||
python3 toolchain/size_check.py --update # перезаписать эталон
|
||||
|
||||
Логика: собираем _CODE из .map каждой программы (tests/*, examples/*),
|
||||
сравниваем с эталоном. Любое отличие печатается; выход 1 — если есть
|
||||
РОСТ (случайное разжирение libc), 0 — если только уменьшения/без
|
||||
изменений. Новые программы (нет в эталоне) — предупреждение, добавить
|
||||
через --update. Запускать после `make all`.
|
||||
Логика: собираем _CODE из .map каждой программы под tests/, сравниваем с
|
||||
эталоном. Любое отличие печатается; выход 1 — если есть РОСТ (случайное
|
||||
разжирение libc), 0 — если только уменьшения/без изменений. Новые
|
||||
программы (нет в эталоне) — предупреждение, добавить через --update.
|
||||
Запускать после `make all`.
|
||||
|
||||
ТОЛЬКО tests/, без examples/: регресс ловит разжирение libc, а для этого
|
||||
хватает мелких тестов — каждый тянет свой кусок библиотеки и пересобирается
|
||||
за секунды. Крупные приложения (examples/mdview компилируется минутами)
|
||||
не показывают ничего сверх этого и лишь удлиняют цикл, поэтому и из
|
||||
`make all` они убраны (см. корневой Makefile).
|
||||
"""
|
||||
|
||||
import glob
|
||||
@@ -28,7 +34,6 @@ def collect():
|
||||
sizes = {}
|
||||
pats = [
|
||||
os.path.join(ROOT, "tests", "*", ".sprinter-cc-*", "*.map"),
|
||||
os.path.join(ROOT, "examples", "*", ".sprinter-cc-*", "*.map"),
|
||||
]
|
||||
for pat in pats:
|
||||
for map_path in glob.glob(pat):
|
||||
|
||||
Reference in New Issue
Block a user