-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (76 loc) · 2.29 KB
/
Makefile
File metadata and controls
92 lines (76 loc) · 2.29 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
CFLAGS = -g -Wall -Wextra -Os
CFLAGS += -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER
CFLAGS += -ffunction-sections -Wl,-gc-sections -mcpu=cortex-m3 -mthumb
CFLAGS += -specs=nosys.specs -specs=nano.specs -u _printf_float
CFLAGS += -T"./toolcfg/stm32f10x_flash.ld"
CFLAGS += -lm
DOWNCFG += "./toolcfg/stm32f10x_download.cfg"
DEBUG = -DDEBUG
OUTDIR = output
TARGET = $(OUTDIR)/app
CC = arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
SIZE = arm-none-eabi-size
MKDIR = mkdir
BERRY_PATH = middleware/berry
GENERATE = generate
MAP_BUILD = $(BERRY_PATH)/tools/map_build/map_build
STR_BUILD = $(BERRY_PATH)/tools/str_build/str_build
INCPATH = ./core \
./hardware \
./std_lib/inc \
./middleware/berry/src \
./user
SRCPATH = ./core \
./hardware \
./std_lib/src \
./middleware/berry/src \
./user
START = ./core/startup/gcc/startup_stm32f10x_hd.s
SRCS = $(foreach dir, $(SRCPATH), $(wildcard $(dir)/*.c))
OBJS = $(patsubst %.c, %.o, $(SRCS))
DEPS = $(patsubst %.c, %.d, $(SRCS))
CFLAGS += $(foreach dir, $(INCPATH), -I"$(dir)")
ifeq ($(debug), 1)
CFLAGS += $(DEBUG)
endif
ifeq ($(OS), Windows_NT) # Windows
MAP_BUILD := $(MAP_BUILD).exe
STR_BUILD := $(STR_BUILD).exe
endif
all: $(TARGET).elf
$(TARGET).elf: $(OBJS) $(START) $(OUTDIR)
@ echo [Linking...]
@ $(CC) $(OBJS) $(CFLAGS) $(START) -o $@
@ echo Creating Hex file...
@ $(OBJCOPY) -O ihex -S $(TARGET).elf $(TARGET).hex
@ $(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).bin
@ echo Build info:
@ $(SIZE) $(TARGET).elf
@ echo done
$(OBJS): %.o: %.c
@ echo [Compile] $<
@ $(CC) -MM $(CFLAGS) -MT"$*.d" -MT"$(<:.c=.o)" $< > $*.d
@ $(CC) $(CFLAGS) -c $< -o $@
sinclude $(DEPS)
$(OUTDIR):
@ $(MKDIR) $(OUTDIR)
$(GENERATE):
@ $(MKDIR) $(GENERATE)
prebuild: $(STR_BUILD) $(MAP_BUILD) $(GENERATE)
@ echo [Prebuild] generate resources
@ $(MAP_BUILD) $(GENERATE) $(SRCPATH)
@ $(STR_BUILD) $(GENERATE) $(SRCPATH) $(GENERATE)
@ echo done
$(STR_BUILD):
@ echo [Make] str_build
@ $(MAKE) -C $(BERRY_PATH)/tools/str_build -s
$(MAP_BUILD):
@ echo [Make] map_build
@ $(MAKE) -C $(BERRY_PATH)/tools/map_build -s
clean:
@ echo [Clean...]
@ $(RM) $(OBJS) $(DEPS)
@ echo done
download:
@ openocd -f $(DOWNCFG)