# TODO: enforce c99 # eventually add -Wextra # Personal makefile notes: # '$@' gets replaced with the target name # '$^' gets replaced with the target's dependencies (to right of target name) # For more, check out https://youtu.be/G5dNorAoeCM # Note: I understand this makefile is not as optimal as it could/should be CC = gcc CFLAGS ?= -Wall -Wpedantic -Wextra -std=c99 DEBUG = -g -ggdb ROM = rom.bin TRACE_SUFFIX = TARGET = hard all: $(TARGET) debug: CFLAGS += $(DEBUG) debug: $(TARGET) trace: CFLAGS += $(DEBUG) -DTRACE -lreadline trace: TRACE_SUFFIX = -trace trace: $(TARGET) disass: CFLAGS += -DTRACE -lreadline disass: bin/disass.o bin/vm.o bin/emcalls.o $(CC) $(CFLAGS) -o bin/$@ $^ bin/%.o: src/%.c $(CC) $(CFLAGS) -o $@ -c $^ bin/emcalls.o: bin/vm.o: bin/main.o: bin/disass.o: # needs to be run separately rom: rom.bin xxd -i src/$^ > src/$@.h rom.bin: src/rom.asm src/zeropage.incbin ./ass.sh src/rom.asm src/zeropage.incbin $(TARGET): bin/main.o bin/vm.o bin/emcalls.o $(CC) $(CFLAGS) -o bin/$@$(TRACE_SUFFIX) $^ clean: rm -f bin/* cleano: rm -f bin/*.o .PHONY: all debug trace clean cleano