# Vixy BBB PRU Firmware Makefile

PRU_CGT ?= /usr/share/ti/cgt-pru
PRU_SUPPORT ?= /usr/lib/ti/pru-software-support-package

CC = clpru
LD = lnkpru

CFLAGS = --include_path=$(PRU_CGT)/include \
         --include_path=$(PRU_SUPPORT)/include \
         --include_path=$(PRU_SUPPORT)/include/am335x \
         -v3 -O2 --printf_support=minimal --display_error_number \
         --endian=little --hardware_mac=on

LDFLAGS = -i$(PRU_CGT)/lib -i$(PRU_SUPPORT)/lib \
          --reread_libs --warn_sections \
          --stack_size=0x100 --heap_size=0x100

# Build combined firmware (recommended - handles both strips from PRU0)
all: am335x-pru0-fw

# Combined firmware for both strips on PRU0
am335x-pru0-fw: ws281x_combined.obj AM335x_PRU.cmd
	$(LD) $(LDFLAGS) -o $@ $^ -m $@.map --library=libc.a

# Legacy separate firmwares (for reference)
am335x-pru0-fw-mood: ws281x_pru0.obj AM335x_PRU.cmd
	$(LD) $(LDFLAGS) -o $@ $^ -m $@.map --library=libc.a

am335x-pru1-fw-jaw: ws281x_pru1.obj AM335x_PRU.cmd
	$(LD) $(LDFLAGS) -o $@ $^ -m $@.map --library=libc.a

%.obj: %.c
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -f *.obj *.map am335x-pru*-fw

install: am335x-pru0-fw
	sudo cp am335x-pru0-fw /lib/firmware/

.PHONY: all clean install
