
CC = avr-gcc
CFLAGS = -O2 -mmcu=atmega32u4
ASMFLAGS = -mmcu=atmega32u4

OBJCOPY = avr-objcopy
OBJFLAGS = -j .text -j .data -O ihex

DUDE = avrdude
COM = COM5
DUDEFLAGS = -p atmega32u4 -c avr109 -P $(COM)

dude:
	$(DUDE) $(DUDEFLAGS)

clean:
	$(RM) *.hex
	$(RM) *.o
	$(RM) *.elf
    
%.flash: %.hex
	$(DUDE) $(DUDEFLAGS) -U flash:w:$*.hex

%.hex: %.elf
	$(OBJCOPY) $(OBJFLAGS) $< $@
	
generator.elf: generator.o gen_asm.o
	$(CC) $(CFLAGS) $^ -o $@

%.elf: %.o
	$(CC) $(CFLAGS) $< -o $@
	
%.o: %.c	
	$(CC) $(CFLAGS) -c $< -o $@
	
%.o: %.S	
	$(CC) $(ASMFLAGS) -c $< -o $@    
