Подготовить автономную сборку и запуск перед разделением проектов
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
# app.mk — shared Makefile fragment for any standalone Sprinter ESTEX
|
||||
# program — used both by libc feature tests under tests/ and by real
|
||||
# applications under examples/.
|
||||
# program. Приложение может лежать вне репозитория тулкита.
|
||||
#
|
||||
# Usage in a per-program Makefile:
|
||||
#
|
||||
# PROJ_ROOT := $(abspath $(CURDIR)/../..)
|
||||
# SPRINTER_ROOT := /путь/к/C-Compiler
|
||||
# EXAMPLE := my_program # base name (matches my_program.c)
|
||||
#
|
||||
# # Optional overrides (any combination):
|
||||
@@ -28,24 +27,43 @@
|
||||
# all build $(EXAMPLE).exe (default)
|
||||
# clean remove build artefacts
|
||||
# floppy build the example and pack it (alone, plus EXTRA_DATA) into
|
||||
# mame/v306/IMG/mc.img — useful for trying a single program
|
||||
# without rebuilding every example. Top-level `make floppy`
|
||||
# (in the repo root) still packs all examples.
|
||||
# build/media/$(EXAMPLE).img внутри приложения.
|
||||
# run floppy + launch MAME
|
||||
|
||||
ifeq ($(strip $(PROJ_ROOT)$(SPRINTER_ROOT)),)
|
||||
$(error Задайте SPRINTER_ROOT — путь к установленному Sprinter-CC)
|
||||
endif
|
||||
ifeq ($(strip $(PROJ_ROOT)),)
|
||||
PROJ_ROOT := $(SPRINTER_ROOT)
|
||||
endif
|
||||
ifeq ($(strip $(SPRINTER_ROOT)),)
|
||||
SPRINTER_ROOT := $(PROJ_ROOT)
|
||||
endif
|
||||
|
||||
PYTHON ?= python3
|
||||
SPRINTER_CC := $(PROJ_ROOT)/bin/sprinter-cc
|
||||
MKEXE := $(PROJ_ROOT)/toolchain/mkexe/mkexe
|
||||
LIB := $(PROJ_ROOT)/lib/sprinter.lib
|
||||
|
||||
MAME_DIR := $(PROJ_ROOT)/mame/v306
|
||||
FLOPPY_IMG := $(MAME_DIR)/IMG/mc.img
|
||||
# ?= — приложение со своим каталогом выхода (applications/SprPoP) держит
|
||||
# образ у себя и связывает его с MAME символьной ссылкой.
|
||||
HDD_IMG ?= $(MAME_DIR)/IMG/test_hdd.chd
|
||||
MAKE_DISK := $(MAME_DIR)/make_disk.py
|
||||
# Временный fallback для старого общего дерева. После переноса нет MAME
|
||||
# внутри SDK, поэтому внешний проект задаёт MAME_HOME или отдельные пути.
|
||||
MAME_HOME ?= $(if $(wildcard $(PROJ_ROOT)/mame/v306/mame.arm),$(PROJ_ROOT)/mame/v306,)
|
||||
MAME_BIN ?= $(if $(strip $(MAME_HOME)),$(MAME_HOME)/mame.arm,)
|
||||
MAME_ROMPATH ?= $(if $(strip $(MAME_HOME)),$(MAME_HOME)/roms,)
|
||||
MAME_DSS_IMAGE ?= $(if $(strip $(MAME_HOME)),$(MAME_HOME)/IMG/dss171u.img,)
|
||||
MAME_SYSTEM_HDD_IMAGE ?= $(if $(strip $(MAME_HOME)),$(MAME_HOME)/IMG/sp_hdd_sys.chd,)
|
||||
MAME_BIOS ?= v3.06
|
||||
FLOPPY_IMG ?= $(CURDIR)/build/media/$(EXAMPLE).img
|
||||
HDD_IMG ?= $(CURDIR)/build/hdd/$(EXAMPLE).chd
|
||||
MAKE_DISK := $(PROJ_ROOT)/toolchain/make_disk.py
|
||||
MAKE_HDD ?= $(PROJ_ROOT)/toolchain/make_hdd.sh
|
||||
RUN_MAME := $(MAME_DIR)/run_mame.sh
|
||||
RUN_MAME := $(PROJ_ROOT)/toolchain/run_sprinter_mame.py
|
||||
CHDMAN_BIN ?= chdman
|
||||
MAME_PROFILE_ARGS = --mame-home "$(MAME_HOME)" --mame-bin "$(MAME_BIN)" \
|
||||
--mame-rompath "$(MAME_ROMPATH)" \
|
||||
--mame-dss-image "$(MAME_DSS_IMAGE)" \
|
||||
--mame-system-hdd-image "$(MAME_SYSTEM_HDD_IMAGE)" \
|
||||
--mame-bios "$(MAME_BIOS)"
|
||||
|
||||
# Optional knobs — see top of file.
|
||||
MEMORY ?= tiny
|
||||
@@ -141,26 +159,26 @@ $(LIB):
|
||||
clean:
|
||||
rm -rf $(if $(strip $(BUILD_DIR)),$(BUILD_DIR),.sprinter-cc-* $(EXE))
|
||||
|
||||
# `make floppy` packs ONLY this program (+ optional EXTRA_DATA files) into
|
||||
# the MAME floppy image, replacing whatever was there. Handy for trying a
|
||||
# single program without rebuilding everything.
|
||||
# `make floppy` создаёт носитель только этого приложения, без записи в MAME.
|
||||
floppy: $(EXE)
|
||||
python3 $(MAKE_DISK) $(FLOPPY_IMG) $(EXE) $(EXTRA_DATA)
|
||||
$(PYTHON) $(MAKE_DISK) "$(FLOPPY_IMG)" $(EXE) $(EXTRA_DATA)
|
||||
@echo
|
||||
@echo "Floppy ready: $(FLOPPY_IMG) (with $(EXAMPLE).exe$(if $(EXTRA_DATA), + $(EXTRA_DATA))) "
|
||||
@echo "Run: cd $(MAME_DIR) && ./run_mame.sh"
|
||||
@echo "Run: make run MAME_HOME=/путь/к/MAME/runtime"
|
||||
|
||||
run: floppy
|
||||
cd $(MAME_DIR) && ./run_mame.sh
|
||||
$(PYTHON) $(RUN_MAME) $(MAME_PROFILE_ARGS) --floppy "$(FLOPPY_IMG)"
|
||||
|
||||
# `make hdd` packs this program (+ optional EXTRA_DATA files) into the MAME
|
||||
# HDD image mounted as disk D: (-hard2 test_hdd.chd). Гораздо быстрее FDD —
|
||||
# используется MCP-мостом к MAME (run_bridge.sh). После пересборки образа
|
||||
# MAME ОБЯЗАН полный рестарт (chdman -f = новый inode; см. memory).
|
||||
# `make hdd` кладёт носитель в build/ приложения. Для нового inode после
|
||||
# пересборки образа запущенный MAME должен быть перезапущен.
|
||||
hdd: $(EXE)
|
||||
$(MAKE_HDD) $(if $(strip $(HDD_DEST_DIR)),--dest "$(HDD_DEST_DIR)") $(HDD_IMG) $(HDD_PACK_ARGS)
|
||||
mkdir -p "$(dir $(HDD_IMG))"
|
||||
CHDMAN_BIN="$(CHDMAN_BIN)" $(MAKE_HDD) $(if $(strip $(HDD_DEST_DIR)),--dest "$(HDD_DEST_DIR)") "$(HDD_IMG)" $(HDD_PACK_ARGS)
|
||||
@echo
|
||||
@echo "HDD (D:) ready: $(HDD_IMG) (with $(EXAMPLE).exe$(if $(EXTRA_DATA), + $(EXTRA_DATA)))"
|
||||
@echo "ВНИМАНИЕ: перезапусти MAME (run_bridge.sh) — образ пересобран."
|
||||
@echo "ВНИМАНИЕ: перезапусти MAME — образ пересобран."
|
||||
|
||||
.PHONY: all clean floppy run hdd
|
||||
run-hdd: hdd
|
||||
$(PYTHON) $(RUN_MAME) $(MAME_PROFILE_ARGS) --hdd "$(HDD_IMG)"
|
||||
|
||||
.PHONY: all clean floppy run hdd run-hdd
|
||||
|
||||
Reference in New Issue
Block a user