1*a430382fSYann Gautier# 2*a430382fSYann Gautier# Copyright (c) 2023, STMicroelectronics - All Rights Reserved 3*a430382fSYann Gautier# 4*a430382fSYann Gautier# SPDX-License-Identifier: BSD-3-Clause 5*a430382fSYann Gautier# 6*a430382fSYann Gautier 7*a430382fSYann Gautier# Compilation rules 8*a430382fSYann Gautier.PHONY: check_dtc_version stm32image clean_stm32image check_boot_device 9*a430382fSYann Gautier.SUFFIXES: 10*a430382fSYann Gautier 11*a430382fSYann Gautierall: check_dtc_version stm32image ${STM32_TF_STM32} 12*a430382fSYann Gautier 13*a430382fSYann Gautierdistclean realclean clean: clean_stm32image 14*a430382fSYann Gautier 15*a430382fSYann Gautierbl2: check_boot_device 16*a430382fSYann Gautier 17*a430382fSYann Gautiercheck_boot_device: 18*a430382fSYann Gautier @if [ ${STM32MP_EMMC} != 1 ] && \ 19*a430382fSYann Gautier [ ${STM32MP_SDMMC} != 1 ] && \ 20*a430382fSYann Gautier [ ${STM32MP_RAW_NAND} != 1 ] && \ 21*a430382fSYann Gautier [ ${STM32MP_SPI_NAND} != 1 ] && \ 22*a430382fSYann Gautier [ ${STM32MP_SPI_NOR} != 1 ] && \ 23*a430382fSYann Gautier [ ${STM32MP_UART_PROGRAMMER} != 1 ] && \ 24*a430382fSYann Gautier [ ${STM32MP_USB_PROGRAMMER} != 1 ]; then \ 25*a430382fSYann Gautier echo "No boot device driver is enabled"; \ 26*a430382fSYann Gautier false; \ 27*a430382fSYann Gautier fi 28*a430382fSYann Gautier 29*a430382fSYann Gautierstm32image: ${STM32IMAGE} 30*a430382fSYann Gautier 31*a430382fSYann Gautier${STM32IMAGE}: ${STM32IMAGE_SRC} 32*a430382fSYann Gautier ${Q}${MAKE} CPPFLAGS="" --no-print-directory -C ${STM32IMAGEPATH} 33*a430382fSYann Gautier 34*a430382fSYann Gautierclean_stm32image: 35*a430382fSYann Gautier ${Q}${MAKE} --no-print-directory -C ${STM32IMAGEPATH} clean 36*a430382fSYann Gautier 37*a430382fSYann Gautiercheck_dtc_version: 38*a430382fSYann Gautier @if [ ${DTC_VERSION} -lt 10404 ]; then \ 39*a430382fSYann Gautier echo "dtc version too old (${DTC_V}), you need at least version 1.4.4"; \ 40*a430382fSYann Gautier false; \ 41*a430382fSYann Gautier fi 42*a430382fSYann Gautier 43*a430382fSYann Gautier# Create DTB file for BL2 44*a430382fSYann Gautier${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | ${BUILD_PLAT} fdt_dirs 45*a430382fSYann Gautier @echo '#include "$(patsubst fdts/%,%,$<)"' > $@ 46*a430382fSYann Gautier @echo '#include "${BL2_DTSI}"' >> $@ 47*a430382fSYann Gautier 48*a430382fSYann Gautier${BUILD_PLAT}/fdts/%-bl2.dtb: ${BUILD_PLAT}/fdts/%-bl2.dts 49*a430382fSYann Gautier 50*a430382fSYann Gautier${BUILD_PLAT}/$(PLAT)-%.o: ${BUILD_PLAT}/fdts/%-bl2.dtb $(STM32_BINARY_MAPPING) bl2 51*a430382fSYann Gautier @echo " AS $${PLAT}.S" 52*a430382fSYann Gautier ${Q}${AS} ${ASFLAGS} ${TF_CFLAGS} \ 53*a430382fSYann Gautier -DDTB_BIN_PATH=\"$<\" \ 54*a430382fSYann Gautier -c $(word 2,$^) -o $@ 55*a430382fSYann Gautier 56*a430382fSYann Gautier$(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2)) 57*a430382fSYann Gautier 58*a430382fSYann Gautiertf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE} 59*a430382fSYann Gautier @echo " LDS $<" 60*a430382fSYann Gautier ${Q}${LD} -o $@ ${STM32_TF_ELF_LDFLAGS} -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $< 61*a430382fSYann Gautier 62*a430382fSYann Gautiertf-a-%.bin: tf-a-%.elf 63*a430382fSYann Gautier ${Q}${OC} -O binary $< $@ 64*a430382fSYann Gautier @echo 65*a430382fSYann Gautier @echo "Built $@ successfully" 66*a430382fSYann Gautier @echo 67*a430382fSYann Gautier 68*a430382fSYann Gautiertf-a-%.stm32: tf-a-%.bin ${STM32_DEPS} 69*a430382fSYann Gautier @echo 70*a430382fSYann Gautier @echo "Generate $@" 71*a430382fSYann Gautier $(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep RAM | awk '{print $$2}')) 72*a430382fSYann Gautier $(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}')) 73*a430382fSYann Gautier ${Q}${STM32IMAGE} -s $< -d $@ \ 74*a430382fSYann Gautier -l $(LOADADDR) -e ${ENTRY} \ 75*a430382fSYann Gautier -v ${STM32_TF_VERSION} \ 76*a430382fSYann Gautier -m ${STM32_HEADER_VERSION_MAJOR} \ 77*a430382fSYann Gautier -n ${STM32_HEADER_VERSION_MINOR} \ 78*a430382fSYann Gautier -b ${STM32_HEADER_BL2_BINARY_TYPE} 79*a430382fSYann Gautier @echo 80