diff options
| author | Otto Mattik <otto@mattik.org> | 2021-07-08 18:20:26 +0200 |
|---|---|---|
| committer | Otto Mattik <otto@mattik.org> | 2021-07-08 18:20:26 +0200 |
| commit | 49b9e6e6548bf621e321ff66825fb2e1579db063 (patch) | |
| tree | 0ff23a35f11b6bd84fc39359f819401adfdae536 /makefile | |
| download | blink-af7e14770b016e6bf29ec15d63bea7ad582ef0d6.tar.gz blink-af7e14770b016e6bf29ec15d63bea7ad582ef0d6.zip | |
Diffstat (limited to 'makefile')
| -rw-r--r-- | makefile | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/makefile b/makefile new file mode 100644 index 0000000..79217cc --- /dev/null +++ b/makefile @@ -0,0 +1,80 @@ +$(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 |
