blob: 79217cc4f1cd63b2fd238e2dbba0ff9eb65306ac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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
|