CFLAGS = -Os -Wall --std=c11 -g
CHIP = atmega328p
SOURCE_FILES = $(wildcard *.c)
OBJ_FILES = $(SOURCE_FILES:%.c=%.o)
BIN = input.bin
HEX = input.hex
ASM = input.asm

default: $(HEX)

%.o: %.c
	avr-gcc $(CFLAGS) -mmcu=$(CHIP) -o $@ $<
	 
$(BIN): $(OBJ_FILES)
	avr-gcc $(CFLAGS) -o $@ $^
	
$(ASM): $(BIN)
	avr-objdump -d -g -l -S $^ > $@
	
$(HEX): $(BIN)
	avr-objcopy -O ihex -j .text -j .data $^ $@

asm: $(ASM)

flash: $(HEX)
	avrdude -p $(CHIP) -c arduino -B 115200 -P /dev/ttyACM0 -v -v -e -Uflash:w:$(HEX):a

clean:
	$(RM) $(OBJ_FILES) $(BIN) $(HEX) $(ASM)