Подготовить автономную сборку и запуск перед разделением проектов
This commit is contained in:
@@ -62,6 +62,10 @@ build/
|
||||
# ---------------------------------------------------------------------------
|
||||
# ОС / редакторы / локальные настройки
|
||||
# ---------------------------------------------------------------------------
|
||||
local.mk
|
||||
.resource-stamps/
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.DS_Store
|
||||
._*
|
||||
*~
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
@@ -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` |
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user