xref: /rk3399_ARM-atf/plat/st/common/common_rules.mk (revision 06f3c7058c42a9f1a9f7df75ea2de71a000855e8)
1#
2# Copyright (c) 2023-2025, STMicroelectronics - All Rights Reserved
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
7# Compilation rules
8.PHONY: check_dtc_version stm32image clean_stm32image check_boot_device
9
10all: check_dtc_version stm32image ${STM32_TF_STM32}
11
12distclean realclean clean: clean_stm32image
13
14bl2: check_boot_device
15
16check_boot_device:
17	$(q)if [ ${STM32MP_EMMC} != 1 ] && \
18	    [ ${STM32MP_SDMMC} != 1 ] && \
19	    [ ${STM32MP_RAW_NAND} != 1 ] && \
20	    [ ${STM32MP_SPI_NAND} != 1 ] && \
21	    [ ${STM32MP_SPI_NOR} != 1 ] && \
22	    [ ${STM32MP_UART_PROGRAMMER} != 1 ] && \
23	    [ ${STM32MP_USB_PROGRAMMER} != 1 ]; then \
24		echo "No boot device driver is enabled"; \
25		false; \
26	fi
27
28stm32image: ${STM32IMAGE}
29
30${STM32IMAGE}: ${STM32IMAGE_SRC}
31	$(q)${MAKE} CPPFLAGS="" --no-print-directory -C ${STM32IMAGEPATH}
32
33clean_stm32image:
34	$(q)${MAKE} --no-print-directory -C ${STM32IMAGEPATH} clean
35
36check_dtc_version:
37	$(q)if [ ${DTC_VERSION} -lt 10407 ]; then \
38		echo "dtc version too old (${DTC_V}), you need at least version 1.4.7"; \
39		false; \
40	fi
41
42# Create DTB file for BL2
43${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | $$(@D)/
44	$(q)echo '#include "$(patsubst %.dts,%$(SP_EXT).dts,$(patsubst fdts/%,%,$<))"' > $@
45	$(q)echo '#include "${BL2_DTSI}"' >> $@
46
47${BUILD_PLAT}/fdts/%-bl2.dtb: ${BUILD_PLAT}/fdts/%-bl2.dts
48
49${BUILD_PLAT}/$(PLAT)-%.o: ${BUILD_PLAT}/fdts/%-bl2.dtb $(STM32_BINARY_MAPPING) bl2
50	$(s)echo "  AS      $${PLAT}.S"
51	$(q)$($(ARCH)-as) -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) ${ASFLAGS} ${TF_CFLAGS} \
52		-DDTB_BIN_PATH=\"$<\" \
53		-c $(word 2,$^) -o $@
54
55$(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2))
56
57tf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE}
58	$(s)echo "  LDS     $<"
59ifeq ($($(ARCH)-ld-id),gnu-gcc)
60	$(q)$($(ARCH)-ld) -o $@ $(subst --,-Wl$(comma)--,${STM32_TF_ELF_LDFLAGS}) -nostartfiles -no-pie -Wl,-Map=$(@:.elf=.map) -Wl,-dT ${STM32_TF_LINKERFILE} $<
61else
62	$(q)$($(ARCH)-ld) -o $@ ${STM32_TF_ELF_LDFLAGS} -no-pie -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $<
63endif
64
65tf-a-%.bin: tf-a-%.elf
66	$(q)$($(ARCH)-oc) -O binary $< $@
67	$(s)echo
68	$(s)echo "Built $@ successfully"
69	$(s)echo
70
71tf-a-%.stm32: tf-a-%.bin ${STM32_DEPS}
72	$(s)echo
73	$(s)echo "Generate $@"
74	$(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep '^RAM' | awk '{print $$2}'))
75	$(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}'))
76	$(q)${STM32IMAGE} -s $< -d $@ \
77		-l $(LOADADDR) -e ${ENTRY} \
78		-v ${STM32_TF_VERSION} \
79		-m ${STM32_HEADER_VERSION_MAJOR} \
80		-n ${STM32_HEADER_VERSION_MINOR} \
81		-b ${STM32_HEADER_BL2_BINARY_TYPE}
82	$(s)echo
83