TOOLCHAIN_DIR=/home/indigo/packs/avr8-gnu-toolchain-linux_x86_64 CC=$(TOOLCHAIN_DIR)/bin/avr-gcc INC=$(TOOLCHAIN_DIR)/avr/include OUT=payload.elf SRCFILES := $(wildcard *.c) OBJFILES := $(patsubst %.c,build/%.o,$(SRCFILES)) DEVICE=atmega165pa F_CPU=8000000 #uses internal 8mhz RC clock #F_CPU=10000000 #uses external 10mhz crystal to ensure accuracy. 10mhz is weird but I just had this one laying around CCOPTS := -Wall -Wextra -I $(INC) -mmcu=$(DEVICE) -DF_CPU=$(F_CPU) -O1 make: $(OBJFILES) $(CC) $(CCOPTS) -o $(OUT) $(OBJFILES) build/%.o: %.c if [ ! -d "build" ]; then mkdir -p build; fi $(CC) $(CCOPTS) -c -o $@ $< install: $(OUT) doas avrdude -v -c usbtiny -p atmega165pa -U flash:w:payload.elf:e clean: rm -f *.o *.elf build/*