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