xref: /rk3399_ARM-atf/plat/st/common/common_rules.mk (revision f677182c3f83db34b1798192f89c685843c0d220)
1a430382fSYann Gautier#
271ba1647SYann Gautier# Copyright (c) 2023-2025, STMicroelectronics - All Rights Reserved
3a430382fSYann Gautier#
4a430382fSYann Gautier# SPDX-License-Identifier: BSD-3-Clause
5a430382fSYann Gautier#
6a430382fSYann Gautier
7a430382fSYann Gautier# Compilation rules
8a430382fSYann Gautier.PHONY: check_dtc_version stm32image clean_stm32image check_boot_device
9a430382fSYann Gautier
10a430382fSYann Gautierall: check_dtc_version stm32image ${STM32_TF_STM32}
11a430382fSYann Gautier
12a430382fSYann Gautierdistclean realclean clean: clean_stm32image
13a430382fSYann Gautier
14a430382fSYann Gautierbl2: check_boot_device
15a430382fSYann Gautier
16a430382fSYann Gautiercheck_boot_device:
177c4e1eeaSChris Kay	$(q)if [ ${STM32MP_EMMC} != 1 ] && \
18a430382fSYann Gautier	    [ ${STM32MP_SDMMC} != 1 ] && \
19a430382fSYann Gautier	    [ ${STM32MP_RAW_NAND} != 1 ] && \
20a430382fSYann Gautier	    [ ${STM32MP_SPI_NAND} != 1 ] && \
21a430382fSYann Gautier	    [ ${STM32MP_SPI_NOR} != 1 ] && \
22a430382fSYann Gautier	    [ ${STM32MP_UART_PROGRAMMER} != 1 ] && \
23a430382fSYann Gautier	    [ ${STM32MP_USB_PROGRAMMER} != 1 ]; then \
24a430382fSYann Gautier		echo "No boot device driver is enabled"; \
25a430382fSYann Gautier		false; \
26a430382fSYann Gautier	fi
27a430382fSYann Gautier
28a430382fSYann Gautierstm32image: ${STM32IMAGE}
29a430382fSYann Gautier
30*0d35f9e5SYann Gautier${STM32IMAGE}: ${STM32IMAGE_SRC} | $$(@D)/
310b4722cfSYann Gautier	$(q)${MAKE} CPPFLAGS="" BUILD_PLAT=$(abspath ${BUILD_PLAT}) --no-print-directory -C ${STM32IMAGEPATH}
32a430382fSYann Gautier
33a430382fSYann Gautierclean_stm32image:
340b4722cfSYann Gautier	$(q)${MAKE} BUILD_PLAT=$(abspath ${BUILD_PLAT}) --no-print-directory -C ${STM32IMAGEPATH} clean
35a430382fSYann Gautier
36a430382fSYann Gautiercheck_dtc_version:
377c4e1eeaSChris Kay	$(q)if [ ${DTC_VERSION} -lt 10407 ]; then \
3838ac8bbbSYann Gautier		echo "dtc version too old (${DTC_V}), you need at least version 1.4.7"; \
39a430382fSYann Gautier		false; \
40a430382fSYann Gautier	fi
41a430382fSYann Gautier
42a430382fSYann Gautier# Create DTB file for BL2
43f4dd18c2SChris Kay${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | $$(@D)/
4471ba1647SYann Gautier	$(q)echo '#include "$(patsubst %.dts,%$(SP_EXT).dts,$(patsubst fdts/%,%,$<))"' > $@
457c4e1eeaSChris Kay	$(q)echo '#include "${BL2_DTSI}"' >> $@
46a430382fSYann Gautier
47a430382fSYann Gautier${BUILD_PLAT}/fdts/%-bl2.dtb: ${BUILD_PLAT}/fdts/%-bl2.dts
48a430382fSYann Gautier
49a430382fSYann Gautier${BUILD_PLAT}/$(PLAT)-%.o: ${BUILD_PLAT}/fdts/%-bl2.dtb $(STM32_BINARY_MAPPING) bl2
507c4e1eeaSChris Kay	$(s)echo "  AS      $${PLAT}.S"
517c4e1eeaSChris Kay	$(q)$($(ARCH)-as) -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) ${ASFLAGS} ${TF_CFLAGS} \
52a430382fSYann Gautier		-DDTB_BIN_PATH=\"$<\" \
53a430382fSYann Gautier		-c $(word 2,$^) -o $@
54a430382fSYann Gautier
55a430382fSYann Gautier$(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2))
56a430382fSYann Gautier
57a430382fSYann Gautiertf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE}
587c4e1eeaSChris Kay	$(s)echo "  LDS     $<"
598620bd0bSChris Kayifeq ($($(ARCH)-ld-id),gnu-gcc)
606d26d75cSYann Gautier	$(q)$($(ARCH)-ld) -o $@ $(subst --,-Wl$(comma)--,${STM32_TF_ELF_LDFLAGS}) -nostartfiles -no-pie -Wl,-Map=$(@:.elf=.map) -Wl,-dT ${STM32_TF_LINKERFILE} $<
6177625312SYann Gautierelse
626d26d75cSYann Gautier	$(q)$($(ARCH)-ld) -o $@ ${STM32_TF_ELF_LDFLAGS} -no-pie -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $<
6377625312SYann Gautierendif
64a430382fSYann Gautier
65a430382fSYann Gautiertf-a-%.bin: tf-a-%.elf
667c4e1eeaSChris Kay	$(q)$($(ARCH)-oc) -O binary $< $@
677c4e1eeaSChris Kay	$(s)echo
687c4e1eeaSChris Kay	$(s)echo "Built $@ successfully"
697c4e1eeaSChris Kay	$(s)echo
70a430382fSYann Gautier
71a430382fSYann Gautiertf-a-%.stm32: tf-a-%.bin ${STM32_DEPS}
727c4e1eeaSChris Kay	$(s)echo
737c4e1eeaSChris Kay	$(s)echo "Generate $@"
74fa4acc2aSYann Gautierifeq ($($(ARCH)-ld-id),llvm-lld)
75fa4acc2aSYann Gautier	$(eval LOADADDR = 0x$(shell cat $(@:.stm32=.map) | grep '\.data$$' | awk '{print $$1}'))
76fa4acc2aSYann Gautier	$(eval ENTRY = 0x$(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}'))
77fa4acc2aSYann Gautierelse
789f72f5eaSYann Gautier	$(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep '^RAM' | awk '{print $$2}'))
79a430382fSYann Gautier	$(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}'))
80fa4acc2aSYann Gautierendif
817c4e1eeaSChris Kay	$(q)${STM32IMAGE} -s $< -d $@ \
82a430382fSYann Gautier		-l $(LOADADDR) -e ${ENTRY} \
83a430382fSYann Gautier		-v ${STM32_TF_VERSION} \
84a430382fSYann Gautier		-m ${STM32_HEADER_VERSION_MAJOR} \
85a430382fSYann Gautier		-n ${STM32_HEADER_VERSION_MINOR} \
86a430382fSYann Gautier		-b ${STM32_HEADER_BL2_BINARY_TYPE}
877c4e1eeaSChris Kay	$(s)echo
88