Подготовить автономную сборку и запуск перед разделением проектов

This commit is contained in:
Александр Петров
2026-09-15 23:04:04 +03:00
parent 5323b168a7
commit 0e74aaa7ee
116 changed files with 6908 additions and 333 deletions
+4
View File
@@ -62,6 +62,10 @@ build/
# ---------------------------------------------------------------------------
# ОС / редакторы / локальные настройки
# ---------------------------------------------------------------------------
local.mk
.resource-stamps/
__pycache__/
*.py[cod]
.DS_Store
._*
*~
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Sprinter C Compiler contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+10 -13
View File
@@ -22,14 +22,20 @@
# Основные цели:
# make собрать sprpop.exe и разложить build/
# make hdd + образ build/hdd/sprpop.chd
# make mame-link однократно связать образ с MAME (см. ниже)
# make run-hdd запустить MAME с локальным образом игры
# make resources перегенерировать ресурсы из assets/orig/
# make music-mp3 музыка из другого набора записей (flac|mp3|ogg|mt32)
# make clean снести build/ (ассеты не трогает)
# make distclean clean + снести упакованные ассеты assets/packed/
SPRINTER_ROOT ?= $(abspath $(CURDIR)/../..)
-include $(CURDIR)/local.mk
SPRINTER_ROOT ?= $(if $(wildcard $(CURDIR)/../../bin/sprinter-cc),$(abspath $(CURDIR)/../..),)
ifeq ($(strip $(SPRINTER_ROOT)),)
$(error Задайте SPRINTER_ROOT или создайте SprPoP/local.mk)
endif
PROJ_ROOT := $(SPRINTER_ROOT)
export SPRINTER_ROOT MAME_HOME MAME_BIN MAME_ROMPATH MAME_DSS_IMAGE
export MAME_SYSTEM_HDD_IMAGE MAME_BIOS CHDMAN_BIN
EXAMPLE := sprpop
SRC_DIR := src
BUILD_DIR := build
@@ -259,8 +265,7 @@ HDD_PACK_ARGS := $(BUILD_DIR)/$(EXAMPLE).exe \
# Всё дерево SprPoP лежит рядом с EXE, но не меняет дефолт глобального
# упаковщика: остальные приложения по-прежнему попадают в корень HDD.
HDD_DEST_DIR := games/sprpop
# Образ живёт в build/, а не в mame/v306/IMG — приложение автономно. Связь с
# MAME — одна символьная ссылка, ставится однократно: make mame-link.
# Образ живёт в build/; run-hdd передаёт его MAME напрямую как hard2.
HDD_IMG := $(CURDIR)/$(BUILD_DIR)/hdd/$(EXAMPLE).chd
include $(PROJ_ROOT)/app.mk
@@ -560,14 +565,6 @@ hdd: stage | $(BUILD_DIR)/hdd
$(BUILD_DIR)/hdd:
@mkdir -p $@
# Однократная связка с MAME: run_bridge.sh жёстко открывает IMG/test_hdd.chd,
# поэтому подсовываем ему символьную ссылку на наш образ. chdman переписывает
# сам файл, ссылка остаётся живой — но MAME после пересборки образа ОБЯЗАН
# полный рестарт (новый inode).
mame-link: hdd
ln -sf $(HDD_IMG) $(PROJ_ROOT)/mame/v306/IMG/test_hdd.chd
@echo "MAME: IMG/test_hdd.chd -> $(HDD_IMG)"
# Музыка из конкретного набора записей. Каждая цель пересобирает музыку и
# сразу раскладывает её в build/, чтобы `make hdd` взял уже новую.
# make music-mp3 собрать музыку из mp3
@@ -624,4 +621,4 @@ distclean: clean
.PHONY: stage check-orig resources resources-rebuild resources-bg resources-kid \
resources-actors resources-sound resources-music resources-font \
resources-title resources-pv resources-levels $(MUSIC_TARGETS) \
$(FETCH_TARGETS) test-tools relink distclean mame-link
$(FETCH_TARGETS) test-tools relink distclean run-hdd
+3 -2
View File
@@ -8,9 +8,10 @@
сборка лежат внутри этой папки. Наружу нужен только компилятор:
```sh
export SPRINTER_ROOT=/путь/к/C-Compiler # не нужен, если папка лежит внутри его дерева
export SPRINTER_ROOT=/путь/к/C-Compiler
make # build/sprpop.exe + ресурсы в build/
make hdd # + образ build/hdd/sprpop.chd
make run-hdd MAME_HOME=/путь/к/MAME/runtime # запуск с локальным CHD
```
Чужих данных в репозитории нет — есть адреса, откуда их взять. Чтобы
@@ -39,7 +40,7 @@ build/ выход: sprpop.exe, каталоги ресурсов, hdd/,
|---|---|
| `make` | собрать `build/sprpop.exe` и разложить ресурсы в `build/` |
| `make hdd` | + образ жёсткого диска `build/hdd/sprpop.chd` |
| `make mame-link` | однократно подставить образ в MAME (символьная ссылка на `IMG/test_hdd.chd`) |
| `make run-hdd` | передать локальный CHD в MAME как `-hard2` без изменения установки эмулятора |
| `make fetch` | скачать внешние исходные данные в `assets/orig/`: `fetch-sdlpop`, `fetch-music`, `fetch-check`, `fetch-list` |
| `make resources` | перегенерировать ресурсы из `assets/orig/` |
| `make music-mp3` | музыка из другого набора записей: `music-flac` (умолчание), `music-mp3`, `music-ogg`, `music-mt32` |
+5 -1
View File
@@ -2,7 +2,11 @@
# здесь — только сами наборы и список модулей, которые в них линкуются.
# Наружу тесты знают тот же единственный путь, что и само приложение, —
# корень тулчейна (см. ../../Makefile). Всё остальное считается от него.
SPRINTER_ROOT ?= $(abspath $(CURDIR)/../../../..)
-include $(CURDIR)/../../local.mk
SPRINTER_ROOT ?= $(if $(wildcard $(CURDIR)/../../../../bin/sprinter-cc),$(abspath $(CURDIR)/../../../..),)
ifeq ($(strip $(SPRINTER_ROOT)),)
$(error Задайте SPRINTER_ROOT для host-тестов SprPoP)
endif
TESTKIT := $(SPRINTER_ROOT)/testkit
APP_DIR := $(abspath $(CURDIR)/../..)
ENGINE_DIR := $(APP_DIR)/src