сборка: гигиена (П5) — stale .rel, все тесты в make all, размерный регресс

- lib/Makefile: stale .rel удаляются сверкой списка модулей перед
  упаковкой; штамп build/.modules триггерит перелинковку при любом
  изменении состава исходников (при смене списка архив сносится —
  на exFAT гранулярность mtime грубая, сравнение времён ненадёжно)
- top-level TESTS: все каталоги tests/ теперь собираются make all
  (43 программы; banktest переименован из banked.exe — конфликт имён
  с tests/banked); mdview2 добавлен в APPS
- размерный регресс: toolchain/size_check.py сверяет _CODE всех
  программ с docs/size_baseline.tsv; make size-check / size-baseline
- заголовки: контракт затенения SDCC задокументирован в
  docs/libc-headers.md; новый string.h (include_next + strlwr/strupr);
  из sprinter_compat.h убраны макросы min/max — конфликтовали с
  функциями из stdlib.h, и в Solid-C min/max тоже функции

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 16:50:39 +03:00
parent 60373930fb
commit a4c8c79428
10 changed files with 273 additions and 32 deletions
+5 -9
View File
@@ -71,9 +71,7 @@ typedef struct fpoint {
/* movmem(src, dst, n) → memcpy(dst, src, n) — arg order swapped */
#define movmem(s, d, n) memcpy((d), (s), (n))
/* In-place case conversion. */
char *strlwr(char *s);
char *strupr(char *s);
/* strlwr/strupr объявлены в нашем <string.h> (include_next-цепочка). */
/* Solid-C calls perror's table 'strerr'. */
#define strerr(n) strerror((n))
@@ -81,12 +79,10 @@ char *strupr(char *s);
/* ---- stdlib.h additions ------------------------------------------ */
#define abort() _exit(0xFF)
#ifndef min
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
#ifndef max
#define max(a, b) ((a) > (b) ? (a) : (b))
#endif
/* min/max — ФУНКЦИИ из <stdlib.h> (libc/stdlib/min.c, max.c), как и в
* Solid-C (STDLIB.H: `int min();`). Макро-версии здесь были удалены
* 2026-07-06: макрос дважды вычисляет аргументы и ломает объявление
* функции, встреченное после себя. */
/* div() and div_t come from SDCC's <stdlib.h> (already included above). */