summaryrefslogtreecommitdiffhomepage
path: root/digital/ucoolib/build/stm32f4.mk
blob: 71ffcbddc39b94308d2477e4cc4edfe57ff47e4b (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
# ucoolib - Microcontroller object oriented library.
#
# Rules for STM32F4.

LIBOPENCM3_PATH ?= $(BASE)/lib/libopencm3
ifneq ($(LIBOPENCM3_PATH),)
  LIBOPENCM3_LIB := $(LIBOPENCM3_PATH)/lib/libopencm3_stm32f4.a
  ifeq ($(wildcard $(LIBOPENCM3_LIB)),)
    $(error Can not find libopencm3 library, please run "make lib" in \
	    $(LIBOPENCM3_PATH) or change LIBOPENCM3_PATH (you can set it to \
	    empty string to use system library))
  endif
  LIBOPENCM3_CPPFLAGS := -I$(LIBOPENCM3_PATH)/include
  LIBOPENCM3_LDFLAGS := -L$(LIBOPENCM3_PATH)/lib
endif

stm32f4_SUBTARGETS := stm32 arm newlib

stm32f4_CPPFLAGS := $(CPPFLAGS) $(stm32f4_DEFS) \
	-DSTM32F4 $(LIBOPENCM3_CPPFLAGS)
stm32f4_CFLAGS := $(CFLAGS) \
	-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
	-Wl,--gc-sections -ffunction-sections
stm32f4_CXXFLAGS := $(sort $(stm32f4_CFLAGS) $(CXXFLAGS))
stm32f4_ASFLAGS := $(ASFLAGS)
stm32f4_LDSCRIPT := stm32f4.ld
stm32f4_LDFLAGS := $(LDFLAGS) -T$(stm32f4_LDSCRIPT) \
	-L$(BASE)/ucoolib/arch/stm32f4 \
	$(LIBOPENCM3_LDFLAGS)
stm32f4_LDLIBS := -nostartfiles $(LDLIBS) $(stm32f4_LIBS) \
	-lopencm3_stm32f4

stm32f4_PREFIX := arm-none-eabi-
$(eval $(call arch_cmds,stm32f4))

stm32f4_ELF_SUFFIX = .elf

# Rules.

$(eval $(call arch_build_rules,stm32f4))
$(eval $(call arch_lst_rules,stm32f4))
$(eval $(call arch_bin_rules,stm32f4))
$(eval $(call arch_size_rules,stm32f4))
$(eval $(call arch_misc_rules,stm32f4))

.PHONY: program.stm32f4
ifeq ($(words $(stm32f4_PROGS)),1)
program.stm32f4: $(stm32f4_PROGS:%=%.stm32f4.program)
endif

%.stm32f4.program: %.stm32f4.bin
	@echo "PROG [stm32f4] $<"
	$Qst-flash write $< 0x8000000