1 PORT ?= /dev/ttyUSB0 2 BIN_DIR = bin 3 SRC_DIR = src 4 5 SRCS := $(wildcard $(SRC_DIR)/*.c) 6 LIBS := $(SRC_DIR/*.h) 7 OBJS := $(patsubst $(SRC_DIR)/%.c,$(BIN_DIR)/%.o,$(SRCS)) 8 9 CC := avr-gcc 10 CFLAGS := -Wall -Wextra -Wno-missing-field-initializers \ 11 -pedantic -std=c99 -Os -mmcu=atmega328p 12 13 .PHONY: all 14 15 all: $(BIN_DIR) $(BIN_DIR)/main.hex 16 17 $(BIN_DIR)/%.o: $(SRC_DIR)/%.c 18 $(CC) $(CFLAGS) \ 19 -o $@ -c $< 20 21 $(BIN_DIR)/main.elf: $(OBJS) 22 $(CC) $(CFLAGS) \ 23 -o $(BIN_DIR)/main.elf $(OBJS) 24 25 $(BIN_DIR)/main.hex: $(BIN_DIR)/main.elf 26 avr-objcopy -O ihex -R .eeprom $(BIN_DIR)/main.elf $(BIN_DIR)/main.hex 27 28 upload: $(BIN_DIR)/main.hex 29 avrdude -F -V -c arduino -p ATMEGA328P -P $(PORT) \ 30 -b 115200 -U flash:w:$(BIN_DIR)/main.hex 31 32 $(BIN_DIR): 33 @if [ ! -d "$(BIN_DIR)" ]; then \ 34 mkdir -pv $(BIN_DIR); \ 35 fi 36 37 size: 38 avr-size --format=avr --mcu=atmega328p $(BIN_DIR)/main.elf 39 40 clean: 41 rm -rf $(BIN_DIR)
