# -DLOADER_START=0x4000000
# must also be defined/changed in *.S files, since they do not parse defines
# REMEMBER in bcm2835
# MEM_COHERENT_REGION s defined now as 0x3f00000 !!!!

BUILD_DIR_PURE := build.baremetal
BUILD_DIR := $(BUILD_DIR_PURE)/

LIB_DIR :=../pitrex/baremetal
INC_DIR_PITREX := ../pitrex
INC_DIR_LIBRARY := $(LIB_DIR)/lib2835

CFLAGS := -Ofast -I$(INC_DIR_PITREX) -I$(INC_DIR_LIBRARY) -L$(LIB_DIR) -mfloat-abi=hard -nostartfiles -mfpu=vfp -march=armv6zk -mtune=arm1176jzf-s -DRPI0 -DFREESTANDING -DPITREX_DEBUG -DMHZ1000 -DLOADER_START=0x4000000
CC	= arm-none-eabi-gcc
AS	= $(CC)
LD	= arm-none-eabi-ld
AR	= arm-none-eabi-ar

.PHONY: dirCheck

all: dirCheck $(BUILD_DIR)dis6502.o $(BUILD_DIR)display.o $(BUILD_DIR)game.o $(BUILD_DIR)mathbox.o $(BUILD_DIR)memory.o $(BUILD_DIR)pokey.o $(BUILD_DIR)vx_interface.o $(BUILD_DIR)debugger.o

dirCheck:
	if [ ! -d $(BUILD_DIR_PURE) ]; then mkdir $(BUILD_DIR_PURE); fi

$(BUILD_DIR)dis6502.o: dis6502.c dis6502.h memory.h
	$(CC) $(CFLAGS) -c dis6502.c -o $(BUILD_DIR)dis6502.o

$(BUILD_DIR)display.o: display.c display.h memory.h
	$(CC) $(CFLAGS) -c display.c -o $(BUILD_DIR)display.o

$(BUILD_DIR)game.o: game.c game.h memory.h display.h sim6502.h macro6502.h
	$(CC) $(CFLAGS) -c game.c -o $(BUILD_DIR)game.o

$(BUILD_DIR)mathbox.o: mathbox.c mathbox.h
	$(CC) $(CFLAGS) -c mathbox.c -o $(BUILD_DIR)mathbox.o

$(BUILD_DIR)debugger.o: debugger.c debugger.h display.h game.h sim6502.h mathbox.h pokey.h memory.c memory.h dis6502.h
	$(CC) $(CFLAGS) -c debugger.c -o $(BUILD_DIR)debugger.o

$(BUILD_DIR)memory.o: memory.c memory.h display.h game.h sim6502.h mathbox.h pokey.h
	$(CC) $(CFLAGS) -c memory.c -o $(BUILD_DIR)memory.o

$(BUILD_DIR)pokey.o: pokey.c pokey.h memory.h
	$(CC) $(CFLAGS) -c pokey.c -o $(BUILD_DIR)pokey.o

$(BUILD_DIR)vx_interface.o: vx_interface.c game.h memory.h display.h
	$(CC) $(CFLAGS) -c vx_interface.c -o $(BUILD_DIR)vx_interface.o

clean:
	$(RM) $(BUILD_DIR)*.*