Sprinter: добавить отладку C-исходников и интеграцию VS Code
This commit is contained in:
@@ -12,6 +12,8 @@
|
||||
# # STACK_SIZE := 2048 # bytes reserved for the stack
|
||||
# # EXTRA_SRCS := helper.c util.c # additional .c files in this dir
|
||||
# # EXTRA_FLAGS := --crt0=minimal # passed through to sprinter-cc
|
||||
# # SRC_DEBUG := 1 # карта C/asm и проверенный debug-пакет
|
||||
# # SRC_DEBUG_FILES := helper.c # либо карта только выбранных TU
|
||||
# # EXTRA_DATA := test.txt # extra files to add to `make floppy`
|
||||
# # HDD_DEST_DIR := games/myapp # общий каталог файлов в `make hdd`
|
||||
#
|
||||
@@ -31,6 +33,7 @@
|
||||
# (in the repo root) still packs all examples.
|
||||
# run floppy + launch MAME
|
||||
|
||||
PYTHON ?= python3
|
||||
SPRINTER_CC := $(PROJ_ROOT)/bin/sprinter-cc
|
||||
MKEXE := $(PROJ_ROOT)/toolchain/mkexe/mkexe
|
||||
LIB := $(PROJ_ROOT)/lib/sprinter.lib
|
||||
@@ -77,6 +80,12 @@ ifneq ($(STACK_SIZE),)
|
||||
CC_FLAGS += --stack-size $(STACK_SIZE)
|
||||
endif
|
||||
CC_FLAGS += $(EXTRA_FLAGS)
|
||||
ifeq ($(SRC_DEBUG),1)
|
||||
CC_FLAGS += --src-debug
|
||||
endif
|
||||
ifneq ($(strip $(SRC_DEBUG_FILES)),)
|
||||
CC_FLAGS += $(foreach src,$(SRC_DEBUG_FILES),--src-debug-file $(src))
|
||||
endif
|
||||
|
||||
all: $(EXE)
|
||||
|
||||
@@ -99,12 +108,24 @@ BANK_CHECK := $(PROJ_ROOT)/toolchain/check_bank_calls.py
|
||||
# предупреждение: страницы в W0 кладут не все. Разбор — в шапке скрипта.
|
||||
W0ISR_CHECK := $(PROJ_ROOT)/toolchain/check_w0_isr.py
|
||||
|
||||
$(EXE): $(SOURCES) $(MKEXE) $(LIB) $(RUNTIME_DEPS)
|
||||
$(if $(strip $(BUILD_DIR)),@mkdir -p $(dir $@))
|
||||
$(SPRINTER_CC) $(CC_FLAGS) -o $@ $(SOURCES)
|
||||
@d=$(dir $@).sprinter-cc-$(EXAMPLE); \
|
||||
if ls $$d/bank*_*.asm >/dev/null 2>&1; then python3 $(BANK_CHECK) $$d; fi; \
|
||||
if ls $$d/*.map >/dev/null 2>&1; then python3 $(W0ISR_CHECK) $$d; fi
|
||||
# Команда/зависимости карты участвуют в пересборке, включая смену режима.
|
||||
SDBG_CONFIG := $(dir $(EXE)).resource-stamps/$(EXAMPLE)-config.json
|
||||
SDBG_MANIFEST := $(dir $(EXE)).sprinter-cc-$(EXAMPLE)/manifest.json
|
||||
.PHONY: sdbg-config-force
|
||||
SDBG_CONFIG_ARGS = $(SDBG_CONFIG) $(SPRINTER_CC) $(CC_FLAGS) $(SOURCES) $(SDBG_MANIFEST)
|
||||
|
||||
# Проверка содержимого обязательна: mtime make может иметь точность в секунду.
|
||||
# Сохранение fingerprint только после успешной сборки позволяет повторить сбой.
|
||||
$(EXE): $(SOURCES) $(MKEXE) $(LIB) $(RUNTIME_DEPS) sdbg-config-force $(SPRINTER_CC) $(wildcard $(PROJ_ROOT)/toolchain/sdbg/*.py) $(wildcard $(PROJ_ROOT)/toolchain/sdbg_*.py)
|
||||
@state=$$($(PYTHON) $(PROJ_ROOT)/toolchain/sdbg_config.py check $(SDBG_CONFIG_ARGS)) || exit $$?; \
|
||||
if [ "$$state" = changed ] || [ -n "$(filter-out sdbg-config-force,$?)" ]; then \
|
||||
mkdir -p $(dir $@); \
|
||||
SPRINTER_PYTHON="$(PYTHON)" $(SPRINTER_CC) $(CC_FLAGS) -o $@ $(SOURCES) || exit $$?; \
|
||||
d=$(dir $@).sprinter-cc-$(EXAMPLE); \
|
||||
if ls $$d/bank*_*.asm >/dev/null 2>&1; then $(PYTHON) $(BANK_CHECK) $$d || exit $$?; fi; \
|
||||
if ls $$d/*.map >/dev/null 2>&1; then $(PYTHON) $(W0ISR_CHECK) $$d || exit $$?; fi; \
|
||||
$(PYTHON) $(PROJ_ROOT)/toolchain/sdbg_config.py save $(SDBG_CONFIG_ARGS); \
|
||||
fi
|
||||
|
||||
$(MKEXE):
|
||||
$(MAKE) -C $(PROJ_ROOT)/toolchain/mkexe
|
||||
|
||||
Reference in New Issue
Block a user