# VGA char-buffer status display for DE1-SoC Linux.
# Writes directly to vga_display_0 BRAM via /dev/mem; no framebuffer DMA needed.
#
# On the board (or with SoC cross toolchain):
#   make CROSS_COMPILE=arm-linux-gnueabihf-
# Host syntax check (no /dev/mem):
#   make check

CFLAGS ?= -Wall -O2 -std=c11 -D_POSIX_C_SOURCE=200809L -D_FILE_OFFSET_BITS=64
LDLIBS ?= -lrt
CC     ?= $(CROSS_COMPILE)gcc

VGA_WRITER  = vga_writer
ITCH_LOAD   = itch_load
ITCH_ARM    = itch_arm

.PHONY: all clean check

all: $(VGA_WRITER) $(ITCH_LOAD) $(ITCH_ARM)

$(VGA_WRITER): vga_writer.c
	$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)

$(ITCH_LOAD): itch_load.c
	$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)

$(ITCH_ARM): itch_arm.c
	$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)

# Quick compile on dev machine (no /dev/mem access)
check:
	$(CC) $(CFLAGS) -DORDERBOOK_MOCK -c vga_writer.c -o /tmp/vga_writer.o
	$(CC) $(CFLAGS) -c itch_arm.c -o /tmp/itch_arm.o
	$(CC) $(CFLAGS) -c itch_load.c -o /tmp/itch_load.o
	@rm -f /tmp/vga_writer.o /tmp/itch_arm.o /tmp/itch_load.o
	@echo "vga_writer.c + itch_arm.c + itch_load.c OK"

clean:
	rm -f $(VGA_WRITER) $(ITCH_LOAD) $(ITCH_ARM) *.o
