Files
Sprinter-SDCC/examples/mdview2/Makefile
T
snark13 46553f4e07 mdview2: фоновая сборка второго набора кодировки в паузах между клавишами; версия v1.0 (b3)
- индексатор порезан на резюмируемые шаги index_begin/index_step/index_finish;
  межшаговое состояние в статиках модуля, в docset_t не входит
- bg_build_start/bg_step: второй набор (UTF-8 при 8-битном первичном и
  наоборот) строится в idle главного цикла; холдаун после клавиш, спиннер
  погашен (g_bg_building) — фон незаметен
- F8 до готовности докручивает начатое фоном (ветка resume в build_doc),
  а не строит заново; общий setup вынесен в doc_setup
- кодировка в статус-баре показывается сразу (детект/F8), не дожидаясь
  конца индексации
- побочный фикс: UTF-конвертация впереди проверки останова — >4КБ абзац
  больше не обрывает конвертацию остатка
- README.md (новый, v1.0 b3), CHANGELOG.md; дискета: README/DEMO/CHANGES
  в трёх кодировках (пути автодетекта)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:33:34 +03:00

58 lines
2.9 KiB
Makefile

# Build mdview2.exe — Markdown viewer for Sprinter (render-cache version).
#
# Фаза 0: скаффолдинг — копия mdview.c как baseline, без изменений
# логики. План — docs/mdview2-plan.md.
#
# small memory mode: code in W1, data/stack/heap in W2 (32 KB total).
# W3 stays free for the file buffer (EMM-mapped).
PROJ_ROOT := $(abspath $(CURDIR)/../..)
EXAMPLE := mdview2
EXTRA_SRCS := mdview2_raw.c mdview2_hex.c mdview2_help.c mdview2_table.c mdview2_enc.c mdview2_md.c mdview2_status.c mdview2_index.c
MEMORY := small
# --max-allocs 100000: агрессивнее аллокация регистров SDCC — минус ~850 байт
# кода на всём приложении (замер 2026-07-04) ценой более долгой компиляции.
EXTRA_FLAGS := --max-allocs 100000
include $(PROJ_ROOT)/app.mk
# ------------------------------------------------------------------
# Образ дискеты: mdview2.exe + документация. Каждый документ — в СВОЕЙ
# кодировке, чтобы дискета заодно покрывала все пути автодетекта:
# README.MD — документация, ОРИГИНАЛЬНЫЙ UTF-8 (как в репозитории);
# CHANGES.MD — история версий, CP866 (хранится так, кладётся как есть;
# имя укорочено: "CHANGELOG" не влезает в FAT 8.3);
# DEMO.MD — демонстрация разметки, конвертируется UTF-8 → CP1251.
#
# iconv -c возвращает ненулевой код, если хоть один символ отброшен
# (даже с -c) — это ОЖИДАЕМО при потере символов без аналога в целевой
# кодировке, не ошибка конвертации; вывод при этом корректно записан.
# Поэтому код возврата iconv игнорируется (|| true).
#
# Тестовые файлы лимита 256 КБ лежат в testfiles/ (генератор gen_testfiles.py);
# на диск НЕ кладутся — при необходимости добавить вручную в список ниже.
# ------------------------------------------------------------------
DISK_TMP := .disk_tmp
DEMO_DISK := $(DISK_TMP)/DEMO.MD
CHLOG_DISK := $(DISK_TMP)/CHANGES.MD
$(DISK_TMP):
mkdir -p $@
$(CHLOG_DISK): CHANGELOG.md | $(DISK_TMP)
cp CHANGELOG.md $@
$(DEMO_DISK): DEMO.MD | $(DISK_TMP)
iconv -c -f UTF-8 -t CP1251 DEMO.MD > $@ || true
floppy: $(EXAMPLE).exe $(DEMO_DISK) $(CHLOG_DISK)
python3 $(MAKE_DISK) $(FLOPPY_IMG) $(EXAMPLE).exe README.md $(DEMO_DISK) $(CHLOG_DISK)
@echo
@echo "Floppy ready: $(FLOPPY_IMG)"
@echo "Run: cd $(MAME_DIR) && ./run_mame.sh"
clean:
rm -rf .sprinter-cc-* $(EXAMPLE).exe $(DISK_TMP)
.PHONY: all clean floppy run