Files
2025-12-13 14:38:38 +03:00

54 lines
1.2 KiB
Makefile

# Название проекта
PRG=PLCpwr
# МК
MCU=attiny13
# Частота МК в герцах
FREQ=1200000UL
# GCC
CC=avr-gcc
# OBJCOPY
OBJCOPY= avr-objcopy
# SIZE
SIZE=avr-size
# Флаги GCC
CFLAGS= -Wall -Os -std=gnu99 -lm
# Флаги LD
LDFLAGS= -Wall -lm
# Папка с промежуточными файлами
OBJDIR=obj
#
OUTDIR=out
# Cписок .c файлов
C_SRC= \
PLCpwr.c
# Список объектных файлов (формируется автоматически на основе списка .с файлов)
OBJS=$(C_SRC:.c=.o)
OBJ=$(addprefix $(OBJDIR)/, $(OBJS))
.PHONY: all LD DIR clean
# Выполняем цели в указанном порядке
all: DIR $(C_SRC) $(OBJS) LD
# Линковка
LD: $(OBJ)
$(CC) $^ -o $(OBJDIR)/$(PRG).elf $(LDFLAGS) -mmcu=$(MCU)
$(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock $(OBJDIR)/$(PRG).elf $(OUTDIR)/$(PRG).hex
$(OBJCOPY) -O ihex -j .eeprom $(OBJDIR)/$(PRG).elf $(OUTDIR)/$(PRG).eep
$(SIZE) -C --format=avr --mcu=$(MCU) $(OBJDIR)/$(PRG).elf
#
%.o: %.c
$(CC) $< -o $(OBJDIR)/$@ $(CFLAGS) -mmcu=$(MCU) -DF_CPU=$(FREQ) -c
# Создание папок
DIR:
mkdir -p $(OBJDIR)
mkdir -p $(OUTDIR)
#
clean:
rm -rf $(OBJDIR) $(OUTDIR)