sidestep
[mTask.git] / int / com / pj / cube-hal.mk
1 INC += $(CUBEDIR)/$(PJNAME)/Inc
2 #CSRCDIRS += $(CUBEDIR)/$(PJNAME)/Src
3
4 C_ISR_NAME := $(notdir $(wildcard $(CUBEDIR)/$(PJNAME)/Src/stm*it.c))
5 C_ISR_FILE := $(CUBEDIR)/$(PJNAME)/Src/cube_$(C_ISR_NAME)
6 C_MAIN_FILE := $(CUBEDIR)/$(PJNAME)/Src/cube_main.c
7 C_DMA_FILE := $(CUBEDIR)/$(PJNAME)/Inc/cube_dma.h
8 ifeq ($(CHIBIOS_PORT),)
9 C_IRQH_FILE :=
10 else
11 C_IRQH_FILE := $(CUBEDIR)/$(PJNAME)/Inc/$(CHIBIOS_PORT)-irqs.h
12 endif
13 C_AWK_DMA := $(COMDIR)/pj/cube-hal-dma.awk
14 C_AWK_IRQ := $(COMDIR)/pj/cube-hal-irqs.awk
15
16 CLEAN_ADD += $(C_ISR_FILE) $(C_MAIN_FILE) $(C_DMA_FILE) $(C_IRQH_FILE)
17 GEN_ADD += $(C_ISR_FILE) $(C_MAIN_FILE) $(C_DMA_FILE) $(C_IRQH_FILE)
18 SRCS_ADD += $(patsubst %_it.c,, $(patsubst %main.c,, $(wildcard $(CUBEDIR)/$(PJNAME)/Src/*.c)))
19 SRCS_ADD += $(C_MAIN_FILE) $(C_ISR_FILE)
20 C_DEPS += $(C_DMA_FILE)
21 FILES_ADD += $(C_AWK_DMA)
22
23 $(C_MAIN_FILE): $(CUBEDIR)/$(PJNAME)/Src/main.c
24 @echo gen $@
25 # @echo generate $(C_MAIN_FILE) calling main1\(\)
26 ifeq ($(CHIBIOS_PORT),)
27 @cat $< \
28 | sed -e '/USER CODE END PFP/ i void main1\(void\);' \
29 | sed -e '/USER CODE BEGIN WHILE/ i main1();' \
30 | sed -e '/int main(void)/ i __weak' \
31 > $@
32 else
33 @cat $< \
34 | sed -e '/USER CODE END PFP/ i void main1\(void\);' \
35 | sed -e '/USER CODE BEGIN WHILE/ i main1();' \
36 | sed -e '/int main(void)/ i __weak' \
37 | sed -e 's/SCB_EnableICache()/\/\/removed by cube-hal.mk/' \
38 | sed -e 's/SCB_EnableDCache()/\/\/removed by cube-hal.mk/' \
39 > $@
40 endif
41
42 ifeq ($(CHIBIOS_PORT),)
43 else
44 FILES_ADD += $(C_AWK_IRQ)
45 $(C_ISR_FILE): $(C_IRQH_FILE)
46
47 $(C_IRQH_FILE): $(C_AWK_IRQ) $(CHIBIOS_IRQ_S_FILE)
48 ifeq ($(CHIBIOS_IRQ_S_FILE),)
49 @echo missing startup_stm32xx.s file && false -
50 endif
51 @echo gen $@
52 @test -f $(CHIBIOS_IRQ_S_FILE) && cat $(CHIBIOS_IRQ_S_FILE) \
53 |sed -e 's/\r$///' | gawk -f $(C_AWK_IRQ) \
54 > $@
55 endif
56
57 $(C_ISR_FILE): $(CUBEDIR)/$(PJNAME)/Src/$(C_ISR_NAME)
58 @echo gen $@
59 # @echo generate $(C_ISR_FILE) declaring ISRs as weak symbols
60 ifeq ($(CHIBIOS_PORT),)
61 @cat $< \
62 | sed -e '/IRQHandler(void)/ i __weak' \
63 > $@
64 else
65 @cat $< \
66 | sed -e '/USER CODE END 0/ i #include "$(CHIBIOS_PORT)-irqs.h"' \
67 | sed -e '/Handler(void)/ i __weak' \
68 > $@
69 endif
70
71 $(C_DMA_FILE): $(CUBEDIR)/$(PJNAME)/Src/main.c $(C_AWK_DMA)
72 @echo gen $@
73 # @echo generate $(C_DMA_FILE)
74 @cat $(CUBEDIR)/$(PJNAME)/Src/*.c \
75 | gawk -f $(C_AWK_DMA) \
76 > $(C_DMA_FILE)