ARCH ?= atmega168 AVRDUDE_ARCH ?= m168 AVRDUDE ?= avrdude PROGRAMMER ?= avrisp2 PROGPORT ?= usb CC = avr-gcc OBJCOPY = avr-objcopy SIZE = avr-size PYTHON = python CFLAGS = -mmcu=$(ARCH) -std=c99 -g0 -Os -fomit-frame-pointer -Wall -fpack-struct CFLAGS += "-Dinline=inline __attribute__((__always_inline__))" #CFLAGS += -mcall-prologues OBJECTS = main.o lcd.o zd1211.o util.o errno.o BIN = fw.bin HEX = fw.hex all: $(HEX) battery_tab.h: battery_tab_gen.py $(PYTHON) battery_tab_gen.py > battery_tab.h main.o: main.h util.h lcd.h zd1211.h calibration.h atomic.h errno.h battery_tab.h lcd.o: lcd.h util.h font.h zd1211.o: zd1211.h util.h main.h errno.h util.o: util.h calibration.h main.h lcd.h errno.o: errno.h util.h %.s: %.c $(CC) $(CFLAGS) -S $*.c $(BIN): $(OBJECTS) $(CC) $(CFLAGS) -o $(BIN) $(OBJECTS) $(LDFLAGS) $(HEX): $(BIN) $(OBJCOPY) -O ihex $(BIN) $(HEX) $(SIZE) $(BIN) avrdude: $(AVRDUDE) -B 1 -p $(AVRDUDE_ARCH) -c $(PROGRAMMER) -P $(PROGPORT) -t install_flash: $(AVRDUDE) -B 1 -p $(AVRDUDE_ARCH) -c $(PROGRAMMER) -P $(PROGPORT) -U flash:w:$(HEX) install: all install_flash clean: -rm -f *~ *.o battery_tab.h $(BIN) distclean: clean -rm -f *.s $(HEX)