# Built by VCC Plus using its bundled CMOC/6809 tools. No emulator source needed. CMOC ?= cmoc PERL ?= perl WRITECOCOFILE ?= writecocofile INSTALL_LOADER ?= install-coco-boot-loader VCC_CONFIGURATION ?= Release ifeq ($(VCC_CONFIGURATION),Debug) OPTIM = -O2 -fno-omit-frame-pointer else OPTIM = -O2 endif ifeq ($(VCC_CONFIGURATION),Test) CPPFLAGS += -DTEST_SEED=2709 endif CPPFLAGS += -I. CFLAGS = --coco --intermediate --stack-space=2048 $(OPTIM) SOURCES = main.c src/quiz.c src/ui.c src/states.c src/map_data.c OBJECTS = $(SOURCES:%.c=obj/%.o) .PHONY: all build disk clean assets test all: disk build: build/CAPITAL.bin disk: build/CAPITAL.dsk build/CAPITAL.bin: $(OBJECTS) @mkdir -p build "$(CMOC)" --coco --intermediate --org=2000 --limit=7800 -o $@ $(OBJECTS) -lgime -linput -lbcontrol -lhirestxt # Explicit project headers avoid CMOC .d paths to expired VCC build snapshots. obj/%.o: %.c quiz.h ui.h map_data.h Makefile @mkdir -p $(dir $@) "$(CMOC)" $(CPPFLAGS) $(CFLAGS) --intdir=$(dir $@) -c -o $@ $< obj/boot.bin: tools/boot.c Makefile @mkdir -p obj "$(CMOC)" --dos -O0 --limit=2800 -o $@ $< build/CAPITAL.dsk: build/CAPITAL.bin obj/boot.bin $(PERL) -e 'print chr(255) x (35*18*256)' > $@ "$(INSTALL_LOADER)" $@ obj/boot.bin "$(WRITECOCOFILE)" $@ build/CAPITAL.bin assets: python3 tools/prepare_assets.py test: @set -e; quiz_test_dir=$$(mktemp -d "$${TMPDIR:-/tmp}/capital-quiz-host.XXXXXX"); \ trap 'rm -rf "$$quiz_test_dir"' EXIT HUP INT TERM; \ cc -std=c99 -Wall -Wextra -Werror -DHOST_TEST -I. tests/test_quiz.c src/quiz.c src/states.c -o "$$quiz_test_dir/test_quiz"; \ "$$quiz_test_dir/test_quiz" python3 tests/check_assets.py clean: rm -rf obj build