aboutsummaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
authorOtto Mattik <otto@mattik.org>2021-07-08 18:20:26 +0200
committerOtto Mattik <otto@mattik.org>2021-07-08 18:20:26 +0200
commit49b9e6e6548bf621e321ff66825fb2e1579db063 (patch)
tree0ff23a35f11b6bd84fc39359f819401adfdae536 /makefile
downloadblink-49b9e6e6548bf621e321ff66825fb2e1579db063.tar.gz
blink-49b9e6e6548bf621e321ff66825fb2e1579db063.zip
git: update to v1.0HEADv1.0master
Diffstat (limited to 'makefile')
-rw-r--r--makefile80
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