1
+ # Based on https://github.com/sergioprado/bare-metal-arm/blob/master/Makefile
2
+ # But heavily-edited for our purposes:
3
+ # (c) Abhimanyu Ghosh, 2016
4
+ TOOLCHAIN_ROOT =../../../../gcc-arm-none-eabi-5_4-2016q3
5
+ TOOLCHAIN =$(TOOLCHAIN_ROOT ) /bin/
6
+ PREFIX =$(TOOLCHAIN ) /arm-none-eabi-
7
+
8
+ ARCHFLAGS=-mcpu =cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -I$(TOOLCHAIN_ROOT ) /arm-none-eabi/include -fsingle-precision-constant
9
+ CFLAGS =-nostdlib -I../arch/stm32/f3/inc/ -I../arch/stm32/f3/inc/CMSIS -I../arch/stm32/f3/inc/Legacy -I./user_include -I./user_include/hal_interface -g -O2 -Wall
10
+ LDFLAGS=--specs =nosys.specs -Wl,--gc-sections,-Map,$(TARGET ) .map,-Tlinker.ld
11
+ LDFLAGS+ =$(ARCHFLAGS )
12
+
13
+ CC =$(PREFIX ) gcc
14
+ LD =$(PREFIX ) gcc
15
+ OBJCOPY =$(PREFIX ) objcopy
16
+ SIZE =$(PREFIX ) size
17
+ RM =rm -f
18
+
19
+ TARGET =Autonomous_Parallel_Parking
20
+
21
+ SRC =$(wildcard ../arch/stm32/f3/src/* .c)
22
+ SRC+ =$(wildcard ../arch/stm32/f3/src/CMSIS/* .c)
23
+ ASM_SRC =$(wildcard ../arch/stm32/f3/src/* .s)
24
+ ASM_SRC+ =$(wildcard ../arch/stm32/f3/src/CMSIS/* .s)
25
+ USER_SRC =$(wildcard user_source/* .c)
26
+ USER_SRC+ =$(wildcard user_source/hal_interface/* .c)
27
+ USER_ASM_SRC =$(wildcard user_source/* .s)
28
+
29
+ OBJ =$(patsubst % .c, % .o, $(SRC ) )
30
+ ASM_OBJS =$(patsubst % .s, % .o, $(ASM_SRC ) )
31
+ TARGET_OBJ =$(TARGET ) .o
32
+ USER_OBJ =$(patsubst % .c, % .o, $(USER_SRC ) )
33
+ USER_ASM_OBJ =$(patsubst % .s, % .o, $(USER_ASM_SRC ) )
34
+
35
+ DEPS:=$(OBJ:.o =.d)
36
+ DEPS+=$(TARGET_OBJ:.o =.d)
37
+ DEPS+=$(USER_OBJ:.o =.d)
38
+
39
+ all : build size
40
+ build : elf srec bin
41
+ elf : $(TARGET ) .elf
42
+ srec : $(TARGET ) .srec
43
+ bin : $(TARGET ) .bin
44
+ md5sums : all
45
+ md5sum $(TARGET ) .elf > user_app_md5sum
46
+ check : all
47
+ md5sum $(TARGET ) .elf > tmp && diff tmp user_app_md5sum && rm tmp
48
+ load : all
49
+ ./load_fw.sh $(TOOLCHAIN )
50
+
51
+ clean :
52
+ $(RM ) $(TARGET ) .srec $(TARGET ) .elf $(TARGET ) .bin $(TARGET ) .map $(OBJ ) $(ASM_OBJS ) $(USER_ASM_OBJ ) $(TARGET_OBJ ) $(USER_OBJ ) $(DEPS )
53
+
54
+ $(TARGET ) .elf : $(ASM_OBJS ) $(USER_ASM_OBJ ) $(OBJ ) $(TARGET_OBJ ) $(USER_OBJ )
55
+ $(LD ) $(LDFLAGS ) -o $@ $(OBJ ) $(ASM_OBJS ) $(USER_ASM_OBJ ) $(TARGET_OBJ ) $(USER_OBJ ) -lm -lc
56
+
57
+ % .o : % .s
58
+ $(CC ) -c $(ARCHFLAGS ) $(CFLAGS ) -o $@ $<
59
+
60
+ -include $(DEPS )
61
+
62
+ % .o : % .c
63
+ $(CC ) $(ARCHFLAGS ) $(CFLAGS ) -MM -MT $@ -MF $(patsubst % .o,% .d,$@ ) $<
64
+ $(CC ) $(ARCHFLAGS ) $(CFLAGS ) -c -o $@ $<
65
+
66
+ % .srec : % .elf
67
+ $(OBJCOPY ) -O srec $< $@
68
+
69
+ % .bin : % .elf
70
+ $(OBJCOPY ) -O binary $< $@
71
+
72
+ size : $(TARGET ) .elf
73
+ $(SIZE ) $(TARGET ) .elf
74
+
75
+ .PHONY : clean
0 commit comments