Files
the-waterinator/firmware/atmega/Makefile
T
eeeck 2a2cb42b0b Refactor optimization flag in Makefile
Introduce `O_FLAG` variable for `-Os` to centralize optimization setting
for CFLAGS and LDFLAGS.
2025-05-17 14:23:22 +02:00

46 lines
849 B
Makefile

PROJECT = vase-control
MCU = atmega328p
F_CPU = 16000000UL
CC = avr-gcc
LD = $(CC)
OC = avr-objcopy
RM = rm -f
O_FLAG = -Os
BUILD_DIR = build
OBJ_DIR = $(BUILD_DIR)/obj
SRCS_C = source/adc.c source/moisture.c source/main.c source/pump.c
OBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(SRCS_C:.c=.o)))
CFLAGS = -Wall $(O_FLAG) -DF_CPU=$(F_CPU) -mmcu=$(MCU) -Iinclude
LDFLAGS = -Wall $(O_FLAG) -mmcu=$(MCU)
LIBS = -lm
EXEC = atmega
ELF_TARGET = $(BUILD_DIR)/$(EXEC).elf
TARGET = $(BUILD_DIR)/$(EXEC).hex
all: $(TARGET)
$(shell mkdir -p $(OBJ_DIR))
$(shell mkdir -p $(BUILD_DIR))
$(ELF_TARGET): $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LIBS)
$(OBJ_DIR)/%.o: source/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET): $(ELF_TARGET)
$(OC) -O ihex -R .eeprom $< $@
clean:
$(RM) $(TARGET) $(ELF_TARGET) $(OBJS)
$(RM) -r $(BUILD_DIR)
.PHONY: all clean