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

PITREX_DIR := ../pitrex/pitrex/
VECTREX_DIR := ../pitrex/vectrex/
CFLAGS := -Ofast -I../pitrex/ -DPIZERO -DRPI0 -DFILESYSTEM
CC := gcc

.PHONY: pitrexLib
.PHONY: dirCheck

all:	vecx

pitrexLib:
	$(MAKE) -C $(PITREX_DIR) -f Makefile.raspbian all
	$(MAKE) -C $(VECTREX_DIR) -f Makefile.raspbian all

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

$(BUILD_DIR)main.o: main.c e6809.h e8910.h e6522.h edac.h vecx.h ser.h
	$(CC) $(CFLAGS) -o $(BUILD_DIR)main.o -c main.c

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

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

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

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

$(BUILD_DIR)vecx.o: vecx.c vecx.h e6809.h e6522.h e8910.h edac.h bios.i
	$(CC) $(CFLAGS) -o $(BUILD_DIR)vecx.o -c vecx.c

vecx: pitrexLib dirCheck \
	$(BUILD_DIR)e6809.o \
	$(BUILD_DIR)main.o \
	$(BUILD_DIR)e6522.o \
	$(BUILD_DIR)e8910.o \
	$(BUILD_DIR)edac.o \
	$(BUILD_DIR)vecx.o
	$(RM) vecx
	$(CC) $(CFLAGS) -o vecx \
	$(PITREX_DIR)$(BUILD_DIR)bcm2835.o \
	$(PITREX_DIR)$(BUILD_DIR)pitrexio-gpio.o \
	$(VECTREX_DIR)$(BUILD_DIR)vectrexInterface.o \
	$(VECTREX_DIR)$(BUILD_DIR)osWrapper.o \
	$(VECTREX_DIR)$(BUILD_DIR)baremetalUtil.o \
	$(BUILD_DIR)main.o \
	$(BUILD_DIR)e6522.o \
	$(BUILD_DIR)e8910.o \
	$(BUILD_DIR)edac.o \
	$(BUILD_DIR)e6809.o \
	$(BUILD_DIR)vecx.o

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

install:
	mkdir -p /opt/pitrex/roms/vectrex
	cp bios.bin /opt/pitrex/roms/vectrex
	install -o root -g games -m 6555 vecx /opt/pitrex/bin/vecxemul
