57 lines
1.1 KiB
Makefile
57 lines
1.1 KiB
Makefile
# 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
|
|
|