1
0
mirror of https://github.com/rkujawa/rk65c02.git synced 2026-03-11 03:16:11 +00:00
Files
rk65c02/examples/msbasic/Makefile

62 lines
2.0 KiB
Makefile

# MS BASIC example: host + BASIC ROM + I/O stub.
# Requires: ca65, ld65; git submodule msbasic/; patches applied.
# From repo root: make -C examples/msbasic, or from examples/: make msbasic
UNAME_S := $(shell uname -s)
CFLAGS = -Wall -pedantic -I../../src -g -MMD -MP
LDFLAGS = -lgc $(if $(NO_LIGHTNING),,-llightning)
LDFLAGS_MACOSX = -L/opt/local/lib
CFLAGS_MACOSX = -I/opt/local/include
ifeq ($(UNAME_S),Darwin)
CFLAGS += $(CFLAGS_MACOSX)
LDFLAGS += $(LDFLAGS_MACOSX)
endif
RK65C02LIB = ../../src/librk65c02.a
CA65 = ca65
LD65 = ld65
MSBASIC_S = msbasic/msbasic.s
PATCHES = patches/defines.s.patch patches/extra.s.patch patches/iscntc.s.patch patches/loadsave.s.patch patches/init.s.patch patches/print.s.patch
PATCHED_MARK = msbasic/.rk65c02-patched
.PHONY: all clean patch
HOST_BIN = run_msbasic
all: $(HOST_BIN) basic.bin iostub.bin basic.lbl
$(HOST_BIN): msbasic_host.o $(RK65C02LIB) basic.bin iostub.bin basic.lbl
$(CC) -o $@ $(LDFLAGS) msbasic_host.o $(RK65C02LIB)
basic.bin basic.map basic.lbl: msbasic.o rk65c02.cfg $(PATCHED_MARK)
$(LD65) -C rk65c02.cfg msbasic.o -o basic.bin -m basic.map -Ln basic.lbl
msbasic.o: $(MSBASIC_S) rk65c02.cfg defines_rk65c02.s rk65c02_extra.s rk65c02_iscntc.s rk65c02_loadsave.s $(PATCHED_MARK)
$(CA65) -D rk65c02 -I. $(MSBASIC_S) -o msbasic.o
iostub.bin: rk65c02_io.o iostub.cfg
$(LD65) -C iostub.cfg rk65c02_io.o -o iostub.bin
rk65c02_io.o: rk65c02_io.s
$(CA65) rk65c02_io.s -o rk65c02_io.o
$(PATCHED_MARK): msbasic/msbasic.s $(PATCHES) patches/init.s.hunk4.patch
@for p in $(PATCHES); do \
(cd msbasic && patch -p1 --forward < "../$$p") || true; \
done
@(cd msbasic && patch -p1 --forward < ../patches/init.s.hunk4.patch) || true
@touch $(PATCHED_MARK)
patch: $(PATCHED_MARK)
msbasic_host.o: msbasic_host.c
$(CC) $(CFLAGS) -c -o $@ msbasic_host.c
clean:
rm -f msbasic.o rk65c02_io.o msbasic_host.o msbasic_host.d
rm -f basic.bin basic.map basic.lbl iostub.bin
rm -f $(HOST_BIN)
rm -f $(PATCHED_MARK)
-include msbasic_host.d