$(eval MAK_DIR = $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))) $(eval SRC_DIR = $(shell dir=$(MAK_DIR);while [ `basename $$dir` != src ];do dir=`dirname $$dir`;done;echo $$dir)) ifeq ($(shell test -f $(SRC_DIR)/options.mak && echo exists), exists) include $(SRC_DIR)/options.mak endif include options.mak APP_NAME = blink APP_OBJS = $(BUILD_DIR)/$(APP_NAME).o ARMEN_DIR = $(SRC_DIR)/armen/armen ifdef BUILD_PREFIX BUILD_DIR = $(BUILD_PREFIX)/armen/$(APP_NAME)/$(MODEL)/$(T_CPU) else BUILD_DIR = build/$(MODEL)/$(T_CPU) endif ifeq ($(MODEL), arduino) F_CPU = 16000000UL PRGFLAGS += -b 115200 -P /dev/ttyACM0 ifeq ($(T_CPU), atmega2560) PRGFLAGS += -c wiring else T_CPU = atmega328p PRGFLAGS += -c arduino endif else PRGFLAGS += -P /dev/usbasp -c usbasp endif .PHONY: all clean cleanall install list size .DEFAULT_GOAL := all ARMEN_FLAGS += -DCHECK_PARAM include $(ARMEN_DIR)/armen.mak CFLAGS += -DF_CPU=$(F_CPU) ASFLAGS += -DF_CPU=$(F_CPU) INCFLAGS = -I. -I$(ARMEN_DIR) PRGFLAGS += -c $(PRGTYPE) ifeq ($(MODEL), simu) CFLAGS += -Wa,-gstabs ASFLAGS += -g3 -gdwarf-2 endif all: $(BUILD_DIR)/$(APP_NAME).elf $(BUILD_DIR)/$(APP_NAME).hex $(BUILD_DIR)/$(APP_NAME).elf: $(ARMEN_OBJS) $(APP_OBJS) @if [ ! -d $(BUILD_DIR) ]; then mkdir -p $(BUILD_DIR); fi $(CC) $(CFLAGS) -o $@ $^ $(BUILD_DIR)/$(APP_NAME).o: $(MAK_DIR)/$(APP_NAME).c $(ARMEN_DIR)/armen.h @if [ ! -d $(BUILD_DIR) ]; then mkdir -p $(BUILD_DIR); fi $(CC) $(CFLAGS) $(OPTFLAGS) $(ARMEN_FLAGS) $(INCFLAGS) -c -o $@ $< clean: @rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/*.lst cleanall: @rm -fr $(BUILD_DIR) install: $(BUILD_DIR)/$(APP_NAME).hex @$(PRG) $(PRGFLAGS) -U flash:w:$< list: $(BUILD_DIR)/$(APP_NAME).lst size: $(BUILD_DIR)/$(APP_NAME).elf @text=`$(FS) $< | tail -1 | awk '{print $$1}'`;\ data=`$(FS) $< | tail -1 | awk '{print $$2}'`;\ bss=`$(FS) $< | tail -1 | awk '{print $$3}'`;\ total=`expr $$text + $$data + $$bss`;\ echo `basename $<`" --> text:$$text + data:$$data + bss:$$bss = $$total bytes" ifeq ($(MODEL), simu) simu: $(BUILD_DIR)/$(APP_NAME).hex @$(SIM) -g -m $(T_CPU) -f `echo $(F_CPU)|cut -d'U' -f1` $< & SIMPID=$$!;\ echo "target remote localhost:1234" >.gdbinit; sleep 1;\ $(DBG) -q -d . -d ./avr $(BUILD_DIR)/$(APP_NAME).elf;\ kill -9 $$SIMPID; rm -f .gdbinit endif