forked from sebseb7/pentstm32f4_discovery
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
119 lines (83 loc) · 3.1 KB
/
Makefile
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
PROJECT=template
ifeq ($(OSTYPE),)
OSTYPE = $(shell uname)
endif
ifneq ($(findstring Darwin,$(OSTYPE)),)
USB_DEVICE = $(shell ls /dev/cu.usbserial-A*)
else
USB_DEVICE = /dev/ttyUSB0
endif
ifeq ($(FROMRAM),1)
LSCRIPT=core/stm32_ram.ld
else
LSCRIPT=core/stm32_flash.ld
endif
# Compiler/Assembler Paths
#
ifeq ($(CLANGCOMPLETE),1)
GCC=~/.vim/bin/cc_args.py arm-none-eabi-gcc
else
GCC=arm-none-eabi-gcc
endif
AS = arm-none-eabi-as
OBJCOPY = arm-none-eabi-objcopy
REMOVE = rm -f
SIZE = arm-none-eabi-size
OPTIMIZATION = -O2
DEBUG = -g
#########################################################################
SRC=$(wildcard core/*.c *.c)
ASRC=$(wildcard core/*.s)
OBJECTS= $(SRC:.c=.o) $(ASRC:.s=.o)
LSTFILES= $(SRC:.c=.lst)
HEADERS=$(wildcard core/*.h *.h)
# Compiler Options
GCFLAGS= -g $(OPTIMIZATION) -mlittle-endian -mthumb -Icore -I. -Iusb
GCFLAGS+= -funsigned-char -Wundef -Wsign-compare -Wunreachable-code -Wstrict-prototypes
GCFLAGS+= -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wl,--gc-sections -fsingle-precision-constant -DARM_MATH_CM4
GCFLAGS+= -Wa,-adhlns=$(<:.c=.lst)
GCFLAGS+= -ffreestanding -nostdlib -Wa,-adhlns=$(<:.c=.lst) -fno-math-errno
# stm32f4_discovery lib
GCFLAGS+=-ISTM32_DSP_Lib/inc
GCFLAGS+=-ISTM32F4xx_StdPeriph_Driver/inc
GCFLAGS+=-ISTM32F4xx_StdPeriph_Driver/inc/device_support
GCFLAGS+=-ISTM32F4xx_StdPeriph_Driver/inc/core_support
#1803 <Define>ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING, __FPU_PRESENT = 1</Define>
# -ffunction-sections -fdata-sections -fmessage-length=0 -fno-builtin
LDFLAGS = -mcpu=cortex-m4 -mthumb $(OPTIMIZATION) -nostartfiles -T$(LSCRIPT)
LDFLAGS+= -LSTM32F4xx_StdPeriph_Driver/build -lSTM32F4xx_StdPeriph_Driver
LDFLAGS+= -LSTM32_DSP_Lib/build -lSTM32_DSP_Lib
#########################################################################
all: STM32F4xx_StdPeriph_Driver/build/STM32F4xx_StdPeriph_Driver.a STM32_DSP_Lib/build/STM32_DSP_Lib.a $(PROJECT).bin Makefile stats
# arm-none-eabi-objdump -d $(PROJECT).elf > out.dump
STM32F4xx_StdPeriph_Driver/build/STM32F4xx_StdPeriph_Driver.a:
make -C STM32F4xx_StdPeriph_Driver/build
STM32_DSP_Lib/build/STM32_DSP_Lib.a:
make -C STM32_DSP_Lib/build
tools/flash/st-flash:
make -C tools
$(PROJECT).bin: $(PROJECT).elf Makefile
$(OBJCOPY) -R .stack -O binary $(PROJECT).elf $(PROJECT).bin
$(PROJECT).elf: $(OBJECTS) Makefile
$(GCC) $(OBJECTS) $(LDFLAGS) -o $(PROJECT).elf
stats: $(PROJECT).elf Makefile
$(SIZE) $(PROJECT).elf
clean:
$(REMOVE) $(OBJECTS)
$(REMOVE) $(LSTFILES)
$(REMOVE) $(PROJECT).bin
$(REMOVE) $(PROJECT).elf
make -C STM32F4xx_StdPeriph_Driver/build clean
make -C STM32_DSP_Lib/build clean
make -C tools clean
#########################################################################
%.o: %.c Makefile $(HEADERS)
$(GCC) $(GCFLAGS) -o $@ -c $<
%.o: %.s Makefile
$(AS) $(ASFLAGS) -o $@ $<
#########################################################################
flash: tools/flash/st-flash $(PROJECT).bin
tools/flash/st-flash write $(PROJECT).bin 0x08000000
clangcomplete: clean
$(MAKE) -C . CLANGCOMPLETE=1
.PHONY: clangcomplete flash clean stats