LAUNCH_BOOTLOADER = launch-bootloader
SERIAL = /dev/ttyUSB0

OUT = image
MCU_TARGET = atmega32
MCU_CC = avr-gcc
OPTIMIZE = -Os
WARNINGS = -Wall
DEFS = -DF_CPU=16000000
CFLAGS = -MMD -g -mmcu=$(MCU_TARGET) $(OPTIMIZE) $(WARNINGS) $(DEFS)
ASFLAGS = -g $(DEFS)
LDFLAGS = -Wl,-Map,$(OUT).map

OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump

OBJ = borg16-display.o

all: $(OUT).hex $(OUT).lst

%.o: %.c
	$(MCU_CC) $(CFLAGS) -c $<

%.o: %.S
	$(MCU_CC) -mmcu=$(MCU_TARGET) $(ASFLAGS) -c $<

$(OUT).elf: $(OBJ)
	$(MCU_CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)

%.hex: %.elf
	$(OBJCOPY) -j .text -j .data -O ihex $< $@

%.lst: %.elf
	$(OBJDUMP) -h -S $< > $@

sflash: $(OUT).hex
	$(LAUNCH_BOOTLOADER) $(SERIAL) 115200
	avrdude -p m32 -b 115200 -u -c avr109 -P $(SERIAL) -U f:w:$< -F
	echo X > $(SERIAL)

# vim: set ts=4 noet :
