54 lines
1.5 KiB
Makefile
54 lines
1.5 KiB
Makefile
SRCS=$(wildcard src/*.c)
|
|
OBJS=$(subst .c,.o,$(subst src,obj,$(SRCS)))
|
|
|
|
CC=tools/avr-gcc
|
|
OBJCOPY=avr-objcopy
|
|
SIZE=avr-size
|
|
MCU=atmega32
|
|
|
|
TARGET=$(shell basename `pwd`)
|
|
VERSION=$(shell echo "$(TARGET)" | cut -d "-" -f 2-) build:$(shell date +%Y%m%d)
|
|
|
|
CFLAGS_DEF=-DFVERSION="\"$(VERSION)\""
|
|
CFLAGS_MCU=-mmcu=$(MCU) -fomit-frame-pointer
|
|
CFLAGS_OPT=-O2 -g0 -pipe -fshort-enums -fpack-struct -s
|
|
CFLAGS_STD=-std=c99 -funsigned-char
|
|
CFLAGS_WARN=-Wall -Wextra \
|
|
-Wbad-function-cast -Wunused-parameter -Wshadow -Wpointer-arith -Wmissing-declarations \
|
|
-Wmissing-noreturn -Wunreachable-code -Wdeclaration-after-statement -Wundef -Wmissing-braces
|
|
|
|
CFLAGS=$(CFLAGS_MCU) $(CFLAGS_OPT) $(CFLAGS_STD) $(CFLAGS_DEF)
|
|
LDFLAGS=-Wl,-O1 -lm
|
|
|
|
all : $(TARGET).hex info
|
|
|
|
clean :
|
|
rm -fr obj/*.o $(TARGET) $(TARGET).hex *.tar.bz2
|
|
|
|
dist : clean
|
|
@echo -e "\nCREATED: $(TARGET).tar.bz2"
|
|
$(shell cd .. ; tar --exclude=$(TARGET).tar.bz2 -cjf $(TARGET)/$(TARGET).tar.bz2 $(TARGET))
|
|
|
|
info : $(TARGET).hex
|
|
@echo "built binary sections size:"
|
|
@$(SIZE) --target=ihex $(TARGET).hex
|
|
|
|
program : $(TARGET).hex
|
|
avrdude -p $(MCU)
|
|
|
|
obj/%.o : src/%.c
|
|
@echo -e "\033[1;34m[CC]: \033[0m$(CC) $< -o $@ -c $(CFLAGS)"
|
|
@$(CC) $(CFLAGS) $(CFLAGS_WARN) -c $< -o $@
|
|
|
|
$(TARGET) : $(OBJS)
|
|
@echo -e "\033[1;32m[LD]: \033[0m$(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS)"
|
|
@$(CC) $(CFLAGS) $(CFLAGS_WARN) $(LDFLAGS) $^ -o $@
|
|
|
|
$(TARGET).hex : $(TARGET)
|
|
@echo -n -e "\033[1;33m[HEX]: \033[0m"
|
|
$(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock $(TARGET) $@
|
|
|
|
@echo -e "\nBUILD COMPLETE!\n"
|
|
|
|
.PHONY : all clean dist info program
|