aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile34
1 files changed, 34 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..23551ad
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,34 @@
+# gbos - Game Boy Color Unix-flavored microkernel (scaffold)
+# Toolchain: RGBDS (rgbasm/rgblink/rgbfix)
+
+ROM := gbos.gb
+BUILD := build
+SRCS := $(wildcard src/*.asm)
+OBJS := $(patsubst src/%.asm,$(BUILD)/%.o,$(SRCS))
+
+ASFLAGS := -I include -Wall
+# MBC5 + RAM + battery; -r 3 = 32 KiB cart RAM (bump for more task banks)
+FIXFLAGS := -v -m MBC5+RAM+BATTERY -r 3 -p 0xFF -t GBOS
+
+.PHONY: all clean run
+
+all: $(ROM)
+
+$(BUILD)/%.o: src/%.asm | $(BUILD)
+ rgbasm $(ASFLAGS) -o $@ $<
+
+$(ROM): $(OBJS)
+ rgblink -m $(BUILD)/gbos.map -n $(BUILD)/gbos.sym -o $@ $(OBJS)
+ rgbfix $(FIXFLAGS) $@
+
+$(BUILD):
+ mkdir -p $(BUILD)
+
+clean:
+ rm -rf $(BUILD) $(ROM)
+
+# convenience: run in an emulator if one is on PATH
+run: $(ROM)
+ @which sameboy >/dev/null 2>&1 && sameboy $(ROM) || \
+ which bgb >/dev/null 2>&1 && bgb $(ROM) || \
+ echo "no emulator found (sameboy/bgb)"