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="" BUILD_PLAT=$(abspath ${BUILD_PLAT}) --no-print-directory -C ${STM32IMAGEPATH} 32 33clean_stm32image: 34 $(q)${MAKE} BUILD_PLAT=$(abspath ${BUILD_PLAT}) --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 $@" 74ifeq ($($(ARCH)-ld-id),llvm-lld) 75 $(eval LOADADDR = 0x$(shell cat $(@:.stm32=.map) | grep '\.data$$' | awk '{print $$1}')) 76 $(eval ENTRY = 0x$(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}')) 77else 78 $(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep '^RAM' | awk '{print $$2}')) 79 $(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}')) 80endif 81 $(q)${STM32IMAGE} -s $< -d $@ \ 82 -l $(LOADADDR) -e ${ENTRY} \ 83 -v ${STM32_TF_VERSION} \ 84 -m ${STM32_HEADER_VERSION_MAJOR} \ 85 -n ${STM32_HEADER_VERSION_MINOR} \ 86 -b ${STM32_HEADER_BL2_BINARY_TYPE} 87 $(s)echo 88