day02/ex04/Makefile
2026-04-15 17:16:45 +02:00

55 lines
971 B
Makefile

# Makefile
MCU=atmega328p
F_CPU=16000000
CC=avr-gcc
OBJCOPY=avr-objcopy
CFLAGS=-std=c99 -Wall -Wextra -g -Os -mmcu=$(MCU) -DF_CPU=$(F_CPU) -Iinclude
IFLAGS=
TARGET=main
SERIAL=-P /dev/ttyUSB0 -b 115200
SRC_DIR=src
OBJ_DIR=build
SRC_FILES=main.c utils.c uart.c timer.c
OBJ_FILES=$(patsubst %.c,%.o,$(SRC_FILES))
SRC=$(addprefix $(SRC_DIR)/,$(SRC_FILES))
OBJ=$(addprefix $(OBJ_DIR)/,$(OBJ_FILES))
ELF_FILE=$(OBJ_DIR)/$(TARGET).elf
HEX_FILE=$(OBJ_DIR)/$(TARGET).hex
all: flash
re: fclean all
fclean: clean
rm -f $(HEX_FILE)
rm -f $(ELF_FILE)
clean:
rm -rf $(OBJ_DIR)
hex: $(HEX_FILE)
flash: hex
avrdude -p $(MCU) -c arduino -U flash:w:$(HEX_FILE):i $(SERIAL)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(shell dirname $@)
$(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@
$(ELF_FILE): $(OBJ)
$(CC) $(CFLAGS) $(OBJ) -o $@
$(HEX_FILE): $(ELF_FILE)
$(OBJCOPY) -j .text -j .data -O ihex $< $@
print:
@echo $(SRC)
@echo $(OBJ)
@echo $(ELF_FILE)
@echo $(HEX_FILE)