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