include ../mk/build.mk

CLOCK_SPEED	= 16000000L

INCLUDE_PATH	= ../include
HEADER_SUBDIR	= tabby
CROSS		= avr-

CC		= $(CROSS)gcc
CFLAGS		= $(CGFLAGS) -Wall -Os -mmcu=atmega2560 -I$(INCLUDE_PATH) \
		  -DF_CPU=$(CLOCK_SPEED) -DUSE_2X
LDFLAGS		=

OBJCOPY		= $(CROSS)objcopy
OBJCOPY_FLAGS	= -S

AVRDUDE		= avrdude
AVRDUDE_DEVICE	= /dev/cu.usbmodem1411
AVRDUDE_FLAGS	= -c wiring -p atmega2560 -b 115200 -D -P $(AVRDUDE_DEVICE)

HEADERS_LOCAL	=
HEADERS_BUILD	= $(HEADERS_LOCAL) \
		  $(addprefix $(INCLUDE_PATH)/$(HEADER_SUBDIR)/,$(HEADERS))

HEADERS		= avr.h avr/uart.h link.h
OBJS		= send.o recv.o uart.o

RECV_NAME	= recv
RECV_BIN	= $(RECV_NAME).bin
RECV_ELF	= $(RECV_NAME).elf
RECV_OBJS	= recv.o uart.o

SEND_NAME	= send
SEND_BIN	= $(SEND_NAME).bin
SEND_ELF	= $(SEND_NAME).elf
SEND_OBJS	= send.o uart.o

IMAGES_BIN	= $(RECV_BIN) $(SEND_BIN)
IMAGES_ELF	= $(RECV_ELF) $(SEND_ELF)

RM		= /bin/rm

all: $(IMAGES_BIN)

$(IMAGES_BIN): %.bin: %.elf
	$(OBJCOPY) $(OBJCOPY_FLAGS) -O binary $< $@

$(SEND_ELF): $(SEND_OBJS)
	$(CC) $(CFLAGS) $(SEND_OBJS) -o $@

$(RECV_ELF): $(RECV_OBJS)
	$(CC) $(CFLAGS) $(RECV_OBJS) -o $@

$(OBJS): %.o: %.c $(HEADERS_BUILD)
	$(CC) $(CFLAGS) -c $<

flash-send: $(SEND_BIN)
	$(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(SEND_BIN):r

flash-recv: $(RECV_BIN)
	$(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(RECV_BIN):r

clean:
	$(RM) -f $(IMAGES_BIN) $(IMAGES_ELF) $(OBJS)